Update version of upload-artifact #183
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: Continous integration | |
on: | |
pull_request: | |
paths-ignore: | |
- 'docs/**' | |
- '*.rst' | |
push: | |
branches: | |
- develop | |
- main | |
tags: | |
- "*" | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v2.2.1 | |
with: | |
python-version: "3.8" | |
- name: Install tox | |
run: pip install tox | |
- name: Lint | |
run: tox -e lint | |
package-checks: | |
strategy: | |
matrix: | |
tox_env: | |
- docs | |
- twine_check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v2.2.1 | |
with: | |
python-version: 3.8 | |
- name: Install tox and upgrade setuptools and pip | |
run: pip install --upgrade tox setuptools pip | |
- name: Run tox -e ${{ matrix.tox_env }} | |
run: tox -e ${{ matrix.tox_env }} | |
test-static: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
python-version: | |
- "3.8" | |
- "3.9" | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
- "3.13-dev" | |
- "pypy-3.9" | |
- "pypy-3.10" | |
os: ["ubuntu-latest"] | |
include: | |
- os: "macos-14" # For m1 macos | |
python-version: "3.12" | |
- os: "macos-13" # for x86 macos | |
python-version: "3.8" | |
- os: "windows-latest" | |
python-version: "3.8" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2.2.1 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install tox and upgrade setuptools | |
run: pip install --upgrade tox setuptools | |
- name: Set MSVC developer prompt | |
uses: ilammy/msvc-dev-cmd@v1.6.0 | |
if: runner.os == 'Windows' | |
- name: Install build dependencies (MacOS) | |
run: brew install make | |
if: runner.os == 'macOS' | |
- name: Run tests | |
run: tox | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v1 | |
test-arch: | |
if: startsWith(github.ref, 'refs/tags') || github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main' | |
runs-on: "ubuntu-latest" | |
strategy: | |
matrix: | |
python_version: | |
- "3.8" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: uraimo/run-on-arch-action@v2.5.0 | |
name: Build & run test | |
with: | |
arch: none | |
distro: none | |
base_image: "--platform=linux/arm64 quay.io/pypa/manylinux2014_aarch64" | |
# versioningit needs an accessible git repository but the container | |
# is run as root, which is different from the repository user. | |
# use git config to override this. | |
run: |- | |
git config --global --add safe.directory $PWD | |
CFLAGS="-DNDEBUG -g0" python${{matrix.python_version}} -m pip install . pytest | |
python${{matrix.python_version}} -m pytest tests | |
# Test if the python-zlib-ng conda package can be build. Which is linked | |
# dynamically to the conda zlib-ng package. | |
test-dynamic: | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
# This is needed for miniconda, see: | |
# https://github.com/marketplace/actions/setup-miniconda#important. | |
shell: bash -l {0} | |
strategy: | |
matrix: | |
os: | |
- "ubuntu-latest" | |
- "macos-13" | |
- "macos-14" | |
- "windows-latest" | |
python_version: [ "python" ] | |
include: | |
- os: "ubuntu-latest" | |
python_version: "pypy" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install miniconda. | |
uses: conda-incubator/setup-miniconda@v3 # https://github.com/conda-incubator/setup-miniconda. | |
with: | |
channels: conda-forge,defaults | |
- name: Install requirements (universal) | |
run: conda install zlib-ng ${{ matrix.python_version}} tox | |
- name: Set MSVC developer prompt | |
uses: ilammy/msvc-dev-cmd@v1.6.0 | |
if: runner.os == 'Windows' | |
- name: Run tests (dynamic link) | |
run: tox | |
env: | |
PYTHON_ZLIB_NG_LINK_DYNAMIC: True | |
deploy: | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags') | |
runs-on: ${{ matrix.os }} | |
needs: | |
- lint | |
- package-checks | |
- test-static | |
- test-dynamic | |
- test-arch | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-13 | |
- macos-14 | |
- windows-latest | |
cibw_archs_linux: ["x86_64"] | |
build_sdist: [true] | |
include: | |
- os: "ubuntu-latest" | |
cibw_archs_linux: "aarch64" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 # Fetch everything to get accurately versioned tag. | |
- uses: actions/setup-python@v2 | |
name: Install Python | |
- name: Install cibuildwheel twine build | |
run: python -m pip install cibuildwheel twine build | |
- name: Install build dependencies (Macos) | |
run: brew install make | |
if: runner.os == 'macOS' | |
- name: Set MSVC developer prompt | |
uses: ilammy/msvc-dev-cmd@v1.6.0 | |
if: runner.os == 'Windows' | |
- name: Set up QEMU | |
if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'aarch64'}} | |
uses: docker/setup-qemu-action@v1.0.1 | |
with: | |
platforms: arm64 | |
- name: Build wheels | |
run: cibuildwheel --output-dir dist | |
env: | |
# Skip 32 bit, macosx_arm64 causes issues on cpython 3.8 | |
CIBW_SKIP: "*-win32 *-manylinux_i686 cp38-macosx_arm64" | |
CIBW_ARCHS_LINUX: ${{ matrix.cibw_archs_linux }} | |
CIBW_TEST_REQUIRES: "pytest" | |
# Simple tests that requires the project to be build correctly | |
CIBW_TEST_COMMAND_LINUX: >- | |
pytest {project}/tests/test_zlib_compliance.py | |
{project}/tests/test_gzip_compliance.py | |
{project}/tests/test_gzip_ng.py | |
CIBW_TEST_COMMAND_MACOS: >- | |
pytest {project}/tests/test_zlib_compliance.py | |
{project}/tests/test_gzip_compliance.py | |
{project}/tests/test_gzip_ng.py | |
# Windows does not have the test module in the included python. | |
# Run compatibility tests instead. | |
CIBW_TEST_COMMAND_WINDOWS: >- | |
pytest {project}/tests/test_compat.py | |
{project}/tests/test_gzip_ng.py | |
CIBW_ENVIRONMENT_LINUX: >- | |
PYTHON_ZLIB_NG_BUILD_CACHE=True | |
PYTHON_ZLIB_NG_BUILD_CACHE_FILE=/tmp/build_cache | |
CFLAGS="-g0 -DNDEBUG" | |
CIBW_ENVIRONMENT_WINDOWS: >- | |
PYTHON_ZLIB_NG_BUILD_CACHE=True | |
PYTHON_ZLIB_NG_BUILD_CACHE_FILE=${{ runner.temp }}\build_cache | |
CIBW_ENVIRONMENT_MACOS: >- | |
PYTHON_ZLIB_NG_BUILD_CACHE=True | |
PYTHON_ZLIB_NG_BUILD_CACHE_FILE=${{ runner.temp }}/build_cache | |
CFLAGS="-g0 -DNDEBUG" | |
- name: Build sdist | |
if: ${{runner.os == 'Linux' && matrix.cibw_archs_linux == 'x86_64'}} | |
run: | |
python -m build --sdist | |
- uses: actions/upload-artifact | |
with: | |
name: "dist" | |
path: "dist/" | |
- name: Publish package to TestPyPI | |
# pypa/gh-action-pypi-publish@master does not work on OSX | |
# Alpha, Beta and dev releases contain a - in the tag. | |
if: contains(github.ref, '-') && startsWith(github.ref, 'refs/tags') | |
run: twine upload --skip-existing -r testpypi dist/* | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
- name: Publish package to PyPI | |
if: "!contains(github.ref, '-') && startsWith(github.ref, 'refs/tags')" | |
run: twine upload --skip-existing dist/* | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} |