-
Notifications
You must be signed in to change notification settings - Fork 0
146 lines (123 loc) · 4.19 KB
/
periodic-ci.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# 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 }}