Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
292 changes: 142 additions & 150 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install Rust toolchain
Expand Down Expand Up @@ -50,11 +50,11 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
target: [x64, x86]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.target }}
Expand Down Expand Up @@ -83,186 +83,178 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
target: [x86_64, i686]
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Build Wheels
uses: messense/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: -i ${{ matrix.python-version }} --release --out dist
- name: Python UnitTest
if: matrix.target == 'x86_64'
run: |
pip install gilknocker --no-index --find-links dist --force-reinstall
python -m pip install -r requirements-dev.txt
python -m pytest -vs tests
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.python-version }}-${{ matrix.target }}
path: dist
- uses: actions/checkout@v5
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Build Wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: -i ${{ matrix.python-version }} --release --out dist
- name: Python UnitTest
if: matrix.target == 'x86_64'
run: |
pip install gilknocker --no-index --find-links dist --force-reinstall
python -m pip install -r requirements-dev.txt
python -m pytest -vs tests
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.python-version }}-${{ matrix.target }}
path: dist

pypy-linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: [ pypy-3.8, pypy-3.9 ]
python-version: [pypy-3.9, pypy-3.10, pypy-3.11]
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-${{matrix.python-version}}-cargo-${{ hashFiles('**/Cargo.lock') }}
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Build Wheels - gilknocker
uses: PyO3/maturin-action@v1
with:
manylinux: auto
args: -i ${{ matrix.python-version }} --release --out dist
- name: Python UnitTest - gilknocker
run: |
pip install gilknocker --no-index --find-links dist
pypy -c "import gilknocker"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-pypy-linux-${{ matrix.python-version }}
path: dist
- uses: actions/checkout@v5
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-${{matrix.python-version}}-cargo-${{ hashFiles('**/Cargo.lock') }}
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Build Wheels - gilknocker
uses: PyO3/maturin-action@v1
with:
manylinux: auto
args: -i ${{ matrix.python-version }} --release --out dist
- name: Python UnitTest - gilknocker
run: |
pip install gilknocker --no-index --find-links dist
pypy -c "import gilknocker"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-pypy-linux-${{ matrix.python-version }}
path: dist

pypy-macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
python-version: [ pypy-3.8, pypy-3.9 ]
python-version: [pypy-3.9, pypy-3.10, pypy-3.11]
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install maturin
run: pip install maturin
- name: Build Wheels - gilknocker
uses: PyO3/maturin-action@v1
with:
manylinux: auto
args: -i ${{ matrix.python-version }} --release --out dist
- name: Install wheel
run: |
pip install gilknocker --no-index --find-links dist
- name: Python Import test
run: pypy -c "import gilknocker"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-pypy-macos-${{ matrix.python-version }}
path: dist
- uses: actions/checkout@v5
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install maturin
run: pip install maturin
- name: Build Wheels - gilknocker
uses: PyO3/maturin-action@v1
with:
manylinux: auto
args: -i ${{ matrix.python-version }} --release --out dist
- name: Install wheel
run: |
pip install gilknocker --no-index --find-links dist
- name: Python Import test
run: pypy -c "import gilknocker"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-pypy-macos-${{ matrix.python-version }}
path: dist

linux-cross:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
- '3.12'
- '3.13'
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
target: [aarch64, armv7, s390x, ppc64le]
include:
- python-version: pypy3.8
target: aarch64
- python-version: pypy3.9
- python-version: pypy-3.9
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build Wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: -i ${{ matrix.python-version }} --release --out dist
- uses: uraimo/run-on-arch-action@v2
# skipped cross compiled pypy wheel tests for now
if: ${{ !startsWith(matrix.python-version, 'pypy') }}
name: Install built wheel
with:
arch: ${{ matrix.target }}
distro: ubuntu20.04
githubToken: ${{ github.token }}
# Mount the dist directory as /artifacts in the container
dockerRunArgs: |
--volume "${PWD}/dist:/artifacts"
install: |
apt-get update
apt-get install -y --no-install-recommends python3 python3-venv software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt-get update
apt-get install -y curl python3.9-venv python3.10-venv python3.11-venv python3.12-venv python3.13-venv
run: |
ls -lrth /artifacts
PYTHON=python${{ matrix.python-version }}
$PYTHON -m venv venv
venv/bin/pip install -U pip
venv/bin/pip install gilknocker --no-index --find-links /artifacts --force-reinstall
venv/bin/python -c 'import gilknocker'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-cross-${{ matrix.python-version }}-${{ matrix.target }}
path: dist
- uses: actions/checkout@v5
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build Wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: -i ${{ matrix.python-version }} --release --out dist
- uses: uraimo/run-on-arch-action@v3
# skipped cross compiled pypy wheel tests for now
if: ${{ !startsWith(matrix.python-version, 'pypy') }}
name: Install built wheel
with:
arch: ${{ matrix.target }}
distro: ubuntu22.04
githubToken: ${{ github.token }}
# Mount the dist directory as /artifacts in the container
dockerRunArgs: |
--volume "${PWD}/dist:/artifacts"
install: |
apt-get update
apt-get install -y --no-install-recommends python3 python3-venv software-properties-common gpg-agent qemu-user-static binfmt-support
add-apt-repository ppa:deadsnakes/ppa
apt-get update
apt-get install -y curl python3.9-venv python3.10-venv python3.11-venv python3.12-venv python3.13-venv python3.14-venv
run: |
ls -lrth /artifacts
PYTHON=python${{ matrix.python-version }}
$PYTHON -m venv venv
venv/bin/pip install -U pip
venv/bin/pip install gilknocker --no-index --find-links /artifacts --force-reinstall
venv/bin/python -c 'import gilknocker'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-cross-${{ matrix.python-version }}-${{ matrix.target }}
path: dist

release:
name: Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
needs: [ macos, windows, linux ]
needs: [macos, windows, linux]
steps:
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v5
with:
pattern: wheels-*
merge-multiple: true
- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: 3.9
python-version: "3.13"
- name: Publish to PyPi
env:
TWINE_USERNAME: __token__
Expand Down