generated from opensafely-core/repo-template
-
Notifications
You must be signed in to change notification settings - Fork 1
138 lines (128 loc) · 3.93 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
---
name: CI
on:
push:
workflow_dispatch:
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@v4
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:
strategy:
matrix:
os: [ubuntu-22.04, windows-2022, macos-12]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: "opensafely-core/setup-action@v1"
with:
python-version: "3.10"
install-just: true
# our just setup doesn't make just available on the path
- uses: extractions/setup-just@dd310ad5a97d8e7b41793f8ef055398d51ad4de6
- uses: actions/setup-node@v4
with:
node-version-file: '.node-version'
cache: "npm"
cache-dependency-path: |
**/package-lock.json
sacro-app/package-lock.json
- name: dumpenv
if: matrix.os == 'macos-12'
run: |
echo "$DEVELOPER_DIR"
ls /Applications/Xcode*
xcode-select --print-path
- name: Run tests
run: just test
- name: Cypress run
uses: cypress-io/github-action@1b70233146622b69e789ccdd4f9452adc638d25a #v6.6.1
with:
start: just run
wait-on: "http://localhost:8000/"
- uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-screenshots
path: cypress/screenshots
if-no-files-found: ignore
- uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-videos
path: cypress/videos
if-no-files-found: ignore
build:
needs: [check, test]
permissions:
contents: write
strategy:
matrix:
os: [ubuntu-22.04, windows-2022, macos-12]
include:
- os: ubuntu-22.04
build_name: linux
build_path: sacro-app/dist/@opensafely/sacro*.deb
upload_path: sacro*.deb
- os: windows-2022
build_name: windows
build_path: sacro-app/dist/SACRO*.msi
upload_path: SACRO*.msi
- os: macos-12
build_name: macos
build_path: sacro-app/dist/sacro*.dmg
upload_path: sacro*.dmg
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: "opensafely-core/setup-action@v1"
with:
python-version: "3.10"
- uses: actions/setup-node@v4
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@dd310ad5a97d8e7b41793f8ef055398d51ad4de6
- name: Download sample data
run: just test-outputs
# record asset build step separately for CI timings.
- name: Build assets and collect
run: just collectstatic
- name: Build Python pyoxidizer binary
run: just build
- name: Build app
run: |
mkdir -p sacro-app/dist/@opensafely
just sacro-app/build
# copy build artifact current directory
- name: Copy built artifact
run: cp ${{ matrix.build_path }} .
- name: Upload build
if: success()
uses: actions/upload-artifact@v4
with:
name: SACRO-latest-${{ matrix.build_name }}-build
path: |
${{ matrix.upload_path }}
outputs/*
!outputs/.keep