Weekly Cron Tests #1013
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: Weekly Cron Tests | |
on: | |
schedule: | |
# run every Monday at 5am UTC | |
- cron: '0 5 * * 1' | |
pull_request: | |
# We also want this workflow triggered if the 'Weekly CI' label is added | |
# or present when PR is updated | |
types: | |
- synchronize | |
- labeled | |
push: | |
tags: | |
- '*' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
TOXARGS: '-v' | |
IS_CRON: 'true' | |
permissions: | |
contents: read | |
jobs: | |
tests: | |
if: (github.repository == 'astropy/photutils' && (github.event_name == 'schedule' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Weekly CI'))) | |
name: ${{ matrix.os }}, ${{ matrix.tox_env }} | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.allow_failure }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
python: '3.12' | |
tox_env: 'py312-test-alldeps-devinfra' | |
allow_failure: false | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install base dependencies | |
run: python -m pip install --upgrade pip setuptools tox | |
- name: Print Python, pip, setuptools, and tox versions | |
run: | | |
python -c "import sys; print(f'Python {sys.version}')" | |
python -c "import pip; print(f'pip {pip.__version__}')" | |
python -c "import setuptools; print(f'setuptools {setuptools.__version__}')" | |
python -c "import tox; print(f'tox {tox.__version__}')" | |
- name: Run tests | |
run: tox -e ${{ matrix.tox_env }} -- ${{ matrix.toxposargs }} | |
test_more_architectures: | |
# The following architectures are emulated and are therefore slow, so | |
# we include them just in the weekly cron. These also serve as a test | |
# of using system libraries and using pytest directly. | |
runs-on: ubuntu-20.04 | |
name: More architectures | |
if: (github.repository == 'astropy/photutils' && (github.event_name == 'schedule' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Arch CI'))) | |
env: | |
ARCH_ON_CI: ${{ matrix.arch }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: s390x | |
- arch: ppc64le | |
- arch: armv7 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- uses: uraimo/run-on-arch-action@5397f9e30a9b62422f302092631c99ae1effcd9e # v2.8.1 | |
name: Run tests | |
id: build | |
with: | |
arch: ${{ matrix.arch }} | |
distro: ubuntu_rolling | |
shell: /bin/bash | |
env: | | |
ARCH_ON_CI: ${{ env.ARCH_ON_CI }} | |
IS_CRON: ${{ env.IS_CRON }} | |
install: | | |
apt-get update -q -y | |
apt-get install -q -y --no-install-recommends \ | |
git \ | |
g++ \ | |
pkg-config \ | |
python3 \ | |
python3-astropy \ | |
python3-erfa \ | |
python3-extension-helpers \ | |
python3-numpy \ | |
python3-pytest-astropy \ | |
python3-setuptools-scm \ | |
python3-scipy \ | |
python3-skimage \ | |
python3-sklearn \ | |
python3-venv \ | |
python3-wheel \ | |
wcslib-dev | |
run: | | |
uname -a | |
echo "LONG_BIT="$(getconf LONG_BIT) | |
python3 -m venv --system-site-packages tests | |
source tests/bin/activate | |
# cython and pyerfa versions in ubuntu repos are too old currently | |
pip install -U cython | |
pip install -U --no-build-isolation pyerfa | |
ASTROPY_USE_SYSTEM_ALL=1 pip3 install -v --no-build-isolation -e .[test] | |
pip3 list | |
python3 -m pytest | |
test_arm64: | |
# Native arm64 testing -- paid test runner | |
# keep this in the weekly cron to minimize the number of jobs | |
runs-on: linux-arm64 | |
name: Python 3.12 (arm64) | |
# keep condition in sync with test_more_architectures | |
if: (github.repository == 'astropy/photutils' && (github.event_name == 'schedule' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Arch CI'))) | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
python-version: '3.12' | |
- name: Set up dependencies | |
run: pip install tox | |
- name: Run tests | |
run: tox -e py312-test -- -n=2 |