diff --git a/.gitea/workflows/helm-release.yaml b/.gitea/workflows/helm-release.yaml new file mode 100644 index 0000000..41d5820 --- /dev/null +++ b/.gitea/workflows/helm-release.yaml @@ -0,0 +1,97 @@ +# .gitea/workflows/helm-release.yaml +name: Helm Chart Release + +on: + push: + branches: + - main + paths: + - 'phpfpm/**' + - 'phpmyadmin/**' + - 'wordpress/**' + - '!**.md' + +env: + REGISTRY_URL: https://git.cafepieters.com + OWNER: helmchart + +jobs: + release-charts: + runs-on: ubuntu-latest + steps: + - name: Checkout + run: | + git clone --depth 1 $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git . + git fetch --depth 1 + + - name: Install Helm + run: | + curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash + helm version + + - name: Package and Publish phpfpm + if: github.event_name == 'push' + run: | + if [ -d "phpfpm" ]; then + helm package phpfpm/ + CHART_FILE=$(ls phpfpm-*.tgz) + curl --fail-with-body -u "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_TOKEN }}" \ + -X POST \ + --upload-file "${CHART_FILE}" \ + "${REGISTRY_URL}/api/packages/${OWNER}/helm/api/charts" + rm -f "${CHART_FILE}" + fi + + - name: Package and Publish phpmyadmin + if: github.event_name == 'push' + run: | + if [ -d "phpmyadmin" ]; then + helm package phpmyadmin/ + CHART_FILE=$(ls phpmyadmin-*.tgz) + curl --fail-with-body -u "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_TOKEN }}" \ + -X POST \ + --upload-file "${CHART_FILE}" \ + "${REGISTRY_URL}/api/packages/${OWNER}/helm/api/charts" + rm -f "${CHART_FILE}" + fi + + - name: Package and Publish wordpress + if: github.event_name == 'push' + run: | + if [ -d "wordpress" ]; then + helm package wordpress/ + CHART_FILE=$(ls wordpress-*.tgz) + curl --fail-with-body -u "${{ secrets.REGISTRY_USER }}:${{ secrets.REGISTRY_TOKEN }}" \ + -X POST \ + --upload-file "${CHART_FILE}" \ + "${REGISTRY_URL}/api/packages/${OWNER}/helm/api/charts" + rm -f "${CHART_FILE}" + fi + + - name: Generate charts directory + run: | + mkdir -p charts + [ -d "phpfpm" ] && helm package phpfpm/ -d charts/ + [ -d "phpmyadmin" ] && helm package phpmyadmin/ -d charts/ + [ -d "wordpress" ] && helm package wordpress/ -d charts/ + + - name: Generate index.yaml + run: | + helm repo index charts/ --url https://git.cafepieters.com/api/packages/${OWNER}/helm/charts/ + + - name: Commit and push index.yaml + run: | + cp charts/index.yaml ./index.yaml + git config user.name "Gitea Actions" + git config user.email "actions@gitea.com" + git add index.yaml + git commit -m "chore: update helm index [skip ci]" || exit 0 + git push + + - name: Notify Success + if: success() + run: echo "✅ All Helm charts published successfully!" + + - name: Notify Failure + if: failure() + run: echo "❌ Failed to publish Helm charts" \ No newline at end of file