Add cluster tagging and domain filtering features in README and config #28
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Helm Chart Release | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - 'charts/homer-operator/Chart.yaml' | |
| - 'charts/homer-operator/values.yaml' | |
| - 'charts/homer-operator/templates/**' | |
| - '.github/workflows/helm-release.yml' | |
| tags: | |
| - 'v*.*.*' | |
| env: | |
| REGISTRY: ghcr.io | |
| IMAGE_NAME: ${{ github.repository }} | |
| jobs: | |
| publish: | |
| name: Publish Helm Chart | |
| runs-on: ubuntu-latest | |
| # Only run on direct pushes, not PRs | |
| if: github.event_name == 'push' | |
| permissions: | |
| contents: read | |
| packages: write | |
| id-token: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up Helm | |
| uses: azure/setup-helm@v4 | |
| with: | |
| version: v3.17.0 | |
| - name: Validate chart | |
| run: | | |
| # Use helm lint instead of ct lint to avoid complex ct configuration | |
| helm lint charts/homer-operator | |
| # Verify template rendering | |
| helm template test charts/homer-operator --dry-run > /dev/null | |
| echo "Chart validation passed" | |
| - name: Log in to GHCR | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ${{ env.REGISTRY }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Extract version | |
| id: meta | |
| run: | | |
| if [[ $GITHUB_REF == refs/tags/* ]]; then | |
| # Extract version from tag (remove 'v' prefix) | |
| TAG_VERSION=${GITHUB_REF#refs/tags/v} | |
| echo "version=$TAG_VERSION" >> $GITHUB_OUTPUT | |
| echo "chart_version=$TAG_VERSION" >> $GITHUB_OUTPUT | |
| echo "is_release=true" >> $GITHUB_OUTPUT | |
| echo "Using tag version: $TAG_VERSION" | |
| else | |
| # For main branch, use a dev version | |
| echo "version=0.0.0-latest" >> $GITHUB_OUTPUT | |
| echo "chart_version=0.0.0-latest" >> $GITHUB_OUTPUT | |
| echo "is_release=false" >> $GITHUB_OUTPUT | |
| echo "Using development version: 0.0.0-latest" | |
| fi | |
| - name: Update Chart versions | |
| run: | | |
| VERSION="${{ steps.meta.outputs.version }}" | |
| if [[ $GITHUB_REF == refs/tags/* ]]; then | |
| # For tags, update both version and appVersion | |
| sed -i "s/version: .*/version: $VERSION/" charts/homer-operator/Chart.yaml | |
| sed -i "s/appVersion: .*/appVersion: \"$VERSION\"/" charts/homer-operator/Chart.yaml | |
| else | |
| # For main branch, only update version (keep appVersion as 'latest') | |
| sed -i "s/version: .*/version: $VERSION/" charts/homer-operator/Chart.yaml | |
| sed -i "s/appVersion: .*/appVersion: \"latest\"/" charts/homer-operator/Chart.yaml | |
| fi | |
| echo "Updated chart version to: $VERSION" | |
| - name: Package and Push Helm Chart | |
| run: | | |
| CHART_VERSION="${{ steps.meta.outputs.version }}" | |
| REPO_NAME=$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]') | |
| # Package the chart | |
| if ! helm package charts/homer-operator --destination ./packaged-charts; then | |
| echo "Failed to package Helm chart" | |
| exit 1 | |
| fi | |
| # Verify package was created | |
| if [[ ! -f "./packaged-charts/homer-operator-${CHART_VERSION}.tgz" ]]; then | |
| echo "Package file not found: homer-operator-${CHART_VERSION}.tgz" | |
| exit 1 | |
| fi | |
| # Push to GHCR | |
| if ! helm push "./packaged-charts/homer-operator-${CHART_VERSION}.tgz" "oci://${{ env.REGISTRY }}/${REPO_NAME}/charts"; then | |
| echo "Failed to push Helm chart to registry" | |
| exit 1 | |
| fi | |
| echo "Chart successfully pushed to: oci://${{ env.REGISTRY }}/${REPO_NAME}/charts/homer-operator:${CHART_VERSION}" | |
| - name: Generate summary | |
| run: | | |
| CHART_VERSION="${{ steps.meta.outputs.version }}" | |
| REPO_NAME=$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]') | |
| IS_RELEASE="${{ steps.meta.outputs.is_release }}" | |
| if [[ $IS_RELEASE == "true" ]]; then | |
| echo "## Helm Chart Released" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Chart Version:** \`$CHART_VERSION\`" >> $GITHUB_STEP_SUMMARY | |
| echo "**Registry:** \`${{ env.REGISTRY }}/${REPO_NAME}/charts\`" >> $GITHUB_STEP_SUMMARY | |
| echo "**Tag:** \`${GITHUB_REF#refs/tags/}\`" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "### Installation" >> $GITHUB_STEP_SUMMARY | |
| echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY | |
| echo "helm install homer-operator oci://${{ env.REGISTRY }}/${REPO_NAME}/charts/homer-operator --version $CHART_VERSION" >> $GITHUB_STEP_SUMMARY | |
| echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Stable release suitable for production use.**" >> $GITHUB_STEP_SUMMARY | |
| else | |
| echo "## Helm Chart Development Build" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Chart Version:** \`$CHART_VERSION\`" >> $GITHUB_STEP_SUMMARY | |
| echo "**Registry:** \`${{ env.REGISTRY }}/${REPO_NAME}/charts\`" >> $GITHUB_STEP_SUMMARY | |
| echo "**Branch:** \`${GITHUB_REF#refs/heads/}\`" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "### Installation (Development)" >> $GITHUB_STEP_SUMMARY | |
| echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY | |
| echo "helm install homer-operator oci://${{ env.REGISTRY }}/${REPO_NAME}/charts/homer-operator --version $CHART_VERSION" >> $GITHUB_STEP_SUMMARY | |
| echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Development build from main branch - not for production use.**" >> $GITHUB_STEP_SUMMARY | |
| fi |