Workflow file for this run
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] Update CHANGELOG.md" | |
on: | |
release: | |
types: [released] | |
permissions: | |
contents: write | |
pull-requests: write | |
jobs: | |
setup: | |
# this workflow will always fail in forks; bail if this isn't running in the upstream | |
if: github.repository == 'awslabs/amazon-eks-ami' | |
runs-on: ubuntu-latest | |
outputs: | |
tag_name: ${{ steps.variables.outputs.tag_name }} | |
steps: | |
- id: variables | |
run: | | |
echo "tag_name=$(echo ${{ github.ref }} | cut -d/ -f3)" >> $GITHUB_OUTPUT | |
update-changelog: | |
runs-on: ubuntu-latest | |
needs: | |
- setup | |
steps: | |
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # 4.2.1 | |
with: | |
repository: awslabs/amazon-eks-ami | |
ref: refs/heads/main | |
path: amazon-eks-ami/ | |
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # 7.0.1 | |
with: | |
script: | | |
const fs = require('fs'); | |
const changelogPath = './amazon-eks-ami/CHANGELOG.md'; | |
const placeholder = '<!--new-changelog-entry-placeholder-->'; | |
const tagName = '${{ needs.setup.outputs.tag_name }}'; | |
const release = await github.rest.repos.getReleaseByTag({ | |
tag: tagName, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
}); | |
const changelog = fs.readFileSync(changelogPath, 'utf8'); | |
if (changelog.includes(release.data.name)) { | |
throw new Error(`changelog already includes ${release.data.name}`); | |
} | |
const newEntry = `# ${release.data.name}\n${release.data.body}`; | |
let updatedChangelog = changelog.replace(placeholder, placeholder + '\n\n' + newEntry + '\n---\n'); | |
// if the release notes are modified in the GitHub web editor, trailing spaces can be added accidentally | |
updatedChangelog = updatedChangelog.split('\n').map(s => s.replace(/\s+$/, '')).join('\n'); | |
fs.writeFileSync(changelogPath, updatedChangelog); | |
- uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # 7.0.5 | |
with: | |
branch: update-changelog | |
path: amazon-eks-ami/ | |
add-paths: CHANGELOG.md | |
commit-message: "Update CHANGELOG.md for release ${{ needs.setup.outputs.tag_name }}" | |
committer: "GitHub <noreply@github.com>" | |
author: "GitHub <noreply@github.com>" | |
title: "Update CHANGELOG.md" | |
labels: | | |
changelog/exclude | |
body: | | |
Adds CHANGELOG.md entry for release [${{ needs.setup.outputs.tag_name }}](https://github.com/awslabs/amazon-eks-ami/releases/tag/${{ needs.setup.outputs.tag_name }}). |