Skip to content

Periodic CI

Periodic CI #44

Workflow file for this run

# 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/setup-minikube@v0.0.16
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 }}