name: Release Helm Chart (WIP) on: push: branches: - main paths: - 'charts/**' tags: - 'v*' workflow_dispatch: jobs: release: if: github.repository == 'we-promise/sure' runs-on: ubuntu-latest permissions: contents: write pages: write steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Configure Git env: GIT_USER_NAME: ${{ github.actor }} GIT_USER_EMAIL: ${{ github.actor }}@users.noreply.github.com run: | git config user.name "$GIT_USER_NAME" git config user.email "$GIT_USER_EMAIL" - name: Install Helm uses: azure/setup-helm@v3 - name: Generate nightly version id: version run: | # Generate version like: 0.0.0-nightly.20251213.173045 if [[ "${GITHUB_REF_TYPE}" == "tag" && "${GITHUB_REF_NAME}" == v* ]]; then VERSION="${GITHUB_REF_NAME#v}" else BASE_VERSION="$(git tag -l 'v*' | sed 's/^v//' | sort -V | tail -n 1)" if [[ -z "${BASE_VERSION}" ]]; then BASE_VERSION="0.0.0" fi VERSION="${BASE_VERSION}-nightly.$(date -u +'%Y%m%d.%H%M%S')" fi echo "version=$VERSION" >> $GITHUB_OUTPUT echo "Generated version: $VERSION" - name: Update Chart.yaml version run: | sed -i "s/^version:.*/version: ${{ steps.version.outputs.version }}/" charts/sure/Chart.yaml sed -i "s/^appVersion:.*/appVersion: \"${{ steps.version.outputs.version }}\"/" charts/sure/Chart.yaml cat charts/sure/Chart.yaml - name: Add Helm repositories run: | helm repo add cloudnative-pg https://cloudnative-pg.github.io/charts helm repo add ot-helm https://ot-container-kit.github.io/helm-charts helm repo update - name: Build dependencies run: | helm dependency build charts/sure - name: Package chart run: | mkdir -p .cr-release-packages helm package charts/sure -d .cr-release-packages - name: Checkout gh-pages uses: actions/checkout@v4 with: ref: gh-pages path: gh-pages - name: Update index and push env: GIT_USER_NAME: ${{ github.actor }} GIT_USER_EMAIL: ${{ github.actor }}@users.noreply.github.com run: | # Copy packaged chart cp .cr-release-packages/*.tgz gh-pages/ # Update index helm repo index gh-pages --url https://we-promise.github.io/sure --merge gh-pages/index.yaml # Push to gh-pages git config --global credential.helper cache cd gh-pages git config user.name "$GIT_USER_NAME" git config user.email "$GIT_USER_EMAIL" git add . if git diff --cached --quiet; then echo "No Helm chart updates to publish." exit 0 fi if [[ "${GITHUB_REF_TYPE}" == "tag" && "${GITHUB_REF_NAME}" == v* ]]; then git commit -m "Release chart for ${{ github.ref_name }}" else git commit -m "Release nightly: ${{ steps.version.outputs.version }}" fi git push - name: Upload chart to GitHub Release if: startsWith(github.ref, 'refs/tags/v') uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} files: .cr-release-packages/*.tgz