name: Helm Release on: release: types: [published] branches: - main - nightly push: branches: - nightly - main paths: - "functions/kubernetes/charts/**" workflow_dispatch: permissions: contents: read packages: write jobs: main: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Helm uses: azure/setup-helm@v4 with: version: v3.18.4 # I run it locally so I know it works :b - name: Verify Helm run: helm version - name: Set versions run: | if [[ ${{ github.event_name }} == 'release' ]]; then TAG_NAME="${{ github.event.release.tag_name }}" # Remove the v prefix VERSION=${TAG_NAME#v} APP_VERSION="${VERSION}" CHART_VERSION="${VERSION}" else APP_VERSION="latest" CHART_VERSION="2.2.0" fi echo "APP_VERSION set to ${APP_VERSION}" echo "CHART_VERSION set to ${CHART_VERSION}. Validating..." # https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string SEMVER_REGEX="^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$" if echo "${CHART_VERSION}" | grep -Pq "${SEMVER_REGEX}"; then echo "${CHART_VERSION} is a valid SemVer string"; else echo "${CHART_VERSION} is an invalid SemVer string"; exit 1; fi echo "CHART_VERSION=${CHART_VERSION}" >> "$GITHUB_ENV" echo "APP_VERSION=${APP_VERSION}" >> "$GITHUB_ENV" - name: Update helm dependencies run: helm dependency update ./functions/kubernetes/charts/shuffle - name: Package Helm chart run: helm package ./functions/kubernetes/charts/shuffle --version "${CHART_VERSION}" --app-version="${APP_VERSION}" --destination ./functions/kubernetes/charts - name: Login to OCI registry (ghcr.io) run: helm registry login ghcr.io --username ${{ github.actor }} --password ${{ secrets.GITHUB_TOKEN }} - name: Push helm chart run: helm push ./functions/kubernetes/charts/shuffle-*.tgz oci://ghcr.io/shuffle/charts