remove set_version, prepare for v1 release (#309) #621
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: ci | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- '**' | |
pull_request: {} | |
jobs: | |
test: | |
name: test ${{ matrix.python-version }}, rust ${{ matrix.rust-version }} on ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, macos, windows] | |
rust-version: [stable, '1.72'] | |
python-version: | |
- '3.9' | |
- '3.10' | |
- '3.11' | |
- '3.12' | |
- '3.13' | |
# NOTE: gha setup-python doesn't support 3.13t yet | |
# (https://github.com/actions/setup-python/pull/973) | |
# - '3.13t' | |
- 'pypy3.9' | |
- 'pypy3.10' | |
exclude: | |
- rust-version: '1.72' | |
os: macos | |
- rust-version: '1.72' | |
os: windows | |
runs-on: ${{ matrix.os }}-latest | |
env: | |
PYTHON: ${{ matrix.python-version }} | |
RUST: ${{ matrix.rust-version }} | |
OS: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: set up python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ matrix.rust-version }} | |
override: true | |
- name: cache rust | |
uses: Swatinem/rust-cache@v1 | |
- run: pip install -r requirements/pyproject.txt -r requirements/testing.txt | |
- run: pip install -e . | |
- run: pip freeze | |
- if: matrix.os == 'ubuntu' | |
run: | | |
mkdir -p ${{ github.workspace }}/protected | |
touch ${{ github.workspace }}/protected/test | |
sudo chown -R root:root ${{ github.workspace }}/protected | |
sudo chmod 700 ${{ github.workspace }}/protected | |
- run: make test | |
env: | |
WATCHFILES_TEST_PERMISSION_DENIED_PATH: ${{ github.workspace }}/protected | |
- run: coverage xml | |
- uses: codecov/[email protected] | |
with: | |
file: ./coverage.xml | |
env_vars: PYTHON,RUST,OS | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt, clippy | |
- name: cache rust | |
uses: Swatinem/rust-cache@v1 | |
- run: pip install -r requirements/pyproject.txt -r requirements/linting.txt | |
- run: pip install -e . | |
- uses: pre-commit/[email protected] | |
with: | |
extra_args: --all-files | |
env: | |
SKIP: no-commit-to-branch | |
docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: set up python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: install | |
run: pip install -r requirements/docs.txt | |
- name: build site | |
run: mkdocs build | |
- name: store docs site | |
uses: actions/upload-artifact@v4 | |
with: | |
name: docs | |
path: site | |
build: | |
name: > | |
build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }}) | |
if: "!contains(github.event.pull_request.labels.*.name, 'Quick Build')" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, macos, windows] | |
target: [x86_64, aarch64] | |
manylinux: [auto] | |
include: | |
- os: ubuntu | |
platform: linux | |
pypy: true | |
- os: macos | |
target: x86_64 | |
pypy: true | |
- os: macos | |
target: aarch64 | |
pypy: true | |
- os: windows | |
ls: dir | |
- os: windows | |
ls: dir | |
target: i686 | |
python-architecture: x86 | |
- os: windows | |
ls: dir | |
target: aarch64 | |
interpreter: 3.11 3.12 | |
- os: ubuntu | |
platform: linux | |
target: i686 | |
- os: ubuntu | |
platform: linux | |
target: armv7 | |
- os: ubuntu | |
platform: linux | |
target: ppc64le | |
- os: ubuntu | |
platform: linux | |
target: s390x | |
# musllinux | |
- os: ubuntu | |
platform: linux | |
target: x86_64 | |
manylinux: musllinux_1_1 | |
- os: ubuntu | |
platform: linux | |
target: aarch64 | |
manylinux: musllinux_1_1 | |
runs-on: ${{ matrix.os }}-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: set up python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
architecture: ${{ matrix.python-architecture || 'x64' }} | |
- name: check GITHUB_REF matches package version | |
uses: samuelcolvin/[email protected] | |
if: "startsWith(github.ref, 'refs/tags/')" | |
with: | |
version_file_path: Cargo.toml | |
- name: build sdist | |
if: ${{ matrix.os == 'ubuntu' && matrix.target == 'x86_64' && matrix.manylinux == 'auto' }} | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
- name: build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
manylinux: ${{ matrix.manylinux || 'auto' }} | |
# NOTE: gha setup-python doesn't support 3.13t yet | |
# (https://github.com/actions/setup-python/pull/973) | |
# args: --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 3.13t' }} | |
args: --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13' }} | |
- name: build pypy wheels | |
if: ${{ matrix.pypy }} | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
manylinux: ${{ matrix.manylinux || 'auto' }} | |
args: --release --out dist --interpreter pypy3.9 pypy3.10 | |
- run: ${{ matrix.ls || 'ls -lh' }} dist/ | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: pypi_files_${{ matrix.os }}_${{ matrix.target }}_${{ matrix.interpreter || 'all' }}_${{ matrix.manylinux }} | |
path: dist | |
list-pypi-files: | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: get dist artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: pypi_files_* | |
merge-multiple: true | |
path: dist | |
- name: list dist files | |
run: | | |
ls -lh dist/ | |
echo "`ls dist | wc -l` files" | |
- name: extract and list sdist file | |
run: | | |
mkdir sdist-files | |
tar -xvf dist/*.tar.gz -C sdist-files | |
tree -a sdist-files | |
- name: extract and list wheel file | |
run: ls dist/*cp312-manylinux_2_17_x86_64*.whl | head -n 1 | |
- name: extract and list wheel file | |
run: python -m zipfile --list `ls dist/*cp312-manylinux_2_17_x86_64*.whl | head -n 1` | |
- run: pip install twine | |
- run: twine check dist/* | |
# Used for branch protection checks, see https://github.com/marketplace/actions/alls-green#why | |
check: | |
if: always() | |
needs: [test, lint, docs] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Decide whether the needed jobs succeeded or failed | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} | |
release: | |
needs: [build, check, docs] | |
if: "success() && startsWith(github.ref, 'refs/tags/')" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: set up python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- run: pip install twine | |
- name: get dist artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: pypi_files_* | |
merge-multiple: true | |
path: dist | |
- name: get docs | |
uses: actions/download-artifact@v4 | |
with: | |
name: docs | |
path: site | |
- run: twine check dist/* | |
- name: upload to pypi | |
run: twine upload dist/* | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.pypi_token }} | |
- name: publish docs | |
uses: JamesIves/[email protected] | |
with: | |
branch: gh-pages | |
folder: site |