Periodic CI #71
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 | |
env: | |
# Current supported Python version for the controller. For applications, | |
# there is generally no reason to support multiple Python versions, so all | |
# actions are run with this version. Quote the version to avoid | |
# interpretation as a floating point number. | |
# | |
# The JupyterHub plugins use a separate matrix of versions because they have | |
# to work with the version of Python that is included in the JupyterHub | |
# images. | |
PYTHON_VERSION: "3.13" | |
"on": | |
schedule: | |
- cron: "0 12 * * 1" | |
workflow_dispatch: {} | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: lsst-sqre/run-nox@v1 | |
with: | |
nox-sessions: "update-deps typing typing-inithome test test-inithome" | |
python-version: ${{ env.PYTHON_VERSION }} | |
use-cache: false | |
- name: Report status | |
if: failure() | |
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 }} | |
# The Nublado client must support the Python versions of all of the packages | |
# that use it, so its minimum Python version can only be raised once all of | |
# the services that depend on it have moved to a newer version. Use a matrix | |
# to test all supported versions. | |
test-client: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
needs: [test] | |
strategy: | |
matrix: | |
python: | |
- "3.12" | |
- "3.13" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: lsst-sqre/run-nox@v1 | |
with: | |
nox-sessions: "typing-client test-client" | |
python-version: ${{ matrix.python }} | |
use-cache: false | |
- name: Report status | |
if: failure() | |
uses: ravsamhq/notify-slack-action@v2 | |
with: | |
status: ${{ job.status }} | |
notify_when: "failure" | |
notification_title: "Periodic client test for {repo} failed" | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_ALERT_WEBHOOK }} | |
# The JupyterHub Docker image may not always track the Python version we use | |
# and the modules must support that version of Python. Use a matrix to test | |
# every version of Python from that version to the most recent so that we | |
# can safely upgrade when the JupyterHub Python upgrades. | |
test-hub: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
needs: [test] | |
strategy: | |
matrix: | |
python: | |
- "3.12" | |
- "3.13" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: lsst-sqre/run-nox@v1 | |
with: | |
nox-sessions: "update-deps-hub typing-hub test-hub" | |
python-version: ${{ matrix.python }} | |
use-cache: false | |
- name: Report status | |
if: failure() | |
uses: ravsamhq/notify-slack-action@v2 | |
with: | |
status: ${{ job.status }} | |
notify_when: "failure" | |
notification_title: "Periodic hub test for {repo} failed" | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_ALERT_WEBHOOK }} | |
docs: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Update package lists | |
run: sudo apt-get update | |
- name: Install extra packages | |
run: sudo apt install -y graphviz | |
- uses: lsst-sqre/run-nox@v1 | |
with: | |
cache-dependency: "controller/requirements/*.txt" | |
cache-key-prefix: docs | |
nox-sessions: "docs docs-linkcheck" | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Report status | |
if: failure() | |
uses: ravsamhq/notify-slack-action@v2 | |
with: | |
status: ${{ job.status }} | |
notify_when: "failure" | |
notification_title: "Periodic docs check for {repo} failed" | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_ALERT_WEBHOOK }} |