Skip to content

Package Release

Package Release #18

Workflow file for this run

name: Package Release
# A manual workflow, triggered from the UI
on:
workflow_dispatch:
branches:
- main
inputs:
py_rust_release:
description: "Rust-backed Python Release"
type: boolean
required: false
default: false
py_rust_version:
description: "Rust-backed Python Version (now 0.0.7)"
default: "0.0.7"
jobs:
commit_versions:
name: Bump Pkg Versions
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
outputs:
new-sha: ${{ steps.sha.outputs.SHA }}
steps:
- name: Checks out repo with a token that allows pushing to main without PR
uses: actions/checkout@v4
with:
token: ${{ secrets.VERSION_BOT_PAT }}
- uses: actions/setup-python@v4
- uses: ./.github/actions/install-pre-commit
- uses: dtolnay/rust-toolchain@nightly
if: ${{ inputs.py_rust_release }} || ${{ inputs.rust_release }}
with:
components: rustfmt, clippy
- name: Update Rust-backed Python version
if: ${{ inputs.py_rust_release }}
run: |
./dev_scripts/pkg.sh ver_py_rust_update ${{ inputs.py_rust_version }}
- name: add and format added files with pre-commit
# Running on staged change only as that's all that's needed, || true as don't want it to fail, just modify
run: |
git add . &&
./dev_scripts/test.sh pre_till_success &&
git add .
- name: Commit the new version to the repo
uses: EndBug/add-and-commit@v9
with:
push: true
message: "chore: bump package versions for release"
author_name: github-actions
author_email: [email protected]
- name: get sha
id: sha
run: |
sha_new=$(git rev-parse HEAD)
echo $sha_new
echo "::set-output name=SHA::$sha_new"
- run: echo ${{ steps.sha.outputs.SHA }}
# Rebuild docs each time this is run, note there is currently no versioning in the docs for each of the individually packages, will need to be added when a public package is being properly released
docs:
name: Docs Release
needs: [commit_versions]
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.commit_versions.outputs.new-sha }}
- name: Set up PDM
uses: pdm-project/setup-pdm@v3
with:
python-version: "3.12"
cache: true
cache-dependency-path: "docs/pdm.lock"
- name: Install dependencies
run: |
pdm sync -p ./docs
- name: Build docs
run: |
./dev_scripts/docs.sh build
- name: Deploy to GitHub Pages
uses: crazy-max/ghaction-github-pages@v4
with:
keep_history: true
target_branch: docs-site
build_dir: site
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
py_rust_build:
needs: [commit_versions]
# Run only if requested:
if: ${{ inputs.py_rust_release }}
uses: ./.github/workflows/py-rust-build.yml
with:
new-sha: ${{ needs.commit_versions.outputs.new-sha }}
py_rust_release:
name: Rust-backed Python Library Release
# Make needs multiline:
needs: [commit_versions, py_rust_build]
# Run only if requested:
if: ${{ inputs.py_rust_release }}
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ needs.commit_versions.outputs.new-sha }}
- name: get dist artifacts built in py_rust_build job
uses: actions/download-artifact@v3
with:
name: py_rust_build_files
path: py_rust/dist
- uses: actions/setup-python@v4
with:
python-version: "3.12"
- run: pip install twine
- name: Make sure release contents seem valid
run: twine check py_rust/dist/*
- name: upload to pypi
run: twine upload py_rust/dist/*
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: "${{ secrets.PYPI_TOKEN }}"
- name: Publish the release notes
uses: release-drafter/release-drafter@v5
with:
publish: true
tag: "v${{ inputs.py_rust_version }}"
name: "v${{ inputs.py_rust_version }}"
env:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"