Add a GitHub Actions workflow for automatically publishing releases to PyPI #26
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 is autogenerated by maturin v1.5.1, and minimally edited by hand. | |
# See comments below for the edited sections. | |
# | |
# To update, run | |
# | |
# maturin generate-ci github | |
# | |
# and re-add the edits. | |
name: CI | |
on: | |
push: | |
branches: | |
- main | |
- master | |
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: ubuntu-latest | |
target: x86 | |
- runner: ubuntu-latest | |
target: aarch64 | |
- runner: ubuntu-latest | |
target: armv7 | |
# BEGIN EDITED SECTION # | |
# The `s390x` and `ppc64le` architectures have been removed as they are not supported. | |
# END EDITED SECTION # | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter | |
sccache: 'true' | |
manylinux: auto | |
# BEGIN EDITED SECTION # | |
# Install OpenSSL development headers into the manylinux docker container | |
# used to build the wheels. | |
# Note: libatomic is necessary for the build to succeed. | |
before-script-linux: | | |
set -ex | |
# If we're running on rhel centos, install needed packages. | |
if command -v yum &> /dev/null; then | |
yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic | |
# If we're running on i686 we need to symlink libatomic | |
# in order to build openssl with -latomic flag. | |
if [[ ! -d "/usr/lib64" ]]; then | |
ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so | |
fi | |
OPENSSL_LIB_DIR=/usr/lib | |
else | |
# If we're running on debian-based system. | |
apt update -y && apt-get install -y libssl-dev openssl pkg-config | |
OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu | |
fi | |
export OPENSSL_INCLUDE_DIR=/usr/include/openssl | |
ls $OPENSSL_LIB_DIR | |
ls $OPENSSL_INCLUDE_DIR | |
ls /usr/lib | |
ls /usr/lib/x86_64-linux-gnu | |
ls /usr/lib64 | |
echo "OpenSSL Lib Dir: $OPENSSL_LIB_DIR" | |
echo "OpenSSL Include Dir: $OPENSSL_INCLUDE_DIR" | |
pkg-config --libs --cflags openssl | |
# END EDITED SECTION # | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.platform.target }} | |
path: dist | |
# BEGIN EDITED SECTION # | |
# The `windows` job has been removed as it is not a supported platform. | |
# END EDITED SECTION # | |
macos: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: macos-latest | |
target: x86_64 | |
- runner: macos-14 | |
target: aarch64 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --find-interpreter | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.platform.target }} | |
path: dist | |
sdist: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: dist | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
if: "startsWith(github.ref, 'refs/tags/')" | |
# BEGIN EDITED SECTION # | |
# Note: The `windows` job was removed from this list. | |
needs: [linux, macos, sdist] | |
# END EDITED SECTION # | |
steps: | |
- uses: actions/download-artifact@v4 | |
- name: Publish to PyPI | |
uses: PyO3/maturin-action@v1 | |
# BEGIN EDITED SECTION | |
# The `MATURIN_PYPI_TOKEN` env var was removed in order to authenticate | |
# to PyPI using the Trusted Publishers feature instead. | |
# END EDITED SECTION. | |
with: | |
command: upload | |
args: --non-interactive --skip-existing wheels-*/* |