Skip to content

Commit 570876d

Browse files
committed
Add GitHub Actions workflow to publish Helm chart to GHCR
1 parent cc4ee2b commit 570876d

File tree

1 file changed

+127
-0
lines changed

1 file changed

+127
-0
lines changed

.github/workflows/publish.yaml

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
name: Publish Helm Chart
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
workflow_dispatch:
8+
9+
env:
10+
REGISTRY: ghcr.io
11+
CHART_NAME: supabase
12+
13+
permissions:
14+
contents: read
15+
packages: write
16+
17+
jobs:
18+
extract-version:
19+
runs-on: ubuntu-latest
20+
outputs:
21+
version: ${{ steps.version.outputs.version }}
22+
steps:
23+
- name: Checkout code
24+
uses: actions/checkout@v4
25+
26+
- name: Extract version from Chart.yaml
27+
id: version
28+
run: |
29+
VERSION=$(grep '^version:' charts/supabase/Chart.yaml | awk '{print $2}')
30+
echo "version=$VERSION" >> $GITHUB_OUTPUT
31+
echo "Chart version: $VERSION"
32+
33+
package-and-publish:
34+
needs: extract-version
35+
runs-on: ubuntu-latest
36+
steps:
37+
- name: Checkout code
38+
uses: actions/checkout@v4
39+
40+
- name: Set up Helm
41+
uses: azure/setup-helm@v4
42+
with:
43+
version: 'v3.12.1'
44+
45+
- name: Verify chart directory exists
46+
run: |
47+
echo "Verifying chart directory..."
48+
test -d "charts/supabase" && echo "✓ charts/supabase exists" || (echo "✗ charts/supabase MISSING" && exit 1)
49+
50+
- name: Package Helm chart
51+
run: |
52+
VERSION=${{ needs.extract-version.outputs.version }}
53+
54+
# Create output directory
55+
mkdir -p /tmp/charts
56+
57+
# Package the chart
58+
echo "Packaging chart: ${{ env.CHART_NAME }} version $VERSION"
59+
helm package charts/supabase --version "$VERSION" -d /tmp/charts
60+
61+
# List packaged chart
62+
ls -la /tmp/charts/*.tgz
63+
64+
- name: Log in to GitHub Container Registry
65+
uses: docker/login-action@v3
66+
with:
67+
registry: ${{ env.REGISTRY }}
68+
username: ${{ github.actor }}
69+
password: ${{ secrets.GITHUB_TOKEN }}
70+
71+
- name: Push Helm chart to GHCR OCI
72+
run: |
73+
VERSION=${{ needs.extract-version.outputs.version }}
74+
CHART_TGZ=$(ls /tmp/charts/*.tgz)
75+
76+
echo "Pushing chart: $(basename "$CHART_TGZ")"
77+
78+
# Push to GHCR OCI registry
79+
helm push "$CHART_TGZ" oci://${{ env.REGISTRY }}/${{ github.repository_owner }}/helm-charts
80+
81+
echo "✅ Published chart: ${{ env.CHART_NAME }}:$VERSION"
82+
83+
summary:
84+
needs: [extract-version, package-and-publish]
85+
runs-on: ubuntu-latest
86+
if: always()
87+
steps:
88+
- name: Build Summary
89+
run: |
90+
VERSION=${{ needs.extract-version.outputs.version }}
91+
92+
echo "### Build Summary :rocket:" >> $GITHUB_STEP_SUMMARY
93+
echo "" >> $GITHUB_STEP_SUMMARY
94+
echo "- **Chart**: \`${{ env.CHART_NAME }}\`" >> $GITHUB_STEP_SUMMARY
95+
echo "- **Version**: \`$VERSION\`" >> $GITHUB_STEP_SUMMARY
96+
echo "- **Registry**: GitHub Container Registry (GHCR)" >> $GITHUB_STEP_SUMMARY
97+
echo "" >> $GITHUB_STEP_SUMMARY
98+
99+
echo "#### Published Helm Chart:" >> $GITHUB_STEP_SUMMARY
100+
echo "- \`oci://${{ env.REGISTRY }}/${{ github.repository_owner }}/helm-charts/${{ env.CHART_NAME }}:$VERSION\`" >> $GITHUB_STEP_SUMMARY
101+
echo "" >> $GITHUB_STEP_SUMMARY
102+
103+
echo "### Usage" >> $GITHUB_STEP_SUMMARY
104+
echo "" >> $GITHUB_STEP_SUMMARY
105+
echo "Add the Helm repository:" >> $GITHUB_STEP_SUMMARY
106+
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
107+
echo "helm repo add supabase oci://${{ env.REGISTRY }}/${{ github.repository_owner }}/helm-charts" >> $GITHUB_STEP_SUMMARY
108+
echo "helm repo update" >> $GITHUB_STEP_SUMMARY
109+
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
110+
echo "" >> $GITHUB_STEP_SUMMARY
111+
echo "Install the chart:" >> $GITHUB_STEP_SUMMARY
112+
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
113+
echo "helm install my-supabase supabase/supabase --version $VERSION" >> $GITHUB_STEP_SUMMARY
114+
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
115+
echo "" >> $GITHUB_STEP_SUMMARY
116+
117+
echo "Or update your HelmRelease resource:" >> $GITHUB_STEP_SUMMARY
118+
echo "\`\`\`yaml" >> $GITHUB_STEP_SUMMARY
119+
echo "spec:" >> $GITHUB_STEP_SUMMARY
120+
echo " chart:" >> $GITHUB_STEP_SUMMARY
121+
echo " spec:" >> $GITHUB_STEP_SUMMARY
122+
echo " chart: ${{ env.CHART_NAME }}" >> $GITHUB_STEP_SUMMARY
123+
echo " sourceRef:" >> $GITHUB_STEP_SUMMARY
124+
echo " name: supabase" >> $GITHUB_STEP_SUMMARY
125+
echo " namespace: flux-system" >> $GITHUB_STEP_SUMMARY
126+
echo " version: $VERSION" >> $GITHUB_STEP_SUMMARY
127+
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY

0 commit comments

Comments
 (0)