From 26326862fc3bcfeb58ae245b4f97c3b07f9095ef Mon Sep 17 00:00:00 2001 From: Romain Pluciennik Date: Wed, 14 Aug 2024 00:11:47 +0200 Subject: [PATCH] feat(release): Configure ghcr releases (#4) --- .github/workflows/release.yaml | 80 +++++++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index b241317..e361ec9 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -8,12 +8,31 @@ on: paths: - charts/** +permissions: + contents: write + packages: write + pages: write + id-token: write + +concurrency: + group: release + cancel-in-progress: false + jobs: - release: - permissions: - contents: write + release-charts: + name: Release Charts runs-on: ubuntu-latest + env: + AUTHOR_USER: charts-bot + AUTHOR_EMAIL: 178334506+plcnk-charts-bot[bot]@users.noreply.github.com steps: + - name: Generate Token + id: app-token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.BOT_APP_ID }} + private-key: ${{ secrets.BOT_APP_PRIVATE_KEY }} + - name: Checkout uses: actions/checkout@v4 with: @@ -21,10 +40,57 @@ jobs: - name: Configure Git run: | - git config user.name "$GITHUB_ACTOR" - git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + git config user.name "${{ env.AUTHOR_USER }}" + git config user.email "${{ env.AUTHOR_EMAIL }}" - - name: Run chart-releaser + - name: Add Helm repos + run: | + helm repo add bitnami https://charts.bitnami.com/bitnami + helm repo add bjw-s https://bjw-s.github.io/helm-charts + + - name: Install chart-releaser uses: helm/chart-releaser-action@v1.6.0 + with: + install_only: true + + - name: Package charts + id: package_charts + run: | + changed_charts="" + for dir in charts/*; do + chart_name="$(basename "$dir")" + version="$(yq '.version' "$dir/Chart.yaml")" + if ! git rev-parse "$chart_name-${version#v}" &>/dev/null; then + echo "Packaging chart $chart_name..." + cr package --package-path=.cr-release-packages "$dir" + changed_charts+="$chart_name," + fi + done + echo "changed_charts=${changed_charts%,}" >> $GITHUB_OUTPUT + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + if: steps.package_charts.outputs.changed_charts != '' + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ github.token }} + + - name: Push charts to GHCR + if: steps.package_charts.outputs.changed_charts != '' + run: | + for pkg in .cr-release-packages/*; do + if [ -z "${pkg:-}" ]; then + break + fi + echo "Pushing $pkg..." + helm push "$pkg" "oci://ghcr.io/$GITHUB_REPOSITORY_OWNER/charts" + done + + - name: Publish charts + uses: helm/chart-releaser-action@v1.6.0 + if: steps.package_charts.outputs.changed_charts != '' + with: + skip_packaging: true env: - CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + CR_TOKEN: ${{ steps.app-token.outputs.token }}