name: Helm Chart Release on: push: tags: - 'v*.*.*' # Trigger on version tags like v1.0.0 workflow_dispatch: inputs: version: description: 'Chart version to release (e.g., 1.0.1)' required: true type: string jobs: release-helm: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install Helm uses: azure/setup-helm@v3 with: version: 'latest' - name: Determine version id: version run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then VERSION="${{ github.event.inputs.version }}" else # Extract version from tag (remove 'v' prefix) VERSION=${GITHUB_REF#refs/tags/v} fi echo "VERSION=${VERSION}" >> $GITHUB_OUTPUT echo "📌 Chart version: ${VERSION}" - name: Update Chart version run: | # Update Chart.yaml with the new version sed -i "s/^version:.*/version: ${{ steps.version.outputs.VERSION }}/" helm/api7ee/Chart.yaml # Update appVersion to match sed -i "s/^appVersion:.*/appVersion: \"${{ steps.version.outputs.VERSION }}\"/" helm/api7ee/Chart.yaml # Update image tags in values.yaml to use this version sed -i "s|tag: \"main\"|tag: \"v${{ steps.version.outputs.VERSION }}\"|g" helm/api7ee/values.yaml # Update registry to Gitea URL sed -i "s|registry: gitea.server_url|registry: ${{ gitea.server_url }}|g" helm/api7ee/values.yaml echo "📝 Updated Chart.yaml and values.yaml with version ${{ steps.version.outputs.VERSION }}" - name: Lint Helm chart run: | helm lint helm/api7ee/ - name: Package Helm chart run: | helm package helm/api7ee/ --version ${{ steps.version.outputs.VERSION }} echo "CHART_FILE=api7ee-${{ steps.version.outputs.VERSION }}.tgz" >> $GITHUB_ENV # Generate chart README with installation instructions cat > CHART_README.md << EOF # API7 Enterprise Edition Helm Chart v${{ steps.version.outputs.VERSION }} ## Installation \`\`\`bash # Add the Helm repository helm repo add api7ee https://${{ gitea.server_url }}/api/packages/${{ gitea.repository_owner }}/helm helm repo update # Install the chart helm install my-api7ee api7ee/api7ee --version ${{ steps.version.outputs.VERSION }} # Install with custom values helm install my-api7ee api7ee/api7ee --version ${{ steps.version.outputs.VERSION }} -f values.yaml \`\`\` ## Upgrade \`\`\`bash helm upgrade my-api7ee api7ee/api7ee --version ${{ steps.version.outputs.VERSION }} \`\`\` ## Docker Images This chart uses the following Docker images: - Web: \`${{ gitea.server_url }}/${{ gitea.repository }}/web:v${{ steps.version.outputs.VERSION }}\` - API: \`${{ gitea.server_url }}/${{ gitea.repository }}/api:v${{ steps.version.outputs.VERSION }}\` EOF - name: Push Helm chart to Gitea Package Registry run: | # Upload versioned Helm chart curl --fail-with-body \ -H "Authorization: token ${{ secrets.PACKAGES_PUSH_TOKEN }}" \ -X POST \ -F "chart=@${CHART_FILE}" \ https://${{ gitea.server_url }}/api/packages/${{ gitea.repository_owner }}/helm/api/charts echo "✅ Helm chart v${{ steps.version.outputs.VERSION }} pushed to Gitea Package Registry" - name: Create Release uses: softprops/action-gh-release@v1 if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') with: files: | ${{ env.CHART_FILE }} CHART_README.md generate_release_notes: true body: | ## Helm Chart Release v${{ steps.version.outputs.VERSION }} ### Installation ```bash helm repo add api7ee https://${{ gitea.server_url }}/api/packages/${{ gitea.repository_owner }}/helm helm repo update helm install my-api7ee api7ee/api7ee --version ${{ steps.version.outputs.VERSION }} ``` ### Docker Images - Web: `${{ gitea.server_url }}/${{ gitea.repository }}/web:v${{ steps.version.outputs.VERSION }}` - API: `${{ gitea.server_url }}/${{ gitea.repository }}/api:v${{ steps.version.outputs.VERSION }}` ### Changes See the full changelog below. env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Summary run: | echo "## 🎉 Helm Chart Release Summary" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "- **Version:** v${{ steps.version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY echo "- **Chart:** ${CHART_FILE}" >> $GITHUB_STEP_SUMMARY echo "- **Registry:** https://${{ gitea.server_url }}/api/packages/${{ gitea.repository_owner }}/helm" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "### Installation Commands" >> $GITHUB_STEP_SUMMARY echo '```bash' >> $GITHUB_STEP_SUMMARY echo "helm repo add api7ee https://${{ gitea.server_url }}/api/packages/${{ gitea.repository_owner }}/helm" >> $GITHUB_STEP_SUMMARY echo "helm repo update" >> $GITHUB_STEP_SUMMARY echo "helm install my-api7ee api7ee/api7ee --version ${{ steps.version.outputs.VERSION }}" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY