CI (bleeding edge) #269
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 (bleeding edge) | |
# this workflow is heavily inspired from pandas, see | |
# https://github.com/pandas-dev/pandas/blob/master/.github/workflows/python-dev.yml | |
# goals: check stability against | |
# - dev version of Python, numpy, matplotlib, and unyt | |
# - Cython and pytest pre-releases | |
# - building with future pip default options | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
paths: | |
- .github/workflows/bleeding-edge.yaml | |
schedule: | |
# run this every Wednesday at 3 am UTC | |
- cron: 0 3 * * 3 | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
name: "tests with bleeding-edge crucial deps" | |
timeout-minutes: 60 | |
concurrency: | |
# auto-cancel any in-progress job *on the same branch* | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
- name: Set up Python (newest testable version) | |
uses: actions/setup-python@v4 | |
with: | |
# the '-dev' suffix allows to use pre-releases if no final release is available yet | |
# this version should be upgraded as often as possible, typically once a year when | |
# Cython, numpy and matplotlib are known to be compatible | |
python-version: '3.12-dev' | |
- name: Install dependencies | |
# PyYAML needs to be installed in isolation for now, because of a known | |
# incompatibility with Cython 3 | |
# see https://github.com/yaml/pyyaml/issues/601 | |
# and https://github.com/cython/cython/issues/4568 | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade setuptools wheel | |
python -m pip install --pre --only-binary ":all:" numpy matplotlib \ | |
--extra-index https://pypi.anaconda.org/scientific-python-nightly-wheels/simple | |
python -m pip install --pre ewah-bool-utils Cython | |
python -m pip install git+https://github.com/yt-project/unyt.git | |
python -m pip install --pre pytest PyYAML | |
- name: Build | |
# --no-build-isolation is used to guarantee that build time dependencies | |
# are not installed by pip as specified from pyproject.toml, hence we get | |
# to use the dev version of numpy at build time. | |
run: | | |
python setup.py build_ext -q -j2 | |
python -m pip install -e .[test] --no-build-isolation | |
- run: python -m pip list | |
- name: Run Tests | |
run: | | |
yt config set --local yt log_level 50 # Disable excessive output | |
pytest -vvv --color=yes | |
create-issue: | |
if: ${{ failure() && github.event_name == 'schedule' }} | |
needs: [build] | |
permissions: | |
issues: write | |
runs-on: ubuntu-latest | |
name: Create issue on failure | |
steps: | |
- name: Create issue on failure | |
uses: imjohnbo/issue-bot@v3 | |
with: | |
title: 'TST: Upcoming dependency test failures' | |
body: | | |
The weekly build with future dependencies has failed. Check the logs | |
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}} | |
pinned: false | |
close-previous: false | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |