Skip to content

CI tests

CI tests #132

Workflow file for this run

name: CI tests
on:
push:
create:
jobs:
sdist:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Dependency
run: |
python -m pip install -U pip setuptools && python -m pip install -r requirements.txt
- name: Build sdist
run: make sdist
- name: Archive sdist
uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*.tar.gz
if-no-files-found: ignore
Tests:
strategy:
# Allows for matrix sub-jobs to fail without canceling the rest
fail-fast: false
matrix:
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13-dev"]
include:
- python-version: "3.13-dev"
allowed_failure: true
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
if: startsWith(matrix.python-version, '3.')
with:
python-version: ${{ matrix.python-version }}
- name: Set up Python2 (Linux)
if: matrix.python-version == '2.7' && startsWith(matrix.os, 'ubuntu')
run: |
sudo ln -fs python2 /usr/bin/python
sudo apt-get update
sudo apt-get install python-setuptools python2-dev
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python2 get-pip.py
ls -l /usr/bin/pip* /usr/local/bin/pip*
which pip
- name: Install Dependency
run: |
python -m pip install -U pip setuptools && python -m pip install -r requirements.txt
- name: Build
continue-on-error: ${{ matrix.allowed_failure || false }}
run: make local
- name: Run slow tests
continue-on-error: ${{ matrix.allowed_failure || false }}
run: make testslow
- name: Running benchmark
if: startsWith(matrix.python-version, '3.') && matrix.python-version != '3.5'
run: |
python benchmark/telco_fractions.py -n 250
python benchmark/microbench.py create pydigits
Linux:
strategy:
# Allows for matrix sub-jobs to fail without canceling the rest
fail-fast: false
matrix:
image:
- manylinux1_x86_64
- manylinux1_i686
- manylinux_2_24_i686
- manylinux_2_24_x86_64
- manylinux_2_28_x86_64
- musllinux_1_1_x86_64
pyversion: ["cp"]
include:
- image: manylinux_2_24_aarch64
pyversion: "cp37"
- image: manylinux_2_24_aarch64
pyversion: "cp38"
- image: manylinux_2_24_aarch64
pyversion: "cp39"
- image: manylinux_2_24_aarch64
pyversion: "cp310"
- image: manylinux_2_24_aarch64
pyversion: "cp311"
- image: manylinux_2_28_aarch64
pyversion: "cp312"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Dependency
run: |
python -m pip install -U pip setuptools && python -m pip install --pre -r requirements.txt
- name: Building wheel
run: |
make PYTHON_WHEEL_BUILD_VERSION="${{ matrix.pyversion }}*" sdist wheel_${{ matrix.image }}
- name: Copy wheels in dist
run: cp -v wheelhouse*/*-m*linux*.whl dist/ # manylinux / musllinux
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: dist/*cp27*.whl, dist/*cp35*.whl
- name: Archive Wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.image }}-${{ matrix.pyversion }}
path: dist/*.whl
if-no-files-found: ignore
non-Linux:
strategy:
# Allows for matrix sub-jobs to fail without canceling the rest
fail-fast: false
matrix:
#os: [macos-10.15, windows-latest]
#os: [macos-10.15, macOS-M1]
os: [macos-11.0, windows-latest]
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13-dev"]
include:
- python-version: "3.13-dev"
allowed_failure: true
runs-on: ${{ matrix.os }}
env: { MACOSX_DEPLOYMENT_TARGET: 11.0 }
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install -U pip setuptools wheel
python -m pip install --pre -r requirements.txt
- name: Build wheels
run: make sdist wheel
- name: Run slow tests
run: make testslow
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.os }}-${{ matrix.python-version }}
path: dist/*.whl
if-no-files-found: ignore
- name: Running benchmark
run: |
python benchmark/telco_fractions.py -n 250
python benchmark/microbench.py create pydigits
merge-wheels:
needs: [ Linux, non-Linux ]
runs-on: ubuntu-latest
steps:
- name: Merge wheels
uses: actions/upload-artifact/merge@v4
with:
name: all_wheels
pattern: wheels-*
delete-merged: true
compression-level: 9