CI #798
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: | |
pull_request: | |
push: | |
branches: | |
- 'main' | |
- 'pre-commit-autoupdate' | |
tags: | |
- '*' | |
schedule: | |
# daily (`@daily` not supported, see | |
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events ) | |
# | |
# Runs on default/base branch (see | |
# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#onschedule ) | |
- cron: '0 0 * * *' | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
numfocus_nightly: [false] | |
os: ["ubuntu-latest"] | |
pyarrow: ["3.0.0", "4.0.1", "nightly"] | |
python: ["3.8"] | |
include: | |
- numfocus_nightly: true | |
os: "ubuntu-latest" | |
pyarrow: "4.0.1" | |
python: "3.10" | |
- numfocus_nightly: false | |
os: "ubuntu-latest" | |
pyarrow: "5.0.0" | |
python: "3.9" | |
- numfocus_nightly: false | |
os: "ubuntu-latest" | |
pyarrow: "6.0.1" | |
python: "3.9" | |
- numfocus_nightly: false | |
os: "ubuntu-latest" | |
pyarrow: "7.0.0" | |
python: "3.10" | |
- numfocus_nightly: false | |
os: "ubuntu-latest" | |
pyarrow: "8.0.1" | |
python: "3.10" | |
- numfocus_nightly: false | |
os: "ubuntu-latest" | |
pyarrow: "9.0.0" | |
python: "3.10" | |
- numfocus_nightly: false | |
os: "ubuntu-latest" | |
pyarrow: "10.0.1" | |
python: "3.11" | |
- numfocus_nightly: false | |
os: "ubuntu-latest" | |
pyarrow: "11.0.0" | |
python: "3.11" | |
- numfocus_nightly: false | |
os: "macos-latest" | |
pyarrow: "4.0.1" | |
python: "3.8" | |
continue-on-error: ${{ matrix.numfocus_nightly || matrix.pyarrow == 'nightly' }} | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
# see https://github.com/conda-incubator/setup-miniconda/#important | |
shell: bash -l {0} | |
env: | |
IS_MASTER_BUILD: ${{ !matrix.numfocus_nightly && matrix.os == 'ubuntu-latest' && matrix.pyarrow == '4.0.1' && matrix.python == '3.8' }} | |
IS_TAG: ${{ github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')}} | |
steps: | |
# CI setup | |
- name: Is Master Build? | |
run: echo $IS_MASTER_BUILD | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Conda env | |
uses: mamba-org/provision-with-micromamba@e2b397b12d0a38069451664382b769c9456e3d6d | |
with: | |
cache-env: true | |
extra-specs: | | |
python=${{ matrix.PYTHON_VERSION }} | |
- name: Install repository | |
run: python -m pip install --no-build-isolation --no-deps --disable-pip-version-check -e . | |
- name: Install Pyarrow (non-nightly) | |
run: micromamba install pyarrow==${{ matrix.pyarrow }} | |
if: matrix.pyarrow != 'nightly' | |
- name: Install Pyarrow (nightly) | |
# Install both arrow-cpp and pyarrow to make sure that we have the | |
# latest nightly of both packages. It is sadly not guaranteed that the | |
# nightlies and the latest release would otherwise work together. | |
run: micromamba update -c arrow-nightlies -c conda-forge arrow-cpp pyarrow | |
if: matrix.pyarrow == 'nightly' | |
- name: Pip Instal NumFOCUS nightly | |
# NumFOCUS nightly wheels, contains numpy and pandas | |
# TODO(gh-45): Re-add numpy | |
run: python -m pip install --pre --upgrade --timeout=60 --extra-index-url https://pypi.anaconda.org/scipy-wheels-nightly/simple pandas | |
if: matrix.numfocus_nightly | |
- name: Test import | |
run: | | |
python -c "import plateau" | |
python -c "import plateau.api" | |
python -c "import plateau.api.dataset" | |
python -c "import plateau.api.serialization" | |
python -c "import plateau.core" | |
python -c "import plateau.io" | |
python -c "import plateau.io_components" | |
python -c "import plateau.serialization" | |
python -c "import plateau.utils" | |
# Tests | |
- name: Pytest | |
# FIXME: Add `-n auto` again to allow for parallelism here. | |
run: pytest --cov --cov-report xml | |
- name: Running benchmarks | |
run: | | |
asv --config ./asv_bench/asv.conf.json machine --machine github --os unknown --arch unknown --cpu unknown --ram unknown | |
asv --config ./asv_bench/asv.conf.json dev | sed "/failed$/ s/^/##[error]/" | tee benchmarks.log | |
if grep "failed" benchmarks.log > /dev/null ; then | |
exit 1 | |
fi | |
if: env.IS_MASTER_BUILD == 'true' | |
# Builds | |
- name: Build Wheel and sdist | |
run: python -m build --no-isolation | |
- name: Codecov | |
uses: codecov/[email protected] | |
with: | |
# NOTE: `token` is not required, because the plateau repo is public | |
file: ./coverage.xml | |
name: pytest-numfocus_nightly_${{ matrix.numfocus_nightly }}-os_${{ matrix.os }}-pyarrow_${{ matrix.pyarrow }}-python_${{ matrix.python }} | |
# Release | |
- name: Publish to PyPI | |
if: env.IS_MASTER_BUILD == 'true' && env.IS_TAG == 'true' | |
uses: pypa/gh-action-pypi-publish@master | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_PASSWORD }} |