ci: update version number #18
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
# This file was autogenerated by maturin v1.6.0 using: | |
# maturin generate-ci github -o ../../.github/workflows/release_pyton_pytest.yml --pytest | |
# | |
# Then adapted to to the project | |
# | |
name: CI | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- '*' | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
linux: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
#- runner: self-hosted-arm64 | |
# target: aarch64 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- uses: graalvm/[email protected] | |
with: | |
java-version: '22' | |
distribution: 'graalvm-community' | |
set-java-home: 'true' | |
# - name: Graalvm install step | |
# run: | | |
# bash .github/workflows/install-graalvm.sh ${{ matrix.platform.target }} graalvm-ce | |
- name: Graalvm check step | |
run: | | |
uname -a | |
echo "GRAALVM_HOME: $GRAALVM_HOME" | |
echo "JAVA_HOME: $JAVA_HOME" | |
java --version | |
native-image --version | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: build | |
args: --manifest-path bindings/python/Cargo.toml --release --out bindings/python/dist -i python3.10 | |
target: ${{ matrix.platform.target }} | |
#working-directory: "bindings/python" | |
sccache: 'false' | |
manylinux: '2_28' | |
#container: quay.io/pypa/manylinux_2_28_${{ matrix.platform.target }}:latest | |
docker-options: "--mount type=bind,source=/opt/hostedtoolcache,target=/opt/hostedtoolcache -e JAVA_HOME -e GRAALVM_HOME" | |
- name: Patch wheel lib | |
run: | | |
set -e | |
python3 -m venv .venv | |
source .venv/bin/activate | |
pip install wheel | |
pip install patchelf | |
pip install auditwheel | |
bash .github/workflows/patch-wheel-lib-linux.sh bindings/python/dist | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.platform.target }} | |
path: bindings/python/dist | |
- name: pytest | |
if: ${{ startsWith(matrix.platform.target, 'x86_64') }} | |
shell: bash | |
run: | | |
set -e | |
python3 -m venv .venv | |
source .venv/bin/activate | |
pip install extract-rs --find-links bindings/python/dist --force-reinstall | |
pip install pytest | |
pytest | |
- name: pytest | |
if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }} | |
uses: uraimo/run-on-arch-action@v2 | |
with: | |
arch: ${{ matrix.platform.target }} | |
distro: ubuntu22.04 | |
githubToken: ${{ github.token }} | |
install: | | |
apt-get update | |
apt-get install -y --no-install-recommends python3 python3-pip | |
pip3 install -U pip pytest | |
run: | | |
set -e | |
pip3 install extract-rs --find-links bindings/python/dist --force-reinstall | |
pytest | |
windows: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: windows-latest | |
target: x64 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
architecture: ${{ matrix.platform.target }} | |
- uses: graalvm/[email protected] | |
with: | |
java-version: '22' | |
distribution: 'graalvm-community' | |
set-java-home: 'true' | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
working-directory: "bindings/python" | |
args: --release --out dist | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-windows-${{ matrix.platform.target }} | |
path: bindings/python/dist | |
- name: pytest | |
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -e | |
python3 -m venv .venv | |
source .venv/Scripts/activate | |
pip install extract-rs --find-links bindings/python/dist --force-reinstall | |
pip install pytest | |
pytest | |
macos: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: macos-12 | |
target: x86_64 | |
- runner: macos-14 | |
target: aarch64 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- uses: graalvm/[email protected] | |
with: | |
java-version: '22' | |
distribution: 'liberica' | |
set-java-home: 'true' | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
working-directory: "bindings/python" | |
args: --release --out dist | |
sccache: 'true' | |
- name: Patch wheel lib | |
run: | | |
set -e | |
python3 -m venv .venv | |
source .venv/bin/activate | |
pip install wheel | |
bash .github/workflows/patch-wheel-lib-macos.sh bindings/python/dist | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.platform.target }} | |
path: bindings/python/dist | |
- name: pytest | |
run: | | |
set -e | |
python3 -m venv .venv | |
source .venv/bin/activate | |
pip install extract-rs --find-links bindings/python/dist --force-reinstall | |
pip install pytest | |
pytest | |
sdist: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
working-directory: "bindings/python" | |
command: sdist | |
args: --out dist | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: bindings/python/dist | |
# Follows the guide on https://packaging.python.org/en/latest/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ | |
# We use 2 actions one to publish on PyPi on tag pushes to main brnach and the other to publish on TestPyPi on any push | |
publish-to-testpypi: | |
name: Publish to TestPyPI | |
# publish to TestPyPI on any push | |
needs: [linux, macos, sdist] | |
runs-on: ubuntu-latest | |
environment: | |
name: testpypi | |
url: https://pypi.org/p/extract-rs | |
permissions: | |
contents: read | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: wheels-* | |
merge-multiple: true | |
path: bindings/python/dist | |
- name: Publish to TestPyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ | |
skip-existing: true | |
packages-dir: bindings/python/dist | |
publish-to-pypi: | |
name: Publish to PyPI | |
# only publish to PyPI on tag pushes | |
if: "startsWith(github.ref, 'refs/tags/')" | |
needs: [linux, macos, sdist] | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/extract-rs | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: wheels-* | |
merge-multiple: true | |
path: bindings/python/dist | |
- name: Publish to TestPyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
skip-existing: true | |
packages-dir: bindings/python/dist |