From 0219fe8aade8d300d6a18e90adfd9a799f91ff6e Mon Sep 17 00:00:00 2001 From: M Essam Hamed Date: Thu, 30 Jan 2025 00:04:35 +0200 Subject: [PATCH] Fix release workflows - Check for dirty repository in release - Fix helm release workflow name - Rename dist dir to manifests as dist is used by goreleaser --- .github/workflows/docker.yml | 5 +++ .github/workflows/helm.yml | 60 ++++++++++++++++++++++++-------- Makefile | 4 +-- README.md | 4 +-- {dist => manifests}/install.yaml | 45 ++++++++++++++++++++++-- 5 files changed, 97 insertions(+), 21 deletions(-) rename {dist => manifests}/install.yaml (89%) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 35b157e..38a3846 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -39,6 +39,11 @@ jobs: with: fetch-depth: 0 # It is required for GoReleaser to work properly + - name: Install modules + run: go mod tidy + + - name: check git status + run: git --no-pager diff --exit-code # Set up BuildKit Docker container builder to be able to build # multi-platform images and export cache # https://github.com/docker/setup-buildx-action diff --git a/.github/workflows/helm.yml b/.github/workflows/helm.yml index 7d412ab..2abd123 100644 --- a/.github/workflows/helm.yml +++ b/.github/workflows/helm.yml @@ -1,4 +1,4 @@ -name: Release Helm Chart and Carvel package +name: Release Helm Chart on: push: @@ -9,28 +9,58 @@ on: - main jobs: - release: + chart-release: runs-on: ubuntu-latest + env: + CHART_BASE_DIR: helm + GH_PAGES_BRANCH: gh-pages + permissions: + contents: write + pages: write steps: - - name: Checkout - uses: actions/checkout@v3.1.0 + - name: Checkout repository + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Configure Git + - name: Set ENVs + id: env-setup run: | + echo "SHA_SHORT=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT git config user.name "$GITHUB_ACTOR" git config user.email "$GITHUB_ACTOR@users.noreply.github.com" - - name: Install Helm - uses: azure/setup-helm@v3.4 - with: - version: v3.4.2 + - name: Package Charts + run: | + # Package charts + mkdir -p charts/.ci-build + echo "Setting chart version to ${{ steps.env-setup.outputs.CHART_VERSION }}" - - name: Run chart-releaser - uses: helm/chart-releaser-action@v1.4.1 + for DIR in $CHART_BASE_DIR/*; do + # Check if Chart.yaml exists in this directory + if [ -f "${DIR}/Chart.yaml" ]; then + echo "Packaging ${DIR}" + helm dependency update $DIR + helm lint $DIR + helm package $DIR --destination charts/.ci-build + fi + done + git fetch --all + + - name: Upload chart artifacts + uses: actions/upload-artifact@v4 with: - charts_dir: helm - env: - CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - CR_RELEASE_NAME_TEMPLATE: "helm-v{{ .Version }}" + name: helm-charts-${{ github.ref_name }} + path: charts/.ci-build/* + retention-days: 30 + + - name: Publish to GH-Pages + id: ghpublish + run: | + git checkout $GH_PAGES_BRANCH --force + helm repo index charts/.ci-build/ --merge index.yaml --url ${{ github.server_url }}/${{github.repository}}/releases/download/${{ github.ref_name }} + cp charts/.ci-build/index.yaml index.yaml + echo "New index:" && cat index.yaml + git add index.yaml charts + git commit -a -m "bot: update pages index for helm charts" + git push origin $GH_PAGES_BRANCH \ No newline at end of file diff --git a/Makefile b/Makefile index 9f40397..3befce6 100644 --- a/Makefile +++ b/Makefile @@ -125,8 +125,8 @@ docker-buildx: ## Build and push docker image for the manager for cross-platform .PHONY: build-installer build-installer: manifests ## Generate a consolidated YAML with CRDs and deployment. - mkdir -p dist - $(HELM) template --include-crds netbird-operator helm/netbird-operator > dist/install.yaml + mkdir -p manifests + $(HELM) template --include-crds netbird-operator helm/netbird-operator > manifests/install.yaml ##@ Deployment diff --git a/README.md b/README.md index fc9f5c7..9fcd553 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ This operator enables easily provisioning NetBird access on kubernetes clusters, ```sh kubectl create namespace netbird -kubectl apply -n netbird -f https://github.com/netbirdio/kubernetes-operator/releases/latest/dist/install.yaml +kubectl apply -n netbird -f https://github.com/netbirdio/kubernetes-operator/releases/latest/manifests/install.yaml ``` **Using the Helm Chart** @@ -38,7 +38,7 @@ helm show values netbirdio/netbird-operator **Using install.yaml** ```sh -kubectl delete -n netbird -f https://github.com/netbirdio/kubernetes-operator/releases/latest/dist/install.yaml +kubectl delete -n netbird -f https://github.com/netbirdio/kubernetes-operator/releases/latest/manifests/install.yaml kubectl delete namespace netbird ``` diff --git a/dist/install.yaml b/manifests/install.yaml similarity index 89% rename from dist/install.yaml rename to manifests/install.yaml index 6b1698f..4f4b904 100644 --- a/dist/install.yaml +++ b/manifests/install.yaml @@ -75,8 +75,41 @@ spec: status: description: NBSetupKeyStatus defines the observed state of NBSetupKey. properties: - ready: - type: boolean + conditions: + items: + description: NBSetupKeyCondition defines a condition in NBSetupKey + status. + properties: + lastProbeTime: + description: Last time we probed the condition. + format: date-time + type: string + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: Human-readable message indicating details about + last transition. + type: string + reason: + description: Unique, one-word, CamelCase reason for the condition's + last transition. + type: string + status: + description: |- + Status is the status of the condition. + Can be True, False, Unknown. + type: string + type: + description: Type is the type of the condition. + type: string + required: + - status + - type + type: object + type: array type: object type: object served: true @@ -132,6 +165,14 @@ rules: - get - patch - update +- apiGroups: + - "" + resources: + - pods + verbs: + - get + - list + - watch - apiGroups: - "" resources: