generated from opensafely-core/repo-template
-
Notifications
You must be signed in to change notification settings - Fork 1
180 lines (168 loc) · 5.06 KB
/
main.yml
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
---
name: CI
on:
push:
jobs:
check:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: "opensafely-core/setup-action@v1"
with:
python-version: "3.10"
install-just: true
- uses: actions/setup-node@v3
with:
node-version-file: '.node-version'
cache: "npm"
cache-dependency-path: |
package-lock.json
sacro-app/package-lock.json
- name: Install dependencies
run: just assets-install && just sacro-app/npm-ci
- name: Check formatting, linting and import sorting
run: just check
test-linux:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: "opensafely-core/setup-action@v1"
with:
python-version: "3.10"
install-just: true
- uses: actions/setup-node@v3
with:
node-version-file: '.node-version'
cache: "npm"
cache-dependency-path: |
package-lock.json
sacro-app/package-lock.json
- name: Run tests
run: just test
- name: Cypress run
uses: cypress-io/github-action@d69252d52b9a31bad4f418f05ba2bc83687a02eb #v5.8.3
with:
start: just run
wait-on: "http://localhost:8000/"
- uses: actions/upload-artifact@v3
if: failure()
with:
name: cypress-screenshots
path: cypress/screenshots
if-no-files-found: ignore
- uses: actions/upload-artifact@v3
if: failure()
with:
name: cypress-videos
path: cypress/videos
if-no-files-found: ignore
test-windows:
runs-on: windows-2022
steps:
- uses: actions/checkout@v3
- uses: "opensafely-core/setup-action@v1"
with:
python-version: "3.11"
- uses: actions/setup-node@v3
with:
node-version-file: '.node-version'
cache: "npm"
cache-dependency-path: |
**/package-lock.json
sacro-app/package-lock.json
# our just setup doesn't make just available on the path
- uses: extractions/setup-just@69d82fb0233557aec017ef13706851d0694e0f1d
- name: Run tests
run: just test
- name: Cypress run
uses: cypress-io/github-action@d69252d52b9a31bad4f418f05ba2bc83687a02eb #v5.8.3
with:
start: just run
wait-on: "http://localhost:8000/"
- uses: actions/upload-artifact@v3
if: failure()
with:
name: cypress-screenshots
path: cypress/screenshots
if-no-files-found: ignore
- uses: actions/upload-artifact@v3
if: failure()
with:
name: cypress-videos
path: cypress/videos
if-no-files-found: ignore
build-linux:
needs: [check, test-linux]
permissions:
contents: write
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: "opensafely-core/setup-action@v1"
with:
python-version: "3.11"
- uses: actions/setup-node@v3
with:
node-version-file: '.node-version'
cache: "npm"
cache-dependency-path: |
**/package-lock.json
sacro-app/package-lock.json
# our just setup doesn't make just available on the path
- uses: extractions/setup-just@69d82fb0233557aec017ef13706851d0694e0f1d
- name: Download sample data
run: just test-outputs
- name: Build Python binary
run: just build
- name: Build app
run: |
mkdir -p sacro-app/dist/@opensafely
just sacro-app/build
- name: Copy built deb
run: cp sacro-app/dist/@opensafely/sacro*.deb .
- name: Upload build
if: success()
uses: actions/upload-artifact@v3
with:
name: SACRO-latest-linux-build
path: |
sacro*.deb
outputs/*
!outputs/.keep
build-windows:
needs: [check, test-windows]
permissions:
contents: write
runs-on: windows-2022
steps:
- uses: actions/checkout@v3
- uses: "opensafely-core/setup-action@v1"
with:
python-version: "3.11"
- uses: actions/setup-node@v3
with:
node-version-file: '.node-version'
cache: "npm"
cache-dependency-path: |
**/package-lock.json
sacro-app/package-lock.json
# our just setup doesn't make just available on the path
- uses: extractions/setup-just@69d82fb0233557aec017ef13706851d0694e0f1d
- name: Download sample data
run: just test-outputs
- name: Build Python binary
run: just build
- name: Build app
run: just sacro-app/build
# this gets us cleaner paths in our artifact
- name: Copy built msi
run: cp sacro-app/dist/SACRO*.msi .
- name: Upload build
if: success()
uses: actions/upload-artifact@v3
with:
name: SACRO-latest-windows-build
path: |
SACRO*.msi
outputs/*
!outputs/.keep