Publish bdkpython to PyPI #31
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: Publish bdkpython to PyPI | |
on: [workflow_dispatch] | |
# We use manylinux2014 because older CentOS versions used by 2010 and 1 have a very old glibc version, which | |
# makes it very hard to use GitHub's javascript actions (checkout, upload-artifact, etc). | |
# They mount their own nodejs interpreter inside your container, but since that's not statically linked it | |
# tries to load glibc and fails because it requires a more recent version. | |
jobs: | |
build-manylinux_2_28-x86_64-wheels: | |
name: "Build Manylinux 2.28 x86_64 wheel" | |
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: # Update this list whenever the docker image is updated (check /opt/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 | |
- 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 macOS arm64 wheel" | |
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 | |
- name: "Upload artifacts" | |
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 macOS x86_64 wheel" | |
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-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 | |
- 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 Windows wheel" | |
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 | |
- 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 artifacts" | |
uses: actions/upload-artifact@v3 | |
with: | |
name: bdkpython-win-${{ matrix.python }} | |
path: D:\a\bdk-ffi\bdk-ffi\bdk-python\dist\*.whl | |
publish-pypi: | |
name: "Publish on PyPI" | |
runs-on: ubuntu-20.04 | |
defaults: | |
run: | |
working-directory: bdk-python | |
needs: [build-manylinux_2_28-x86_64-wheels, build-macos-arm64-wheels, build-macos-x86_64-wheels, build-windows-wheels] | |
steps: | |
- name: "Checkout" | |
uses: actions/checkout@v3 | |
- name: "Download artifacts in dist/ directory" | |
uses: actions/download-artifact@v3 | |
with: | |
path: dist/ | |
# - name: "Publish on test PyPI" | |
# uses: pypa/gh-action-pypi-publish@release/v1 | |
# with: | |
# user: __token__ | |
# password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
# repository_url: https://test.pypi.org/legacy/ | |
# packages_dir: dist/*/ | |
- name: "Publish on PyPI" | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
packages_dir: dist/*/ |