helm / chart-releaser-action

A GitHub Action to turn a GitHub project into a self-hosted Helm chart repo, using helm/chart-releaser CLI tool
https://github.com/helm/chart-releaser
Apache License 2.0
539 stars 199 forks source link

Question: Only create helm chart and publish it without creating a release? #168

Open derTobsch opened 8 months ago

derTobsch commented 8 months ago

Is there a way to only upload the helm chart to GitHub Pages without creating a release and a tag?

sillock1 commented 5 months ago

Is there an answer to this question?

hegerdes commented 3 months ago

Since chart releaser did not get any relevant updates and is missing some functions like what you want to do, I gave up on chart releaser.

I have a pipeline for a mono repo with charts, dockerfiles and application. The below builds my charts uploads them as a artifact to GA-Actions. It updates the index.ymal in gh-pages. It !!DOES NOT!! upload the chart tgz file to a release. You still have to upload those pipeline artifacts to the release yourself. I do that with the goreleaser by setting release.extra_files[0].glob: ./charts/*.tgz

  chart-release:
    runs-on: ubuntu-latest
    env:
      CHART_BASE_DIR: charts
      GH_PAGES_BRANCH: gh-pages
    permissions:
      contents: write
      pages: write

      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set ENVs
        id: env-setup
        run: |
          echo "SHA_SHORT=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
          echo "CHART_VERSION=$(echo ${{ github.ref_name }} | sed 's/^v//')" >> $GITHUB_OUTPUT
          git config user.name "$GITHUB_ACTOR"
          git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
      - name: Package Charts
        run: |
          # Package charts
          mkdir -p charts/.ci-build
          echo "Setting chart version to ${{ steps.env-setup.outputs.CHART_VERSION }}"

          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 --version ${{ steps.env-setup.outputs.CHART_VERSION }} --destination charts/.ci-build
            fi
          done
          git fetch --all

      - name: Upload chart artifacts
        uses: actions/upload-artifact@v4
        with:
          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 commit -a -m "bot: update pages index for helm charts"
          git push origin $GH_PAGES_BRANCH