Migrate build process to PEP 621/517 compliance #39
Workflow file for this run
This file contains hidden or 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: Test Python | |
on: | |
workflow_dispatch: | |
push: | |
pull_request: | |
permissions: {} | |
jobs: | |
build-manylinux_2_28-x86_64-wheels: | |
name: "Build and test Manylinux 2.28 x86_64 wheels" | |
runs-on: ubuntu-24.04 | |
container: | |
image: quay.io/pypa/manylinux_2_28_x86_64 | |
env: | |
PLAT: manylinux_2_28_x86_64 | |
PYBIN: "/opt/python/${{ matrix.python }}/bin" | |
strategy: | |
matrix: | |
python: | |
- cp310-cp310 | |
- cp311-cp311 | |
- cp312-cp312 | |
- cp313-cp313 | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: "Configure Git safe directory" | |
run: git config --global --add safe.directory /__w/bdkpython/bdkpython | |
- name: "Install Rust 1.84.1" | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.84.1 | |
- name: "Generate bdk.py and binaries" | |
run: bash ./scripts/generate-linux.sh | |
- name: "Install build" | |
run: ${PYBIN}/pip install build | |
- name: "Build wheel" | |
run: ${PYBIN}/python -m build --wheel --verbose | |
- name: "Install wheel" | |
run: ${PYBIN}/pip install ./dist/*.whl | |
- name: "Run tests" | |
run: ${PYBIN}/python -m unittest discover --start "./tests/" --pattern "test_offline_*.py" --verbose | |
- name: "Upload artifact test" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bdkpython-manylinux_2_28_x86_64-${{ matrix.python }} | |
path: /home/runner/work/bdkpython/bdkpython/dist/*.whl | |
build-macos-arm64-wheels: | |
name: "Build and test macOS arm64 wheels" | |
runs-on: macos-13 | |
strategy: | |
matrix: | |
python: | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
- "3.13" | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: "Install Python" | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: "Generate bdk.py and binaries" | |
run: bash ./scripts/generate-macos-arm64.sh | |
- name: "Install build" | |
run: pip3 install build | |
- name: "Build wheel" | |
# Specifying the plat-name argument is necessary to build a wheel with the correct name, | |
# see issue #350 for more information | |
run: python3 -m build --wheel --verbose | |
# You can't install the arm64 wheel on the CI, so we skip these steps and simply test that the wheel builds | |
# - name: "Install wheel and run tests" | |
# run: | | |
# pip3 install ./dist/*.whl | |
# python3 -m unittest discover --start "./tests/" --pattern "test_offline_*.py" --verbose | |
- name: "Upload artifact test" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bdkpython-macos-arm64-${{ matrix.python }} | |
path: /Users/runner/work/bdkpython/bdkpython/dist/*.whl | |
build-macos-x86_64-wheels: | |
name: "Build and test macOS x86_64 wheels" | |
runs-on: macos-13 | |
strategy: | |
matrix: | |
python: | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
- "3.13" | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
persist-credentials: false | |
fetch-depth: 0 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: "Generate bdk.py and binaries" | |
run: bash ./scripts/generate-macos-x86_64.sh | |
- name: "Install build" | |
run: pip3 install build | |
- name: "Build wheel" | |
run: python3 -m build --wheel --verbose | |
- name: "Install wheel" | |
run: pip3 install ./dist/*.whl | |
- name: "Run tests" | |
run: python3 -m unittest discover --start "./tests/" --pattern "test_offline_*.py" --verbose | |
- name: "Upload artifact test" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bdkpython-macos-x86_64-${{ matrix.python }} | |
path: /Users/runner/work/bdkpython/bdkpython/dist/*.whl | |
build-windows-wheels: | |
name: "Build and test Windows wheels" | |
runs-on: windows-2022 | |
strategy: | |
matrix: | |
python: | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
- "3.13" | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: "Install Python" | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: "Generate bdk.py and binaries" | |
run: bash ./scripts/generate-windows.sh | |
- name: "Install build" | |
run: pip install build | |
- name: "Build wheel" | |
run: python -m build --wheel --verbose | |
- name: "Upload artifact test" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: bdkpython-windows-${{ matrix.python }} | |
path: D:\a\bdkpython\bdkpython\dist\*.whl | |
- name: "Install dependencies" | |
run: Get-ChildItem 'D:\a\bdkpython\bdkpython\dist\*.whl' | ForEach-Object {pip install $_.FullName} | |
shell: powershell | |
- name: "Run tests" | |
run: python -m unittest discover --start "./tests/" --pattern "test_offline_*.py" --verbose | |
ruff: | |
name: "Lint tests" | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
persist-credentials: false | |
fetch-depth: 0 | |
- name: "Configure Git safe directory" | |
run: git config --global --add safe.directory /__w/bdkpython/bdkpython | |
- name: "Install Ruff" | |
run: curl -LsSf https://astral.sh/ruff/install.sh | sh | |
- name: "Lint test targets" | |
run: ruff check ./tests/ |