Skip to content

Release Helm Chart

Release Helm Chart #50

name: Release Helm Chart
on:
workflow_dispatch:
jobs:
release:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Generate a token
id: generate_token
uses: tibdex/github-app-token@v2
with:
app_id: ${{ secrets.GH_BOT_APP_ID }}
private_key: ${{ secrets.GH_BOT_APP_KEY }}
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ steps.generate_token.outputs.token }}
fetch-depth: 0
- name: Wait for container images build
run: |
while :; do
result=$(gh api repos/:owner/:repo/actions/workflows | jq -r '.workflows[] | select(.name=="Release container images") | .id' | xargs -I {} gh api repos/:owner/:repo/actions/workflows/{}/runs --jq '.workflow_runs | max_by(.run_number)')
status=$(echo "$result" | jq -r '.status')
conclusion=$(echo "$result" | jq -r '.conclusion')
if [[ "$status" == "completed" ]]; then
if [[ "$conclusion" == "success" ]]; then
echo "Release container images workflow completed successfully"
break
else
echo "Release container images workflow failed"
exit 1
fi
elif [[ "$status" == "in_progress" ]]; then
echo "Release container images workflow is still running"
sleep 60
else
echo "Release container images workflow returned unexpected status: $status"
exit 1
fi
done
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install Helm
uses: azure/setup-helm@v4
with:
token: ${{ github.token }}
- name: Add dependencies
run: |
helm repo add bitnami https://charts.bitnami.com/bitnami
- name: Configure git
run: |
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor }}@users.noreply.github.com"
- name: Semantic Release
id: semantic-release
uses: cycjimmy/semantic-release-action@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
semantic_version: 19.0.5
branch: main
extra_plugins: |
semantic-release-helm3@2.9.3
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.6.0
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
with:
charts_dir: helm
config: .github/configs/cr.yaml
skip_existing: true
- name: Update main changelog
if: steps.semantic-release.outputs.new_release_published == 'true'
run: |
releases=$(gh release list --limit 2 --json name)
latest_release_tag=$(echo "$releases" | jq -r '.[0].name')
previous_release_tag=$(echo "$releases" | jq -r '.[1].name')
clean_latest_version=$(echo $latest_release_tag | sed -E 's/v//g')
echo "#### ${clean_latest_version}: Release" >> CHANGELOG.new
echo >> CHANGELOG.new
for logEntry in $(git log --first-parent --merges --abbrev-commit --pretty=oneline $previous_release_tag..$latest_release_tag| sed -E 's/^.*#//g;s/ from.*//g;/Merge branch/d;s/[^0-9]*//g')
do
echo " - "$(gh pr view $logEntry --json title,number,author -t "{{.title}} (#{{.number}}) @{{.author.login}}") >> CHANGELOG.new
done
echo >> CHANGELOG.new
if [ -e CHANGELOG.md ]
then
cat CHANGELOG.md >> CHANGELOG.new
fi
mv CHANGELOG.new CHANGELOG.md
git config --global user.name "GitHub Actions Bot"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add CHANGELOG.md
git commit -m "Update CHANGELOG for $clean_latest_version [no ci]"
git push origin main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}