Test wheel-builder on changes to it #25
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: Wheel Builder | |
permissions: | |
contents: read | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
description: The version to build | |
required: true | |
push: | |
tags: | |
- '*.*.*' | |
pull_request: | |
paths: | |
- .github/workflows/wheel-builder.yml | |
- pyproject.toml | |
- setup.cfg | |
- setup.py | |
jobs: | |
manylinux: | |
runs-on: ubuntu-latest | |
container: ghcr.io/pyca/${{ matrix.MANYLINUX.CONTAINER }} | |
strategy: | |
matrix: | |
PYTHON: | |
- { VERSION: "cp36-cp36m", PATH: "/opt/python/cp36-cp36m/bin/python", ABI_VERSION: 'cp36' } | |
MANYLINUX: | |
- { NAME: "manylinux2014_x86_64", CONTAINER: "cryptography-manylinux2014:x86_64" } | |
- { name: "manylinux_2_28_x86_64", CONTAINER: "cryptography-manylinux_2_28:x86_64"} | |
- { name: "musllinux_1_1_x86_64", CONTAINER: "cryptography-musllinux_1_1:x86_64"} | |
name: "${{ matrix.PYTHON.VERSION }} for ${{ matrix.MANYLINUX.NAME }}" | |
steps: | |
- uses: actions/checkout@v3.6.0 | |
with: | |
# The tag to build or the tag received by the tag event | |
ref: ${{ github.event.inputs.version || github.ref }} | |
persist-credentials: false | |
- run: ${{ matrix.PYTHON.PATH }} -m venv .venv | |
- name: Install python dependencies | |
run: .venv/bin/pip install -U pip cffi wheel | |
- name: Make sdist | |
run: .venv/bin/python setup.py sdist | |
- run: tar zxvf dist/PyNaCl*.tar.gz && mkdir tmpwheelhouse | |
- run: | | |
if [ -n "${{ matrix.PYTHON.ABI_VERSION }}" ]; then | |
PY_LIMITED_API="--py-limited-api=${{ matrix.PYTHON.ABI_VERSION }}" | |
fi | |
cd PyNaCl* | |
LIBSODIUM_MAKE_ARGS="-j$(nproc)" ../.venv/bin/python setup.py bdist_wheel $PY_LIMITED_API && mv dist/PyNaCl*.whl ../tmpwheelhouse | |
- run: auditwheel repair --plat ${{ matrix.MANYLINUX.NAME }} tmpwheelhouse/PyNaCl*.whl -w wheelhouse/ | |
- run: .venv/bin/pip install pynacl --no-index -f wheelhouse/ | |
- run: | | |
.venv/bin/python -c "import nacl.signing; key = nacl.signing.SigningKey.generate();signature = key.sign(b'test'); key.verify_key.verify(signature)" | |
- run: mkdir pynacl-wheelhouse | |
- run: mv wheelhouse/PyNaCl*.whl pynacl-wheelhouse/ | |
- uses: actions/upload-artifact@v1 | |
with: | |
name: "pynacl-${{ github.event.inputs.version }}-${{ matrix.MANYLINUX.NAME }}- ${{ matrix.PYTHON.VERSION }}" | |
path: pynacl-wheelhouse/ | |
macos: | |
runs-on: macos-11 | |
strategy: | |
matrix: | |
PYTHON: | |
- VERSION: '3.10' | |
ABI_VERSION: 'cp36' | |
DOWNLOAD_URL: 'https://www.python.org/ftp/python/3.10.1/python-3.10.1-macos11.pkg' | |
BIN_PATH: '/Library/Frameworks/Python.framework/Versions/3.10/bin/python3' | |
name: "Python ${{ matrix.PYTHON.VERSION }} for ABI ${{ matrix.PYTHON.ABI_VERSION }} on macOS" | |
steps: | |
- uses: actions/checkout@v3.6.0 | |
with: | |
# The tag to build or the tag received by the tag event | |
ref: ${{ github.event.inputs.version || github.ref }} | |
persist-credentials: false | |
- run: | | |
curl "$PYTHON_DOWNLOAD_URL" -o python.pkg | |
sudo installer -pkg python.pkg -target / | |
env: | |
PYTHON_DOWNLOAD_URL: ${{ matrix.PYTHON.DOWNLOAD_URL }} | |
- run: ${{ matrix.PYTHON.BIN_PATH }} -m pip install -U virtualenv | |
- run: ${{ matrix.PYTHON.BIN_PATH }} -m virtualenv venv | |
- run: venv/bin/pip install -U pip wheel cffi | |
- name: Make sdist | |
run: venv/bin/python setup.py sdist | |
- run: tar zxvf dist/PyNaCl*.tar.gz && mkdir wheelhouse | |
- name: Build the wheel | |
run: | | |
cd PyNaCl* | |
LIBSODIUM_MAKE_ARGS="-j$(sysctl -n hw.ncpu)" \ | |
../venv/bin/python setup.py bdist_wheel --py-limited-api=${{ matrix.PYTHON.ABI_VERSION }} && mv dist/PyNaCl*.whl ../wheelhouse | |
env: | |
PYTHON_VERSION: ${{ matrix.PYTHON.ABI_VERSION }} | |
MACOSX_DEPLOYMENT_TARGET: '10.10' | |
CFLAGS: '-arch arm64 -arch x86_64' | |
ARCHFLAGS: '-arch arm64 -arch x86_64' | |
_PYTHON_HOST_PLATFORM: 'macosx-10.9-universal2' | |
- run: venv/bin/pip install -f wheelhouse --no-index pynacl | |
- run: | | |
venv/bin/python -c "import nacl.signing; key = nacl.signing.SigningKey.generate();signature = key.sign(b'test'); key.verify_key.verify(signature)" | |
- run: mkdir pynacl-wheelhouse | |
- run: mv wheelhouse/PyNaCl*.whl pynacl-wheelhouse/ | |
- uses: actions/upload-artifact@v1 | |
with: | |
name: "pynacl-${{ github.event.inputs.version }}-macOS-${{ matrix.PYTHON.VERSION }}" | |
path: pynacl-wheelhouse/ | |
windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
WINDOWS: | |
- {ARCH: 'x86', SODIUM_ARCH: 'Win32', VS_ARCH: 'x86'} | |
- {ARCH: 'x64', SODIUM_ARCH: 'x64', VS_ARCH: 'amd64'} | |
PYTHON: | |
- {VERSION: "3.9", SODIUM_MSVC_VERSION: "v142", "ABI_VERSION": "cp36"} | |
name: "${{ matrix.PYTHON.VERSION }} ${{ matrix.WINDOWS.ARCH }} ${{ matrix.PYTHON.ABI_VERSION }}" | |
steps: | |
- uses: actions/checkout@v3.6.0 | |
with: | |
# The tag to build or the tag received by the tag event | |
ref: ${{ github.event.inputs.version || github.ref }} | |
persist-credentials: false | |
- name: Setup python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.PYTHON.VERSION }} | |
architecture: ${{ matrix.WINDOWS.ARCH }} | |
- name: Extract libsodium libraries | |
run: | | |
Expand-Archive src/libsodium-1.0.18-stable-msvc.zip -DestinationPath c:\ | |
shell: powershell | |
- name: Add sodium to paths | |
run: | | |
echo "INCLUDE=C:/libsodium/include;$INCLUDE" >> $GITHUB_ENV | |
echo "LIB=C:/libsodium/${{ matrix.WINDOWS.SODIUM_ARCH }}/release/${{ matrix.PYTHON.SODIUM_MSVC_VERSION }}/static;$LIB" >> $GITHUB_ENV | |
shell: bash | |
- name: Install wheel and our Python dependencies | |
run: python -m pip install -U pip wheel cffi | |
- name: Make sdist | |
run: python setup.py sdist | |
- run: tar zxvf dist/PyNaCl*.tar.gz && mkdir wheelhouse | |
shell: bash | |
- name: Build the wheel | |
run: | | |
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -no_logo -arch=${{ matrix.WINDOWS.VS_ARCH }} | |
cd PyNaCl* && python setup.py bdist_wheel --py-limited-api=${{ matrix.PYTHON.ABI_VERSION }} && mv dist/PyNaCl*.whl ../wheelhouse | |
shell: cmd | |
env: | |
PYNACL_SODIUM_LIBRARY_NAME: sodium | |
PYNACL_SODIUM_STATIC: 1 | |
SODIUM_INSTALL: system | |
- name: Test installing the wheel | |
run: pip install -f wheelhouse pynacl --no-index | |
- name: Test the installed wheel | |
run: | | |
python -c "import nacl.signing; key = nacl.signing.SigningKey.generate();signature = key.sign(b'test'); key.verify_key.verify(signature)" | |
- run: mkdir pynacl-wheelhouse | |
- run: move wheelhouse\PyNaCl*.whl pynacl-wheelhouse\ | |
- uses: actions/upload-artifact@v1 | |
with: | |
name: "pynacl-${{ github.event.inputs.version }}-win-${{ matrix.WINDOWS.ARCH }}-${{ matrix.PYTHON.VERSION }}" | |
path: pynacl-wheelhouse\ |