Add simplified Python CI workflow

This commit is contained in:
thunderbiscuit 2022-11-10 13:43:57 -05:00
parent da4c792046
commit 8240d8dc99
No known key found for this signature in database
GPG Key ID: 88253696EB836462
3 changed files with 299 additions and 2 deletions

View File

@ -0,0 +1,133 @@
name: Build Python wheels
on: [push, pull_request]
# 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-manylinux2014-x86_64-wheel:
name: 'Build Manylinux 2014 x86_64 wheel'
runs-on: ubuntu-latest
container:
image: quay.io/pypa/manylinux2014_x86_64
env:
PLAT: manylinux2014_x86_64
PYBIN: '/opt/python/${{ matrix.python }}/bin'
strategy:
matrix:
python: # Update this list whenever the docker image is updated (check /opt/python/)
# - cp36-cp36m
# - cp37-cp37m
# - cp38-cp38
# - cp39-cp39
- cp310-cp310
# - pp37-pypy37_pp73
# - pp38-pypy38_pp73
steps:
- name: checkout
uses: actions/checkout@v2
with:
submodules: true
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: install requirements
run: |
cd bdk-python
${PYBIN}/pip install -r requirements.txt
- name: generate bindings
run: |
cd bdk-python
bash generate.sh
- name: build wheel
run: |
cd bdk-python
${PYBIN}/pip wheel . --no-deps -w /tmp/wheelhouse
- name: repair wheel
run: |
cd bdk-python
auditwheel repair /tmp/wheelhouse/* --plat "$PLAT" -w /tmp/wheelhouse-repaired
- uses: actions/upload-artifact@v2
with:
name: bdkpython-manylinux2014-x86_64-${{ matrix.python }}
path: /tmp/wheelhouse-repaired/*.whl
build-macos-universal-wheel:
name: 'Build macOS universal wheel'
runs-on: macos-latest
strategy:
matrix:
python:
# - '3.7'
# - '3.8'
# - '3.9'
- '3.10'
steps:
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- run: python3 --version
- name: checkout
uses: actions/checkout@v2
with:
submodules: true
- run: rustup target add aarch64-apple-darwin
- run: |
cd bdk-python
pip3 install --user -r requirements.txt
- run: |
cd bdk-python
pip3 install --user wheel
- run: |
cd bdk-python
bash generate.sh
- name: build wheel
env:
ARCHFLAGS: "-arch x86_64 -arch arm64"
run: |
cd bdk-python
python3 setup.py -v bdist_wheel
- uses: actions/upload-artifact@v2
with:
name: bdkpython-macos-${{ matrix.python }}
path: dist/*.whl
build-windows-wheel:
name: 'Build windows wheel'
runs-on: windows-latest
strategy:
matrix:
python:
# - '3.7'
# - '3.8'
# - '3.9'
- '3.10'
steps:
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- run: python --version
- name: checkout
uses: actions/checkout@v2
with:
submodules: true
- run: |
cd bdk-python
pip install --user -r requirements.txt
- run: |
cd bdk-python
bash generate.sh
shell: bash
- run: |
cd bdk-python
pip install --user wheel
- name: build wheel
run: |
cd bdk-python
python setup.py -v bdist_wheel
- uses: actions/upload-artifact@v2
with:
name: bdkpython-win-${{ matrix.python }}
path: dist/*.whl

View File

@ -1,7 +1,6 @@
name: bdk-ffi CI
on: [push, pull_request]
name: CI
jobs:
build-test:

165
.github/workflows/publish-python.yaml vendored Normal file
View File

@ -0,0 +1,165 @@
name: Build and publish Python wheels
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-manylinux2014-x86_64-wheel:
name: 'Build Manylinux 2014 x86_64 wheel'
runs-on: ubuntu-latest
container:
image: quay.io/pypa/manylinux2014_x86_64
env:
PLAT: manylinux2014_x86_64
PYBIN: '/opt/python/${{ matrix.python }}/bin'
strategy:
matrix:
python: # Update this list whenever the docker image is updated (check /opt/python/)
- cp36-cp36m
- cp37-cp37m
- cp38-cp38
- cp39-cp39
- cp310-cp310
- pp37-pypy37_pp73
- pp38-pypy38_pp73
steps:
- name: checkout
uses: actions/checkout@v2
with:
submodules: true
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: install requirements
run: |
cd bdk-python
${PYBIN}/pip install -r requirements.txt
- name: generate bindings
run: |
cd bdk-python
bash generate.sh
- name: build wheel
run: |
cd bdk-python
${PYBIN}/pip wheel . --no-deps -w /tmp/wheelhouse
- name: repair wheel
run: |
cd bdk-python
auditwheel repair /tmp/wheelhouse/* --plat "$PLAT" -w /tmp/wheelhouse-repaired
- uses: actions/upload-artifact@v2
with:
name: bdkpython-manylinux2014-x86_64-${{ matrix.python }}
path: /tmp/wheelhouse-repaired/*.whl
build-macos-universal-wheel:
name: 'Build macOS universal wheel'
runs-on: macos-latest
strategy:
matrix:
python:
- '3.7'
- '3.8'
- '3.9'
- '3.10'
steps:
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- run: python3 --version
- name: checkout
uses: actions/checkout@v2
with:
submodules: true
- run: rustup target add aarch64-apple-darwin
- run: |
cd bdk-python
pip3 install --user -r requirements.txt
- run: |
cd bdk-python
pip3 install --user wheel
- run: |
cd bdk-python
bash generate.sh
- name: build wheel
env:
ARCHFLAGS: "-arch x86_64 -arch arm64"
run: |
cd bdk-python
python3 setup.py -v bdist_wheel
- uses: actions/upload-artifact@v2
with:
name: bdkpython-macos-${{ matrix.python }}
path: dist/*.whl
build-windows-wheel:
name: 'Build windows wheel'
runs-on: windows-latest
strategy:
matrix:
python:
- '3.7'
- '3.8'
- '3.9'
- '3.10'
steps:
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- run: python --version
- name: checkout
uses: actions/checkout@v2
with:
submodules: true
- run: |
cd bdk-python
pip install --user -r requirements.txt
- run: |
cd bdk-python
bash generate.sh
shell: bash
- run: |
cd bdk-python
pip install --user wheel
- name: build wheel
run: |
cd bdk-python
python setup.py -v bdist_wheel
- uses: actions/upload-artifact@v2
with:
name: bdkpython-win-${{ matrix.python }}
path: dist/*.whl
publish-pypi:
name: 'Publish on PyPI'
runs-on: ubuntu-latest
needs: [build-manylinux2014-x86_64-wheel, build-macos-universal-wheel, build-windows-wheel]
# needs: [build-macos-universal-wheel]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: 'Download artifacts in dist/ directory'
uses: actions/download-artifact@v2
with:
path: dist/
# - name: Display structure of downloaded files
# run: ls -R
# - 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/*/