Periodic CI #55
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
# This is a separate run of the Python test suite that doesn't cache the tox | |
# environment and runs from a schedule. The purpose is to test whether | |
# updating pinned dependencies would cause any tests to fail. | |
name: Periodic CI | |
"on": | |
schedule: | |
- cron: "0 12 * * 1" | |
workflow_dispatch: {} | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
python: | |
- "3.12" | |
steps: | |
- uses: actions/checkout@v4 | |
# Use the oldest supported version of Python to update dependencies, | |
# not the matrixed Python version, since this accurately reflects | |
# how dependencies should later be updated. | |
- uses: lsst-sqre/run-neophile@v1 | |
with: | |
python-version: "3.12" | |
mode: update | |
- name: Set up Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: .nvmrc | |
cache: npm | |
cache-dependency-path: ui/package-lock.json | |
- name: Read .nvmrc | |
id: node_version | |
run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_OUTPUT | |
# First try to restore the fully-installed node modules. If that | |
# works (no changes to the JavaScript layer), skip npm i and | |
# restoring the cache of downloaded modules. If that fails, restore | |
# the cache of the downloaded modules and then run npm | |
# clean-install. | |
- name: Cache installed Node modules | |
uses: actions/cache@v4 | |
id: node-cache | |
with: | |
path: ./ui/node_modules | |
key: node-${{ steps.node_version.outputs.NODE_VERSION }}-${{ hashFiles('**/package-lock.json') }} | |
# --legacy-peer-deps is currently required because react-aria-modal | |
# hasn't been updated for the latest React. | |
- name: Install Node dependencies | |
run: npm ci --legacy-peer-deps | |
if: steps.node-cache.outputs.cache-hit != 'true' | |
working-directory: ./ui | |
- name: Update package lists | |
run: sudo apt-get update | |
- name: Install extra packages | |
run: sudo apt install -y graphviz libpq-dev libldap2-dev libsasl2-dev | |
- name: Build the UI | |
run: npm run build | |
working-directory: ./ui | |
- name: Set up Minikube | |
uses: medyagh/[email protected] | |
with: | |
kubernetes-version: "v1.27.3" | |
- uses: lsst-sqre/run-tox@v1 | |
with: | |
python-version: ${{ matrix.python }} | |
tox-envs: "lint,typing,py-full,docs,docs-linkcheck" | |
tox-requirements: "requirements/tox.txt" | |
use-cache: false | |
- name: Report status | |
if: always() | |
uses: ravsamhq/notify-slack-action@v2 | |
with: | |
status: ${{ job.status }} | |
notify_when: "failure" | |
notification_title: "Periodic test for {repo} failed" | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_ALERT_WEBHOOK }} |