Skip to content

Update GitHub action for building wheels. #165

Update GitHub action for building wheels.

Update GitHub action for building wheels. #165

Workflow file for this run

on:
workflow_dispatch:
pull_request:
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"
- "[0-9]+.[0-9]+.[0-9]+rc[0-9]+"
- "[0-9]+.[0-9]+.[0-9]+dev[0-9]+"
jobs:
test_linux:
name: Test (${{ matrix.os }}, ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-20.04
python-version:
# - 2.7
# - 3.5
- 3.6
- 3.7
- 3.8
- 3.9
- "3.10"
- 3.11
- 3.12
# - pypy-2.7
- pypy-3.8
- pypy-3.9
- pypy-3.10
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Update pip
run: python -m pip install -U pip wheel setuptools
- name: Install tox
run: python -m pip install "tox<4.0.0" "tox-gh-actions<3.0.0"
- name: Test with tox
run: python -m tox
- name: Store partial coverage reports
uses: actions/upload-artifact@v3
with:
name: coverage
path: .coverage.*
# test_aarch64_linux:
# name: Test (${{ matrix.python.os }}, ${{ matrix.python.python-version }}, aarch64)
# runs-on: ${{ matrix.python.os }}
# strategy:
# matrix:
# python:
# #- {os: ubuntu-20.04, python-version: 3.7, pyver: py37}
# #- {os: ubuntu-20.04, python-version: 3.8, pyver: py38}
# #- {os: ubuntu-20.04, python-version: 3.9, pyver: py39}
# - {os: ubuntu-20.04, python-version: "3.10", pyver: py310}
# env:
# py: python${{ matrix.python.python-version }}
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# - name: Set up QEMU
# id: qemu
# uses: docker/setup-qemu-action@v1
# - name: Test with tox
# run: |
# docker run --rm -v ${{ github.workspace }}:/io:rw --workdir=/io \
# arm64v8/ubuntu \
# bash -exc 'apt-get update && \
# apt install software-properties-common -y && \
# add-apt-repository ppa:deadsnakes/ppa -y && \
# apt install -y ${{ env.py }} && \
# apt install -y ${{ env.py }}-venv && \
# ${{ env.py }} -m venv .env && \
# source .env/bin/activate && \
# pip install -U pip wheel setuptools && \
# pip install "tox<4.0.0" "tox-gh-actions<3.0.0" && \
# tox -e ${{ matrix.python.pyver }} && \
# deactivate'
test_macos:
name: Test (${{ matrix.os }}, ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- macos-latest
python-version:
# - 2.7
# - 3.5
- 3.6
- 3.7
- 3.8
- 3.9
- "3.10"
- 3.11
- 3.12
# - pypy-2.7
- pypy-3.8
- pypy-3.9
- pypy-3.10
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Update pip
run: python -m pip install -U pip wheel setuptools
- name: Install tox
run: python -m pip install "tox<4.0.0" "tox-gh-actions<3.0.0"
- name: Test with tox
run: python -m tox
- name: Store partial coverage reports
uses: actions/upload-artifact@v3
with:
name: coverage
path: .coverage.*
# test_windows_py27:
# name: Test (${{ matrix.os }}, ${{ matrix.python-version }})
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os:
# - windows-latest
# python-version:
# - 2.7
# steps:
# - name: Checkout code
# uses: actions/checkout@v3
# - name: Setup Python ${{ matrix.python-version }}
# uses: actions/setup-python@v4
# with:
# python-version: ${{ matrix.python-version }}
# - name: Update pip
# run: python -m pip install -U pip wheel setuptools
# - name: Install tox
# run: python -m pip install "tox<4.0.0" "tox-gh-actions<3.0.0"
# - name: Test with tox
# run: python -m tox -e py27,py27-without-extensions
test_windows:
name: Test (${{ matrix.os }}, ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- windows-latest
python-version:
# - 3.5
- 3.6
- 3.7
- 3.8
- 3.9
- "3.10"
- 3.11
- 3.12
# - pypy-2.7
- pypy-3.8
- pypy-3.9
- pypy-3.10
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Update pip
run: python -m pip install -U pip wheel setuptools
- name: Install tox
run: python -m pip install "tox<4.0.0" "tox-gh-actions<3.0.0"
- name: Test with tox
run: python -m tox
sdist:
name: Build source distribution
needs:
- test_linux
- test_macos
- test_windows
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
submodules: true
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Build full source distribution as tar.gz
run: python setup.py sdist
- name: Install the wheel package
run: pip install wheel
- name: Build pure Python source wheel
run: WRAPT_INSTALL_EXTENSIONS=false python setup.py bdist_wheel
- name: Store built wheels
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/*
# bdist_wheel_legacy:
# name: Build wheels (2.7-3.5) on ${{ matrix.os }}
# needs:
# - test_linux
# - test_macos
# - test_windows_py27
# - test_windows
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: [ubuntu-20.04, windows-latest, macos-latest]
# steps:
# - uses: actions/checkout@v3
# - name: Build wheels
# uses: pypa/[email protected]
# with:
# output-dir: dist
# env:
# WRAPT_INSTALL_EXTENSIONS: true
# CIBW_BUILD: cp27* cp35*
# CIBW_SKIP: cp27-win*
# CIBW_BUILD_VERBOSITY: 1
# - uses: actions/upload-artifact@v3
# with:
# name: dist
# path: dist/*.whl
bdist_wheel:
name: Build wheels (3.6+) on ${{ matrix.os }} for ${{ matrix.arch }}
needs:
- test_linux
#- test_aarch64_linux
- test_macos
# - test_windows_py27
- test_windows
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, windows-latest, macos-latest]
arch: [auto]
include:
- os: ubuntu-20.04
arch: aarch64
- os: macos-latest
arch: arm64
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
if: ${{ matrix.arch == 'aarch64' }}
uses: docker/setup-qemu-action@v2
- name: Build wheels
uses: pypa/[email protected]
with:
output-dir: dist
env:
WRAPT_INSTALL_EXTENSIONS: true
CIBW_SKIP: pp*
CIBW_BUILD_VERBOSITY: 1
CIBW_ARCHS: ${{ matrix.arch }}
- uses: actions/upload-artifact@v3
with:
name: dist
path: dist/*.whl
coveralls:
name: Generate code coverage report
if: ${{ false }} # disable for now
needs:
- test_linux
- test_macos
# - test_windows_py27
- test_windows
runs-on: ubuntu-20.04
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install coverage package
run: python -m pip install -U coverage
- name: Download partial coverage reports
uses: actions/download-artifact@v3
with:
name: coverage
- name: Combine coverage
run: python -m coverage combine
- name: Report coverage
run: python -m coverage report
- name: Export coverage to XML
run: python -m coverage xml
- name: Upload coverage statistics to Coveralls
uses: AndreMiras/coveralls-python-action@develop