Skip to content

Publish using trusted publishing; fix broken source archive #32

Publish using trusted publishing; fix broken source archive

Publish using trusted publishing; fix broken source archive #32

# Adapted from https://github.com/scikit-image/scikit-image/blob/main/.github/workflows/wheel_tests_and_release.yml
name: Build Wheels and Release
on:
push:
tags:
- 'v*'
branches:
- maintenance/**
- '!main'
env:
CIBW_BUILD_VERBOSITY: 2
CIBW_BEFORE_BUILD: pip install numpy
CIBW_TEST_REQUIRES: "-r requirements.txt pytest"
CIBW_TEST_COMMAND: pytest --pyargs cesium
CIBW_ENVIRONMENT: PIP_PREFER_BINARY=1
permissions:
contents: read
jobs:
build_linux_wheels:
name: Build python ${{ matrix.cibw_python }} ${{ matrix.cibw_arch }} wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
cibw_python: ["cp310-*", "cp311-*", "cp312-*"]
cibw_manylinux: [manylinux2014]
cibw_arch: ["x86_64"]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v3
name: Install Python
with:
python-version: '3.10'
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel
- name: Build the wheel
run: |
python -m cibuildwheel --output-dir dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}
CIBW_ARCHS_LINUX: ${{ matrix.cibw_arch }}
CIBW_SKIP: "*-musllinux_*"
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.cibw_manylinux }}
CIBW_ENVIRONMENT_PASS_LINUX: CESIUM_LINK_FLAGS
CESIUM_LINK_FLAGS: "-Wl,--strip-debug"
- uses: actions/upload-artifact@v3
with:
name: wheels
path: ./dist/*.whl
build_macos_wheels:
name: Build python ${{ matrix.cibw_python }} ${{ matrix.cibw_arch }} wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest]
cibw_python: [ "cp38-*", "cp39-*", "cp310-*", "cp311-*"]
cibw_arch: [ "x86_64", "arm64"] #, "universal2"]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v3
name: Install Python
with:
python-version: '3.10'
# See:
# https://cibuildwheel.readthedocs.io/en/stable/faq/#macos-building-cpython-38-wheels-on-arm64
# https://github.com/pypa/cibuildwheel/issues/1414
- name: Install experimental MacOSX Py38
if: startsWith(matrix.cibw_python, 'cp38') && (matrix.cibw_arch == 'arm64')
run: |
curl -o /tmp/Python38.pkg https://www.python.org/ftp/python/3.8.10/python-3.8.10-macos11.pkg
sudo installer -pkg /tmp/Python38.pkg -target /
sh "/Applications/Python 3.8/Install Certificates.command"
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel
- name: Build wheels for CPython Mac OS
run: |
if [[ "$CIBW_ARCHS_MACOS" == arm64 ]]; then
# SciPy requires 12.0 on arm to prevent kernel panics
# https://github.com/scipy/scipy/issues/14688
# so being conservative, we just do the same here
export MACOSX_DEPLOYMENT_TARGET=12.0
else
export MACOSX_DEPLOYMENT_TARGET=10.9
fi
echo MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET}
python -m cibuildwheel --output-dir dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}
CIBW_ARCHS_MACOS: ${{ matrix.cibw_arch }}
CIBW_MANYLINUX_X86_64_IMAGE: manylinux1
CIBW_TEST_SKIP: "*-macosx_arm64"
- uses: actions/upload-artifact@v3
with:
name: wheels
path: ./dist/*.whl
build_windows_wheels:
name: Build ${{ matrix.cibw_arch }} wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest]
cibw_arch: ["AMD64"]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v3
name: Install Python
with:
python-version: '3.10'
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel
- name: Build Windows wheels for CPython
run: |
python -m cibuildwheel --output-dir dist
env:
# Skip pypy
CIBW_BUILD: "cp3?-*"
CIBW_ARCHS_WINDOWS: ${{ matrix.cibw_arch }}
# -Wl,-S equivalent to gcc's -Wl,--strip-debug
LDFLAGS: "-Wl,-S"
- uses: actions/upload-artifact@v3
with:
name: wheels
path: ./dist/*.whl
deploy:
name: Release
needs: [build_linux_wheels, build_macos_wheels, build_windows_wheels]
if: github.repository_owner == 'cesium-ml' && startsWith(github.ref, 'refs/tags/v') && always()
runs-on: ubuntu-latest
permissions:
contents: write # for softprops/action-gh-release to create GitHub release
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.10'
- name: Install build tools
run: |
python -m pip install --upgrade pip
pip install build setuptools_scm
- name: Build the source distribution
run: |
pyproject-build . --sdist --no-isolation --skip-dependency-check
ls -la ${{ github.workspace }}/dist
- uses: actions/[email protected]
id: download
with:
name: wheels
path: ./dist
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@81e9d935c883d0b210363ab89cf05f3894778450 # v1.8.14
- name: Github release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}