Skip to content

Weekly Cron Tests

Weekly Cron Tests #231

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/regions' && (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/regions' && (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: aarch64
- 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-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