chore(deps): update dependency git to v5.3.0 (#1164) #501
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 Charts | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- 'charts/**' | |
permissions: | |
contents: write | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Configure Git | |
run: | | |
git config user.name "$GITHUB_ACTOR" | |
git config user.email "[email protected]" | |
- name: Install Helm | |
uses: azure/setup-helm@v4 | |
with: | |
version: v3.12.0 | |
- name: Retrieve version from Chart.yaml | |
id: chart_version | |
run: | | |
echo "version=$(yq '.version' charts/jenkins/Chart.yaml)" >> "${GITHUB_OUTPUT}" | |
- name: Extract version changelog | |
id: version_changelog | |
env: | |
VERSION: ${{ steps.chart_version.outputs.version }} | |
run: | | |
changelog=$(awk -v version="${VERSION}" ' | |
/^(##|###) [0-9]+.[0-9]+.[0-9]+/ { | |
if (p) { exit }; | |
if ($2 == version) { | |
p = 1; next | |
} | |
} p | |
' charts/jenkins/CHANGELOG.md) | |
delimiter="$(openssl rand -hex 8)" | |
# shellcheck disable=SC2129 | |
echo "changelog<<${delimiter}" >> "${GITHUB_OUTPUT}" | |
echo "${changelog}" >> "${GITHUB_OUTPUT}" | |
echo "${delimiter}" >> "${GITHUB_OUTPUT}" | |
- name: Annotate Chart.yaml with current version changelog | |
if: steps.version_changelog.outputs.changelog != '' | |
env: | |
CHANGELOG: ${{ steps.version_changelog.outputs.changelog }} | |
run: | | |
# Changelog sanitation | |
# shellcheck disable=SC2016 | |
proper_changelog=$(echo "${CHANGELOG}" \ | |
| grep -v '^$' `# remove empty lines` \ | |
| grep -v '^|' `# remove table lines` \ | |
| iconv -c -f utf8 -t ascii `# remove non ascii characters like emoji` \ | |
| sed 's/^/- /' `# add a dash in front of every line` \ | |
| sed 's/ / /') # double spaces | |
# Add new line to ensure scalar value in Chart.yaml | |
printf -v change '%s\n' "${proper_changelog}" | |
# Update chart annotations using strenv operator (https://mikefarah.gitbook.io/yq/operators/string-operators#string-blocks-bash-and-newlines) | |
CHANGE="${change}" yq --inplace ".annotations.\"artifacthub.io/changes\" = strenv(CHANGE)" charts/jenkins/Chart.yaml | |
- name: Show updated Chart.yaml | |
run: | | |
yq charts/jenkins/Chart.yaml | |
- name: Run chart-releaser | |
id: chart_releaser | |
uses: helm/[email protected] | |
env: | |
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
- name: Retrieve release info | |
id: release_info | |
if: steps.chart_releaser.outputs.changed_charts != '' | |
env: | |
LAST_TAG: "jenkins-${{ steps.chart_version.outputs.version }}" | |
REPOSITORY: ${{ github.repository }} | |
run: | | |
release=$(curl -L "https://api.github.com/repos/${REPOSITORY}/releases/tags/${LAST_TAG}") | |
echo "id=$(echo "${release}" | jq '.id')" >> "${GITHUB_OUTPUT}" | |
delimiter="$(openssl rand -hex 8)" | |
# shellcheck disable=SC2129 | |
echo "body<<${delimiter}" >> "${GITHUB_OUTPUT}" | |
echo "${release}" | jq --raw-output '.body' >> "${GITHUB_OUTPUT}" | |
echo "${delimiter}" >> "${GITHUB_OUTPUT}" | |
- name: Update release description | |
id: update_release | |
if: steps.chart_releaser.outputs.changed_charts != '' | |
uses: actions/github-script@v7 | |
env: | |
ID: ${{ steps.release_info.outputs.id }} | |
BODY: ${{steps.release_info.outputs.body}} | |
CHANGELOG: ${{steps.version_changelog.outputs.changelog}} | |
with: | |
script: | | |
try { | |
await github.rest.repos.updateRelease({ | |
release_id: process.env.ID, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: process.env.BODY + "\r\n\r\n## Changelog" + process.env.CHANGELOG, | |
}); | |
} catch (error) { | |
core.setFailed(error.message); | |
} |