Bump the version on merge #75
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: Bump the version on merge | |
on: | |
pull_request: | |
types: [closed] | |
branches: [master] | |
workflow_dispatch: | |
inputs: | |
releaseType: | |
description: 'What kind of release is this?' | |
required: false | |
default: 'auto' | |
type: choice | |
options: | |
- 'auto' | |
- 'major' | |
- 'minor' | |
- 'patch' | |
- 'dev' | |
jobs: | |
version: | |
permissions: | |
id-token: write | |
pull-requests: read | |
contents: write | |
runs-on: ubuntu-latest | |
outputs: | |
release-kind: ${{ steps.release-kind.outputs.release-kind }} | |
package: ${{ steps.bump-version.outputs.package }} | |
tag-name: ${{ steps.bump-version.outputs.tag-name }} | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout the repository | |
with: | |
fetch-depth: 0 | |
- name: Setup Python and Git | |
uses: ./.github/actions/setup-python-and-git | |
with: | |
python-version: '3.11' | |
- name: Install requirements | |
run: | | |
python -m pip install generate-changelog bump-my-version | |
- name: Generate the changelog and get the release hint | |
id: generate-changelog | |
run: | | |
RELEASE_KIND=$(generate-changelog --output release-hint) | |
echo "::notice::Suggested release type for this branch is: ${RELEASE_KIND}" | |
echo "RELEASE_KIND=$RELEASE_KIND" >> $GITHUB_ENV | |
- name: Override release kind on manual | |
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.releaseType != 'auto' }} | |
id: override-release-kind | |
run: | | |
echo "::notice::Overriding release type to ${{ github.event.inputs.releaseType }} since this was a manual trigger" | |
echo "RELEASE_KIND=${{ github.event.inputs.releaseType }}" >> $GITHUB_ENV | |
- name: Output release kind | |
id: release-kind | |
run: | | |
echo "release-kind=${{ env.RELEASE_KIND }}" >> $GITHUB_OUTPUT | |
- name: Get Pull Request Number | |
id: pr | |
run: | | |
PR_NUMBER=$(gh pr view --json number -q .number || echo "${{ github.event.number }}") | |
echo "pull_request_number=${PR_NUMBER}" >> $GITHUB_OUTPUT | |
echo "::notice::PR_NUMBER is ${PR_NUMBER}" | |
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_ENV | |
- name: Bump version | |
id: bump-version | |
shell: bash | |
run: | | |
case "$RELEASE_KIND" in | |
major|minor|patch) | |
bump-my-version bump --allow-dirty --verbose "$RELEASE_KIND" | |
echo "TAG_NAME=$(bump-my-version show current_version)" >> $GITHUB_ENV | |
export "TAG_NAME=$(bump-my-version show current_version)" | |
git push | |
git push --tags | |
echo "PACKAGE=true" >> $GITHUB_ENV | |
export PACKAGE=true | |
;; | |
dev) | |
bump-my-version bump --allow-dirty --verbose --no-commit --no-tag "$RELEASE_KIND" | |
echo "PACKAGE=true" >> $GITHUB_ENV | |
export PACKAGE=true | |
;; | |
*) | |
echo "PACKAGE=false" >> $GITHUB_ENV | |
export PACKAGE=false | |
esac | |
echo "package=$PACKAGE" >> $GITHUB_OUTPUT | |
echo "tag-name=$TAG_NAME" >> $GITHUB_OUTPUT | |
- name: Package and upload artifacts | |
if: ${{ env.PACKAGE == 'true' }} | |
uses: ./.github/actions/package-and-upload-artifacts | |
with: | |
tag-name: ${{ env.TAG_NAME }} | |
release: | |
if: needs.version.outputs.package == 'true' | |
needs: version | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
pull-requests: read | |
contents: write | |
steps: | |
- name: Download packages built by build-and-inspect-python-package | |
uses: actions/download-artifact@v4 | |
with: | |
name: Packages | |
path: dist | |
- name: Download release notes | |
uses: actions/download-artifact@v4 | |
with: | |
name: release-notes | |
- name: Create a GitHub release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: dist/* | |
tag_name: "${{ needs.version.outputs.tag-name }}" | |
body_path: release-notes.md | |
- name: Upload package to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 |