Skip to content

Fix Helm OCI repository path format #2

Fix Helm OCI repository path format

Fix Helm OCI repository path format #2

Workflow file for this run

name: Publish Helm Chart
on:
push:
branches:
- main
workflow_dispatch:
env:
REGISTRY: ghcr.io
CHART_NAME: supabase
permissions:
contents: read
packages: write
jobs:
extract-version:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Extract version from Chart.yaml
id: version
run: |
VERSION=$(grep '^version:' charts/supabase/Chart.yaml | awk '{print $2}')
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Chart version: $VERSION"
package-and-publish:
needs: extract-version
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: 'v3.12.1'
- name: Verify chart directory exists
run: |
echo "Verifying chart directory..."
test -d "charts/supabase" && echo "✓ charts/supabase exists" || (echo "✗ charts/supabase MISSING" && exit 1)
- name: Package Helm chart
run: |
VERSION=${{ needs.extract-version.outputs.version }}
# Create output directory
mkdir -p /tmp/charts
# Package the chart
echo "Packaging chart: ${{ env.CHART_NAME }} version $VERSION"
helm package charts/supabase --version "$VERSION" -d /tmp/charts
# List packaged chart
ls -la /tmp/charts/*.tgz
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push Helm chart to GHCR OCI
run: |
VERSION=${{ needs.extract-version.outputs.version }}
CHART_TGZ=$(ls /tmp/charts/*.tgz)
echo "Pushing chart: $(basename "$CHART_TGZ")"
# Push to GHCR OCI registry (format: oci://registry/owner/chart-name)
helm push "$CHART_TGZ" oci://${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.CHART_NAME }}
echo "✅ Published chart: ${{ env.CHART_NAME }}:$VERSION"
summary:
needs: [extract-version, package-and-publish]
runs-on: ubuntu-latest
if: always()
steps:
- name: Build Summary
run: |
VERSION=${{ needs.extract-version.outputs.version }}
echo "### Build Summary :rocket:" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- **Chart**: \`${{ env.CHART_NAME }}\`" >> $GITHUB_STEP_SUMMARY
echo "- **Version**: \`$VERSION\`" >> $GITHUB_STEP_SUMMARY
echo "- **Registry**: GitHub Container Registry (GHCR)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "#### Published Helm Chart:" >> $GITHUB_STEP_SUMMARY
echo "- \`oci://${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.CHART_NAME }}:$VERSION\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Usage" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Add and use the Helm chart from OCI registry:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
echo "helm install my-supabase oci://${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.CHART_NAME }} --version $VERSION" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Or update your HelmRelease resource:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`yaml" >> $GITHUB_STEP_SUMMARY
echo "spec:" >> $GITHUB_STEP_SUMMARY
echo " chart:" >> $GITHUB_STEP_SUMMARY
echo " spec:" >> $GITHUB_STEP_SUMMARY
echo " chart: ${{ env.CHART_NAME }}" >> $GITHUB_STEP_SUMMARY
echo " sourceRef:" >> $GITHUB_STEP_SUMMARY
echo " name: supabase" >> $GITHUB_STEP_SUMMARY
echo " namespace: flux-system" >> $GITHUB_STEP_SUMMARY
echo " version: $VERSION" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY