Mac arm64 wheels (#50) #131
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: CI | |
on: [push, pull_request] | |
permissions: read-all | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_x86_64 | |
python-arch: 'x86_64' | |
python-version: '3.8' | |
numpy-version: '1.17.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_x86_64 | |
python-arch: 'x86_64' | |
python-version: '3.9' | |
numpy-version: '1.19.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_x86_64 | |
python-arch: 'x86_64' | |
python-version: '3.10' | |
numpy-version: '1.21.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_x86_64 | |
python-arch: 'x86_64' | |
python-version: '3.11' | |
numpy-version: '1.23.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_x86_64 | |
python-arch: 'x86_64' | |
python-version: '3.12' | |
numpy-version: '1.26.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_aarch64 | |
python-arch: 'aarch64' | |
python-version: '3.8' | |
numpy-version: '1.19.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_aarch64 | |
python-arch: 'aarch64' | |
python-version: '3.9' | |
numpy-version: '1.19.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_aarch64 | |
python-arch: 'aarch64' | |
python-version: '3.10' | |
numpy-version: '1.21.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_aarch64 | |
python-arch: 'aarch64' | |
python-version: '3.11' | |
numpy-version: '1.23.*' | |
- os-image: ubuntu-latest | |
os-name: linux | |
docker-image: quay.io/pypa/manylinux2014_aarch64 | |
python-arch: 'aarch64' | |
python-version: '3.12' | |
numpy-version: '1.26.*' | |
- os-image: macos-11 | |
os-name: mac | |
macos-min-version: '10.9' | |
python-arch: 'x86_64' | |
python-version: '3.8' | |
numpy-version: '1.17.*' | |
- os-image: macos-11 | |
os-name: mac | |
macos-min-version: '10.9' | |
python-arch: 'x86_64' | |
python-version: '3.9' | |
numpy-version: '1.19.*' | |
- os-image: macos-11 | |
os-name: mac | |
macos-min-version: '10.9' | |
python-arch: 'x86_64' | |
python-version: '3.10' | |
numpy-version: '1.21.*' | |
- os-image: macos-11 | |
os-name: mac | |
macos-min-version: '10.9' | |
python-arch: 'x86_64' | |
python-version: '3.11' | |
numpy-version: '1.23.*' | |
- os-image: macos-11 | |
os-name: mac | |
macos-min-version: '10.9' | |
python-arch: 'x86_64' | |
python-version: '3.12' | |
numpy-version: '1.26.*' | |
- os-image: macos-14 # M1 | |
os-name: mac | |
python-arch: arm64 | |
macos-min-version: '11.0' | |
python-version: '3.10' | |
numpy-version: '1.21.*' | |
- os-image: macos-14 # M1 | |
os-name: mac | |
python-arch: arm64 | |
macos-min-version: '11.0' | |
python-version: '3.11' | |
numpy-version: '1.23.*' | |
- os-image: macos-14 # M1 | |
os-name: mac | |
python-arch: arm64 | |
macos-min-version: '11.0' | |
python-version: '3.12' | |
numpy-version: '1.26.*' | |
- os-image: windows-2019 | |
os-name: windows | |
python-arch: 'x86_64' | |
python-version: '3.8' | |
numpy-version: '1.17.*' | |
- os-image: windows-2019 | |
os-name: windows | |
python-arch: 'x86_64' | |
python-version: '3.9' | |
numpy-version: '1.19.*' | |
- os-image: windows-2019 | |
os-name: windows | |
python-arch: 'x86_64' | |
python-version: '3.10' | |
numpy-version: '1.21.*' | |
- os-image: windows-2019 | |
os-name: windows | |
python-arch: 'x86_64' | |
python-version: '3.11' | |
numpy-version: '1.23.*' | |
- os-image: windows-2019 | |
os-name: windows | |
python-arch: 'x86_64' | |
python-version: '3.12' | |
numpy-version: '1.26.*' | |
runs-on: ${{ matrix.config.os-image }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Set up QEMU | |
if: matrix.config.python-arch == 'aarch64' | |
uses: docker/setup-qemu-action@v3 | |
- name: Build wheels (Linux) | |
if: matrix.config.os-name == 'linux' | |
run: docker run --rm -e PYTHON_ARCH -e PYTHON_VERSION -e NUMPY_VERSION -v `pwd`:/io ${{ matrix.config.docker-image }} /io/.github/scripts/build-linux.sh | |
env: | |
PYTHON_ARCH: ${{ matrix.config.python-arch }} | |
PYTHON_VERSION: ${{ matrix.config.python-version }} | |
NUMPY_VERSION: ${{ matrix.config.numpy-version }} | |
- name: Build wheels (macOS) | |
if: matrix.config.os-name == 'mac' | |
run: .github/scripts/build-macos.sh | |
env: | |
MACOS_MIN_VERSION: ${{ matrix.config.macos-min-version }} | |
PYTHON_ARCH: ${{ matrix.config.python-arch }} | |
PYTHON_VERSION: ${{ matrix.config.python-version }} | |
NUMPY_VERSION: ${{ matrix.config.numpy-version }} | |
- name: Setup Python (Windows) | |
if: matrix.config.os-name == 'windows' | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.config.python-version }} | |
- name: Remove pre-installed vcpkg | |
if: matrix.config.os-name == 'windows' | |
run: | | |
rm -rf "$VCPKG_INSTALLATION_ROOT" | |
echo "VCPKG_INSTALLATION_ROOT=" >> $GITHUB_ENV | |
echo "VCPKG_ROOT=" >> $GITHUB_ENV | |
shell: bash | |
- name: Build wheels (Windows) | |
if: matrix.config.os-name == 'windows' | |
run: .github/scripts/build-windows.ps1 | |
shell: pwsh | |
env: | |
PYTHON_VERSION: ${{ matrix.config.python-version }} | |
PYTHON_ARCH: ${{ matrix.config.python-arch }} | |
NUMPY_VERSION: ${{ matrix.config.numpy-version }} | |
- name: Store wheels as artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
docs: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Download wheels from artifact storage | |
uses: actions/download-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
- name: Install lensfunpy from wheel | |
run: | | |
pip install dist/lensfunpy*cp310*manylinux*x86_64*.whl | |
pip install -r dev-requirements.txt | |
- name: Build docs | |
run: sphinx-build -b html docs dist-docs | |
- name: Store docs HTML as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: docs | |
path: dist-docs | |
publish-wheels: | |
runs-on: ubuntu-latest | |
needs: [build, docs] | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
steps: | |
- name: Download wheels from artifact storage | |
uses: actions/download-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
- name: Upload wheels to PyPI | |
run: | | |
pip install twine | |
twine upload -u __token__ -p ${{ secrets.PYPI_TOKEN }} --skip-existing dist/* | |
publish-docs: | |
runs-on: ubuntu-latest | |
needs: [publish-wheels] | |
permissions: | |
contents: write | |
steps: | |
- name: Download docs HTML from artifact storage | |
uses: actions/download-artifact@v3 | |
with: | |
name: docs | |
path: dist-docs | |
- name: Upload docs to GitHub Pages | |
uses: peaceiris/actions-gh-pages@47a6d63ea8b47b19328e258563aa1fbe224c0a23 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
PUBLISH_BRANCH: gh-pages | |
PUBLISH_DIR: ./dist-docs |