You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.0 KiB
79 lines
3.0 KiB
name: Release Changelog
|
|
|
|
on:
|
|
release:
|
|
types: [released]
|
|
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
|
|
jobs:
|
|
update-changelog:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Run Go Changelog Generator
|
|
run: |
|
|
# Run the Go changelog generator, passing the release tag if available
|
|
if [ "${{ github.event.release.tag_name }}" = "latest" ]; then
|
|
go run tools/changelog/changelog.go > "${{ github.event.release.tag_name }}-changelog.md"
|
|
else
|
|
go run tools/changelog/changelog.go "${{ github.event.release.tag_name }}" > "${{ github.event.release.tag_name }}-changelog.md"
|
|
fi
|
|
|
|
- name: Handle changelog files
|
|
run: |
|
|
# Ensure that the CHANGELOG directory exists
|
|
mkdir -p CHANGELOG
|
|
|
|
# Extract Major.Minor version by removing the 'v' prefix from the tag name
|
|
TAG_NAME=${{ github.event.release.tag_name }}
|
|
CHANGELOG_VERSION_NUMBER=$(echo "$TAG_NAME" | sed 's/^v//' | grep -oP '^\d+\.\d+')
|
|
|
|
# Define the new changelog file path
|
|
CHANGELOG_FILENAME="CHANGELOG-$CHANGELOG_VERSION_NUMBER.md"
|
|
CHANGELOG_PATH="CHANGELOG/$CHANGELOG_FILENAME"
|
|
|
|
# Check if the changelog file for the current release already exists
|
|
if [ -f "$CHANGELOG_PATH" ]; then
|
|
# If the file exists, append the new changelog to the existing one
|
|
cat "$CHANGELOG_PATH" >> "${TAG_NAME}-changelog.md"
|
|
# Overwrite the existing changelog with the updated content
|
|
mv "${TAG_NAME}-changelog.md" "$CHANGELOG_PATH"
|
|
else
|
|
# If the changelog file doesn't exist, rename the temp changelog file to the new changelog file
|
|
mv "${TAG_NAME}-changelog.md" "$CHANGELOG_PATH"
|
|
|
|
# Ensure that README.md exists
|
|
if [ ! -f "CHANGELOG/README.md" ]; then
|
|
echo -e "# CHANGELOGs\n\n" > CHANGELOG/README.md
|
|
fi
|
|
|
|
# Add the new changelog entry at the top of the README.md
|
|
if ! grep -q "\[$CHANGELOG_FILENAME\]" CHANGELOG/README.md; then
|
|
sed -i "3i- [$CHANGELOG_FILENAME](./$CHANGELOG_FILENAME)" CHANGELOG/README.md
|
|
# Remove the extra newline character added by sed
|
|
# sed -i '4d' CHANGELOG/README.md
|
|
fi
|
|
fi
|
|
|
|
- name: Clean up
|
|
run: |
|
|
# Remove any temporary files that were created during the process
|
|
rm -f "${{ github.event.release.tag_name }}-changelog.md"
|
|
|
|
- name: Create Pull Request
|
|
uses: peter-evans/create-pull-request@v7.0.5
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
commit-message: "Update CHANGELOG for release ${{ github.event.release.tag_name }}"
|
|
title: "Update CHANGELOG for release ${{ github.event.release.tag_name }}"
|
|
body: "This PR updates the CHANGELOG files for release ${{ github.event.release.tag_name }}"
|
|
branch: changelog-${{ github.event.release.tag_name }}
|
|
base: main
|
|
delete-branch: true
|
|
labels: changelog
|