Bump Version #11
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
# Creates a new version by: | |
# 1. bumping the version number in the changelog and cargo | |
# 2. Creates a new branch for this version | |
# 3. makes a new commit | |
# 4. Opens a PR for the new version | |
# 5. Pulls that branch and builds it for different platforms | |
# 6. Once all those build, makes a release | |
# 7. Creates a tag for that release | |
# 7. merges that PR when tests pass and removes the branch | |
# This seperates the release process from the test process, so we can still release if we need to and tests are failing | |
name: Bump Version | |
on: | |
workflow_dispatch: | |
inputs: | |
type: | |
description: "Release type" | |
required: true | |
default: "major" | |
type: choice | |
options: | |
- major | |
- minor | |
- patch | |
jobs: | |
bump: | |
runs-on: ubuntu-latest | |
permissions: write-all | |
outputs: | |
version: ${{ steps.bump.outputs.version }} | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
git config user.name github-actions[bot] | |
git config user.email 41898282+github-actions[bot]@users.noreply.github.com | |
VERSION=$(python increment_version.py $TYPE) | |
git checkout -b "version-$VERSION" | |
git commit -am "Version $VERSION" | |
git push -u origin HEAD | |
gh pr create --fill | |
echo "version=$VERSION" >> "$GITHUB_OUTPUT" | |
id: bump | |
env: | |
TYPE: ${{ inputs.type }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
linux: | |
name: build linux | |
runs-on: ubuntu-latest | |
needs: [bump] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: version-${{ needs.bump.outputs.version }} | |
- uses: PyO3/maturin-action@v1.40.1 | |
with: | |
manylinux: auto | |
command: build | |
args: --release --sdist -o dist --find-interpreter | |
- name: Upload wheels | |
uses: actions/upload-artifact@v2 | |
with: | |
name: wheels | |
path: dist | |
windows: | |
name: build windows | |
runs-on: windows-latest | |
needs: [bump] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: version-${{ needs.bump.outputs.version }} | |
- uses: PyO3/maturin-action@v1.40.1 | |
with: | |
command: build | |
args: --release -o dist --find-interpreter | |
- name: Upload wheels | |
uses: actions/upload-artifact@v2 | |
with: | |
name: wheels | |
path: dist | |
macos: | |
name: build macos | |
runs-on: macos-latest | |
needs: [bump] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: version-${{ needs.bump.outputs.version }} | |
- uses: PyO3/maturin-action@v1.40.1 | |
with: | |
command: build | |
args: --release -o dist --universal2 --find-interpreter | |
- name: Upload wheels | |
uses: actions/upload-artifact@v2 | |
with: | |
name: wheels | |
path: dist | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') || (github.event_name == 'workflow_dispatch') | |
needs: [macos, windows, linux] | |
steps: | |
- uses: actions/download-artifact@v2 | |
with: | |
name: wheels | |
- name: Publish to PyPI | |
uses: PyO3/maturin-action@v1.40.1 | |
env: | |
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
with: | |
command: upload | |
args: --skip-existing * | |
tag-and-merge: | |
runs-on: ubuntu-latest | |
permissions: write-all | |
needs: [release, bump] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: version-${{ needs.bump.outputs.version }} | |
- run: | | |
git tag "v$VERSION" | |
git push --tags | |
gh pr merge --admin --delete-branch | |
env: | |
VERSION: ${{ needs.bump.outputs.version }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |