-
Notifications
You must be signed in to change notification settings - Fork 597
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CI] Add Release Notes Automation (#3170)
Add new workflow to generate release notes. This workflow can be run manually via workflow dispatch, but will also run automatically upon creating a release. The workflow dispatch can be used for testing, previewing release notes for a potential release, or for generating release notes for past releases for when the automation has a bug or didn't exist. Also update the PR template and CONTRIBUTING guidelines to include information about the new required labels and automation. Also streamline the PR template a little bit to nudge developers towards putting more information in the "Release Notes" section of the PR template.
- Loading branch information
1 parent
6c0aa1d
commit 9a8d9ef
Showing
5 changed files
with
144 additions
and
22 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
{ | ||
"categories": [ | ||
{ | ||
"title": "## Features", | ||
"labels": ["Feature"] | ||
}, | ||
{ | ||
"title": "## API Modification", | ||
"labels": ["API Modification"] | ||
}, | ||
{ | ||
"title": "## API Deprecation", | ||
"labels": ["Deprecation"] | ||
}, | ||
{ | ||
"title": "## Backend Code Generation", | ||
"labels": ["Backend Code Generation"] | ||
}, | ||
{ | ||
"title": "## Performance", | ||
"labels": ["Performance"] | ||
}, | ||
{ | ||
"title": "## Fixes", | ||
"labels": ["Bugfix"] | ||
}, | ||
{ | ||
"title": "## Documentation", | ||
"labels": ["Documentation"] | ||
}, | ||
{ | ||
"title": "## Dependency Updates", | ||
"labels": ["Dependency Update"] | ||
}, | ||
{ | ||
"title": "## Build and Internal Changes", | ||
"labels": ["Internal"] | ||
}, | ||
{ | ||
"title": "## Uncategorized", | ||
"labels": [] | ||
} | ||
], | ||
"ignore_labels": [ | ||
"No Release Notes" | ||
], | ||
"sort": { | ||
"order": "ASC", | ||
"on_property": "mergedAt" | ||
}, | ||
"template": "${{CHANGELOG}}\n\n**Full Changelog:** ${{RELEASE_DIFF}}\n", | ||
"pr_template": "- ${{TITLE}} (by @${{AUTHOR}} in ${{URL}})${{RELEASE_NOTES}}", | ||
"empty_template": "- no changes", | ||
"transformers": [ | ||
{ | ||
"pattern": "<!--.*-->", | ||
"flags": "gus", | ||
"target": "" | ||
} | ||
], | ||
"custom_placeholders": [ | ||
{ | ||
"name": "RELEASE_NOTES", | ||
"source": "BODY", | ||
"transformer": { | ||
"pattern": ".*#### Release Notes(?:[\n\\s]|(?:<!--.*?-->))*((?:\\S(?!!--)).*?)[\n\\s]*\n#.*", | ||
"flags": "gus", | ||
"target": "\n $1" | ||
} | ||
} | ||
], | ||
"trim_values": false, | ||
"max_tags_to_fetch": 200, | ||
"max_pull_requests": 500, | ||
"max_back_track_time_days": 365 | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
name: Generate Release Notes | ||
|
||
on: | ||
release: | ||
types: [created] | ||
workflow_dispatch: | ||
inputs: | ||
toTag: | ||
description: 'Tag or ref for which to generate release notes' | ||
required: true | ||
fromTag: | ||
# If you leave this blank, it'll select previous SemVer version | ||
# WARNING: Cannot use anything older than a005498 because of the git tree merge | ||
description: 'Tag or ref from which to start generating release notes' | ||
required: false | ||
|
||
|
||
jobs: | ||
generate_release_notes: | ||
name: Generate Release Notes | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Build Release Notes | ||
id: release-notes | ||
uses: mikepenz/release-changelog-builder-action@v3.7.0 | ||
with: | ||
configuration: .github/workflows/config/release-notes.json | ||
failOnError: true | ||
# Amazingly, on release where the inputs are empty, this just does the right thing | ||
# The "toTag" is the released tag, and the "fromTag" is the previous tag according to SemVer | ||
fromTag: ${{ github.event.inputs.fromTag }} | ||
toTag: ${{ github.event.inputs.toTag }} | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Report Release Notes | ||
run: echo '${{steps.release-notes.outputs.changelog}}' >> $GITHUB_STEP_SUMMARY | ||
- name: Upload Release Notes (on release) | ||
if: github.event_name == 'release' | ||
uses: softprops/action-gh-release@v0.1.15 | ||
with: | ||
body: ${{ steps.release-notes.outputs.changelog }} | ||
- name: Error on uncategorized PRs | ||
if: steps.release-notes.outputs.uncategorized_prs != 0 | ||
run: exit 1 | ||
|
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
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