Build sdist and Wheels #149
Workflow file for this run
This file contains hidden or 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: Build sdist and Wheels | |
on: | |
push: | |
branches: [main] | |
release: | |
types: | |
- published | |
workflow_dispatch: | |
jobs: | |
build_wheels: | |
strategy: | |
matrix: | |
# macos-13 is for intel | |
os: ["ubuntu-24.04", "ubuntu-24.04-arm", "windows-latest", "macos-13", "macos-latest"] | |
runs-on: ${{ matrix.os }} | |
name: Build wheels on ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
cache: "pip" | |
- name: Cythonize | |
shell: bash | |
run: | | |
pip install -r requirements.txt | |
make cython | |
- name: Build | |
uses: pypa/[email protected] | |
env: | |
CIBW_TEST_REQUIRES: "pytest" | |
CIBW_TEST_COMMAND: "pytest {package}/test" | |
CIBW_SKIP: "pp* cp38-macosx_*" | |
- name: Build sdist | |
if: runner.os == 'Linux' && runner.arch == 'X64' | |
run: | | |
pip install build | |
python -m build -s -o wheelhouse | |
- name: Upload Wheels to artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-${{ matrix.os }} | |
path: wheelhouse | |
# combine all wheels into one artifact | |
combine_wheels: | |
needs: [build_wheels] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
# unpacks all CIBW artifacts into dist/ | |
pattern: wheels-* | |
path: dist | |
merge-multiple: true | |
- name: Upload Wheels to artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-all | |
path: dist | |
# https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml | |
upload_pypi: | |
needs: [build_wheels] | |
runs-on: ubuntu-latest | |
environment: pypi | |
permissions: | |
id-token: write | |
if: github.event_name == 'release' && github.event.action == 'published' | |
# or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this) | |
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
# unpacks all CIBW artifacts into dist/ | |
pattern: wheels-* | |
path: dist | |
merge-multiple: true | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
#with: | |
# To test: repository-url: https://test.pypi.org/legacy/ |