name: release-charts-generic-device-plugin on: push: branches: - main paths: - "charts/generic-device-plugin/**" workflow_dispatch: env: WORKFLOW_DIR: "charts/generic-device-plugin" jobs: release: runs-on: ubuntu-js steps: - name: Checkout uses: actions/checkout@v6 - name: Set up Helm uses: azure/setup-helm@v4 with: token: ${{ secrets.GITEA_TOKEN }} version: v3.19.2 - name: Add Repositories run: | cd ${WORKFLOW_DIR} echo ">> Adding repositories for chart dependencies ..." helm dependency list --max-col-width 120 2> /dev/null \ | tail +2 | head -n -1 \ | awk '{ print "helm repo add " $1 " " $3 }' \ | while read cmd; do echo "$cmd" | sh; done || true if helm repo list | tail +2 | read -r; then echo ">> Update repository cache ..." helm repo update fi echo "----" - name: Package Helm Chart run: | cd ${WORKFLOW_DIR} echo ">> Building helm dependency ..." helm dependency build --skip-refresh --debug echo "----" echo "PACKAGE_PATH=$(helm package . | awk '{print $NF}')" >> $GITEA_ENV - name: Publish Helm Chart to Harbor run: | echo ">> Logging into Harbor ..." helm registry login ${{ vars.REGISTRY_HOST }} -u ${{ vars.REGISTRY_USER }} -p ${{ secrets.REGISTRY_SECRET }} --debug echo "" echo ">> Publishing chart to Harbor ..." helm push ${{ env.PACKAGE_PATH }} oci://${{ vars.REGISTRY_HOST }}/helm-charts --debug echo "----" - name: Publish Helm Chart to Gitea run: | echo ">> Installing Chart Museum plugin ..." helm plugin install https://github.com/chartmuseum/helm-push --debug echo "" echo ">> Adding Gitea repository ..." helm repo add --username ${{ gitea.actor }} --password ${{ secrets.REPOSITORY_TOKEN }} helm-charts https://${{ vars.REPOSITORY_HOST }}/api/packages/alexlebens/helm --debug echo "" echo ">> Pushing chart to gitea" helm cm-push ${{ env.PACKAGE_PATH }} helm-charts --debug - name: Extract Chart Metadata run: | cd ${WORKFLOW_DIR} echo ">> Adding Chart metadata to workflow ENV ..." echo "" echo ">> Chart Version: $(yq '.version' Chart.yaml)" echo ">> Chart Name: $(yq '.name' Chart.yaml)" echo "----" echo "CHART_VERSION=$(yq '.version' Chart.yaml)" >> $GITEA_ENV echo "CHART_NAME=$(yq '.name' Chart.yaml)" >> $GITEA_ENV - name: Release Helm Chart uses: akkuman/gitea-release-action@v1 with: name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }} tag_name: ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }} files: |- ${{ env.PACKAGE_PATH }} - name: ntfy Success uses: niniyas/ntfy-action@master if: success() with: url: '${{ secrets.NTFY_URL }}' topic: '${{ secrets.NTFY_TOPIC }}' title: 'Release Success - ${{ env.CHART_NAME }}' priority: 3 headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}' tags: action,successfully,completed details: 'Helm Chart ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }} has been released!' icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png' - name: ntfy Failed uses: niniyas/ntfy-action@master if: failure() with: url: '${{ secrets.NTFY_URL }}' topic: '${{ secrets.NTFY_TOPIC }}' title: 'Release Failure - ${{ env.CHART_NAME }}' priority: 4 headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}' tags: action,failed details: 'Helm Chart ${{ env.CHART_NAME }}-${{ env.CHART_VERSION }} has failed to be released.' icon: 'https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png' actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/helm-charts/actions?workflow=release-charts-generic-device-plugin.yml", "clear": true}]' image: true