#16: Inited the filtering functionality #103
Workflow file for this run
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: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- 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 | |
- name: Setup PDM | |
uses: pdm-project/setup-pdm@v3 | |
# You are now able to use PDM in your workflow | |
- name: Install dependencies | |
run: pdm install | |
- name: Lint Rust codebase | |
run: make lib-lint | |
- name: Lint Python codebase | |
run: make lint | |
# test: | |
# name: test ${{ matrix.python-version }}, rust ${{ matrix.rust-version }} on ${{ matrix.os }} | |
# strategy: | |
# fail-fast: false | |
# matrix: | |
# os: [ubuntu, macos] | |
# rust-version: [stable, '1.65.0'] | |
# python-version: | |
# - '3.8' | |
# - '3.9' | |
# - '3.10' | |
# - '3.11' | |
# - '3.12' | |
# - 'pypy3.8' | |
# - 'pypy3.9' | |
# - 'pypy3.10' | |
# exclude: | |
# - rust-version: '1.65.0' | |
# os: macos | |
# | |
# runs-on: ${{ matrix.os }}-latest | |
# | |
# env: | |
# PYTHON: ${{ matrix.python-version }} | |
# RUST: ${{ matrix.rust-version }} | |
# OS: ${{ matrix.os }} | |
# | |
# steps: | |
# - uses: actions/checkout@v3 | |
# | |
# - name: set up python | |
# uses: actions/setup-python@v4 | |
# with: | |
# python-version: ${{ matrix.python-version }} | |
# | |
# - 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 | |
# | |
# - name: Setup PDM | |
# uses: pdm-project/setup-pdm@v3 | |
# | |
# # You are now able to use PDM in your workflow | |
# - name: Install dependencies | |
# run: pdm install | |
# | |
# # TODO: enable the test step back | |
# - run: make test | |
# - run: coverage xml | |
# - uses: codecov/[email protected] | |
# with: | |
# file: ./coverage.xml | |
# env_vars: PYTHON,RUST,OS | |
build-linux: | |
name: Build on Linux (${{ matrix.target }}, ${{ matrix.manylinux || 'auto' }}) | |
if: "startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')" | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [x86_64, x86, aarch64, armv7, s390x, ppc64le] | |
manylinux: [auto] | |
include: | |
# musllinux | |
- target: x86_64 | |
manylinux: musllinux_1_1 | |
- target: aarch64 | |
manylinux: musllinux_1_1 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: Build CPython Wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist | |
sccache: 'true' | |
manylinux: ${{ matrix.manylinux || 'auto' }} | |
- name: Build PyPy wheels | |
if: ${{ matrix.manylinux == 'auto' && (matrix.target == 'x86_64' || matrix.target == 'aarch64') }} | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
sccache: 'true' | |
manylinux: ${{ matrix.manylinux || 'auto' }} | |
args: --release --out dist --interpreter pypy3.8 pypy3.9 pypy3.10 | |
- run: ls -lah dist/ | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
build-macos: | |
name: Build on MacOS (${{ matrix.target }}) | |
if: "startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')" | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
target: [ x86_64, aarch64 ] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- name: Build CPython Wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist | |
sccache: 'true' | |
- name: Build PyPy wheels | |
if: ${{ matrix.target == 'x86_64' }} | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist --interpreter pypy3.8 pypy3.9 pypy3.10 | |
- run: ls -lah dist/ | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
build-windows: | |
name: Build on Windows (${{ matrix.target }}) | |
if: "startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')" | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
target: [x64, x86] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
architecture: ${{ matrix.target }} | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
args: --release --out dist | |
sccache: 'true' | |
- run: dir dist/ | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
sdist: | |
name: sdist | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
- name: Upload sdist | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
list-wheels: | |
needs: [build-linux, build-macos, build-windows] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: get dist artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: wheels | |
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/*cp38-abi3-manylinux_2_17_x86_64*.whl | head -n 1 | |
python -m zipfile --list `ls dist/*cp38-abi3-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 | |
checks: | |
if: always() | |
needs: [lint] # TODO: enable the test step back | |
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: | |
name: Release | |
needs: [checks, build-linux, build-macos, build-windows, sdist] | |
if: "success() && startsWith(github.ref, 'refs/tags/')" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: set up python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11' | |
- run: pip install twine | |
- name: get dist artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
- run: twine check dist/* | |
- name: upload to pypi | |
run: twine upload dist/* | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.pypi_token }} |