|
18 | 18 | release: |
19 | 19 | name: Package and publish Helm chart |
20 | 20 | runs-on: ubuntu-latest |
| 21 | + permissions: |
| 22 | + contents: write |
| 23 | + env: |
| 24 | + CHART_VERSION: ${{ inputs.draft && format('{0}-draft', inputs.version) || inputs.version }} |
| 25 | + APP_VERSION: ${{ inputs.version }} |
21 | 26 | steps: |
22 | | - - name: Placeholder |
23 | | - run: echo "This is a scaffold. The full implementation is in PR #23." |
| 27 | + - name: Checkout repository |
| 28 | + uses: actions/checkout@v4 |
| 29 | + |
| 30 | + - name: Set up Helm |
| 31 | + uses: azure/setup-helm@v4 |
| 32 | + with: |
| 33 | + version: v3.14.4 |
| 34 | + |
| 35 | + - name: Set chart version and appVersion |
| 36 | + run: | |
| 37 | + set -euo pipefail |
| 38 | + sed -i "s/^version:.*/version: $CHART_VERSION/" chart/Chart.yaml |
| 39 | + sed -i "s/^appVersion:.*/appVersion: \"$APP_VERSION\"/" chart/Chart.yaml |
| 40 | + sed -i 's/^ version: .*/ version: "'"$APP_VERSION"'"/' chart/values.yaml |
| 41 | + echo "### Chart.yaml" >> $GITHUB_STEP_SUMMARY |
| 42 | + echo '```yaml' >> $GITHUB_STEP_SUMMARY |
| 43 | + cat chart/Chart.yaml >> $GITHUB_STEP_SUMMARY |
| 44 | + echo '```' >> $GITHUB_STEP_SUMMARY |
| 45 | +
|
| 46 | + - name: Lint chart |
| 47 | + run: helm lint chart |
| 48 | + |
| 49 | + - name: Package chart |
| 50 | + run: | |
| 51 | + set -euo pipefail |
| 52 | + pkg_output=$(helm package chart --version "$CHART_VERSION" --app-version "$APP_VERSION") |
| 53 | + echo "$pkg_output" |
| 54 | + chart_package=$(printf '%s\n' "$pkg_output" | awk '/Successfully packaged chart and saved it to:/ {print $NF}') |
| 55 | + echo "CHART_PACKAGE=$chart_package" >> "$GITHUB_ENV" |
| 56 | +
|
| 57 | + - name: Configure AWS credentials |
| 58 | + uses: aws-actions/configure-aws-credentials@v4 |
| 59 | + with: |
| 60 | + aws-access-key-id: ${{ secrets.ECR_ACCESS_KEY_ID }} |
| 61 | + aws-secret-access-key: ${{ secrets.ECR_SECRET_ACCESS_KEY }} |
| 62 | + aws-region: ${{ vars.ECR_PUBLIC_REGION }} |
| 63 | + |
| 64 | + - name: Push chart to public ECR |
| 65 | + run: | |
| 66 | + set -euo pipefail |
| 67 | + aws ecr-public get-login-password --region ${{ vars.ECR_PUBLIC_REGION }} \ |
| 68 | + | helm registry login --username AWS --password-stdin public.ecr.aws |
| 69 | + helm push "$CHART_PACKAGE" oci://public.ecr.aws/openops/helm |
| 70 | + echo "- ✅ Pushed \`oci://public.ecr.aws/openops/helm/openops:${CHART_VERSION}\`" >> $GITHUB_STEP_SUMMARY |
| 71 | +
|
| 72 | + - name: Create GitHub release |
| 73 | + uses: softprops/action-gh-release@v2 |
| 74 | + with: |
| 75 | + target_commitish: ${{ github.sha }} |
| 76 | + tag_name: ${{ env.CHART_VERSION }} |
| 77 | + name: openops-${{ env.CHART_VERSION }} |
| 78 | + generate_release_notes: true |
| 79 | + draft: ${{ inputs.draft }} |
| 80 | + files: ${{ env.CHART_PACKAGE }} |
| 81 | + |
| 82 | + - name: Write summary |
| 83 | + run: | |
| 84 | + echo "### Helm Chart Release" >> $GITHUB_STEP_SUMMARY |
| 85 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 86 | + echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY |
| 87 | + echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY |
| 88 | + echo "| Chart version | \`$CHART_VERSION\` |" >> $GITHUB_STEP_SUMMARY |
| 89 | + echo "| App version | \`$APP_VERSION\` |" >> $GITHUB_STEP_SUMMARY |
| 90 | + echo "| Draft | \`${{ inputs.draft }}\` |" >> $GITHUB_STEP_SUMMARY |
| 91 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 92 | + echo "Install with:" >> $GITHUB_STEP_SUMMARY |
| 93 | + echo '```bash' >> $GITHUB_STEP_SUMMARY |
| 94 | + echo "helm install openops oci://public.ecr.aws/openops/helm/openops --version $CHART_VERSION" >> $GITHUB_STEP_SUMMARY |
| 95 | + echo '```' >> $GITHUB_STEP_SUMMARY |
0 commit comments