Release Helm Chart #72
This file contains 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: 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 | |
PR_IDS=$(git log ${previous_release_tag}..${latest_release_tag} --pretty=format:%s | grep -oE '\(#[0-9]+\)$' | sed -E 's/\(#([0-9]+)\)/\1/') | |
for PR_ID in $PR_IDS | |
do | |
echo " - "$(gh pr view $PR_ID --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 }} |