Skip to content

Bump Version

Bump Version #11

Workflow file for this run

# 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 }}