name: Test Python on: workflow_dispatch: push: paths: - "bdk-ffi/**" - "bdk-python/**" pull_request: paths: - "bdk-ffi/**" - "bdk-python/**" jobs: build-manylinux_2_28-x86_64-wheels: name: "Build and test Manylinux 2.28 x86_64 wheels" runs-on: ubuntu-20.04 defaults: run: working-directory: bdk-python 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: - cp38-cp38 - cp39-cp39 - cp310-cp310 - cp311-cp311 - cp312-cp312 steps: - name: "Checkout" uses: actions/checkout@v3 with: submodules: true - name: "Install Rust 1.77.1" uses: actions-rs/toolchain@v1 with: toolchain: 1.77.1 - name: "Generate bdk.py and binaries" run: bash ./scripts/generate-linux.sh - 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: ${PYBIN}/python setup.py bdist_wheel --plat-name manylinux_2_28_x86_64 --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@v3 with: name: bdkpython-manylinux_2_28_x86_64-${{ matrix.python }} path: /home/runner/work/bdk-ffi/bdk-ffi/bdk-python/dist/*.whl build-macos-arm64-wheels: name: "Build and test macOS arm64 wheels" runs-on: macos-13 defaults: run: working-directory: bdk-python strategy: matrix: python: - "3.8" - "3.9" - "3.10" - "3.11" - "3.12" steps: - name: "Checkout" uses: actions/checkout@v3 with: submodules: true - 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: "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 setup.py bdist_wheel --plat-name macosx_11_0_arm64 --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@v3 with: name: bdkpython-macos-arm64-${{ matrix.python }} path: /Users/runner/work/bdk-ffi/bdk-ffi/bdk-python/dist/*.whl build-macos-x86_64-wheels: name: "Build and test macOS x86_64 wheels" runs-on: macos-13 defaults: run: working-directory: bdk-python strategy: matrix: python: - "3.8" - "3.9" - "3.10" - "3.11" - "3.12" steps: - name: "Checkout" uses: actions/checkout@v3 with: submodules: true - 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: "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 setup.py bdist_wheel --plat-name macosx_11_0_x86_64 --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@v3 with: name: bdkpython-macos-x86_64-${{ matrix.python }} path: /Users/runner/work/bdk-ffi/bdk-ffi/bdk-python/dist/*.whl build-windows-wheels: name: "Build and test Windows wheels" runs-on: windows-2022 defaults: run: working-directory: bdk-python strategy: matrix: python: - "3.8" - "3.9" - "3.10" - "3.11" - "3.12" steps: - name: "Checkout" uses: actions/checkout@v3 with: submodules: true - 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: "Build wheel" run: python setup.py bdist_wheel --verbose - name: "Upload artifact test" uses: actions/upload-artifact@v3 with: name: bdkpython-windows-${{ matrix.python }} path: D:\a\bdk-ffi\bdk-ffi\bdk-python\dist\*.whl - name: "Install dependencies" run: Get-ChildItem 'D:\a\bdk-ffi\bdk-ffi\bdk-python\dist\*.whl' | ForEach-Object {pip install $_.FullName} shell: powershell - name: "Run tests" run: python -m unittest discover --start "./tests/" --pattern "test_offline_*.py" --verbose