name: render-manifests on: push: branches: - main paths: - "clusters/**" - ! "clusters/*/archive" jobs: render-manifests-helm: runs-on: ubuntu-js permissions: contents: write pull-requests: write steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up Helm uses: azure/setup-helm@v4 with: token: ${{ secrets.GITEA_TOKEN }} version: latest - name: Render Helm Manifests env: CLUSTERS: cl01tl run: | for cluster in $CLUSTERS; do mkdir clusters/$CLUSTER/manifests for chart_path in clusters/$CLUSTER/helm/; do chart_name=$(basename "$chart") echo "--- Rendering chart: $chart_name ---" if [ -f "$chart_path/Chart.yaml" ]; then OUTPUT_FILE="clusters/$CLUSTER/manifests/$chart_name.yaml" helm template "$chart_name" "$chart" --namespace "$chart_name" > "$OUTPUT_FILE" echo "Manifests for $chart_name rendered to $OUTPUT_FILE" else echo "Directory $chart_path does not contain a Chart.yaml. Skipping ..." fi done done - name: Create Pull Request uses: peter-evans/create-pull-request@v7 with: token: ${{ secrets.GITEA_TOKEN }} commit-message: "chore: Update manifests after chart change" branch: auto/update-manifests base: manifests title: "Manifest Update: App Changes" body: | This PR contains the newly rendered Kubernetes manifests. * Triggered by workflow run ${{ github.run_id }} * Review the `files changed` tab for the full YAML diff. add-paths: "clusters/*/rendered-manifests/" - name: ntfy Success uses: niniyas/ntfy-action@master if: success() with: url: "${{ secrets.NTFY_URL }}" topic: "${{ secrets.NTFY_TOPIC }}" title: "Manifest Render Success - Infrastructure" priority: 3 headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}' tags: action,successfully,completed details: "Manifest rendering for Infrastructure has succeeded" 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: "Manifest Render Failure - Infrastructure" priority: 4 headers: '{"Authorization": "Bearer ${{ secrets.NTFY_CRED }}"}' tags: action,failed details: "Manifest rendering for Infrastructure has failed!" icon: "https://cdn.jsdelivr.net/gh/selfhst/icons/png/gitea.png" actions: '[{"action": "view", "label": "Open Gitea", "url": "https://gitea.alexlebens.dev/alexlebens/infrastructure/actions?workflow=render-manifests.yaml", "clear": true}]' image: true