-
-
Notifications
You must be signed in to change notification settings - Fork 99
129 lines (113 loc) · 3.15 KB
/
build.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
name: Build distributables
on:
push:
branches-ignore:
- 'v*'
paths-ignore:
- 'docs/**'
- '.github/ISSUE_TEMPLATE/**'
pull_request:
paths-ignore:
- 'docs/**'
- '.github/ISSUE_TEMPLATE/**'
branches-ignore:
- 'v*'
env:
WEBCORD_BUILD: DEVEL
permissions: {}
jobs:
test:
strategy:
matrix:
deps: ['latest', 'locked']
name: "Test build"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: latest
cache: npm
- name: Install dependencies (NPM)
run: npm ci
- name: Update dependencies
if: ${{ matrix.deps == 'latest' }}
run: npm update
- name: TSC cache
uses: actions/cache@v4
with:
key: tsc-${{ matrix.deps }}
path: |
app
cache/tsc.json
- name: ESLint cache
uses: actions/cache@v4
with:
key: eslint-${{ matrix.deps }}
path: |
cache/eslint.json
- name: Run tests with ${{ matrix.deps }} dependencies
run: npm test
make:
strategy:
fail-fast: false
matrix:
name: ['Linux', 'Windows', 'macOS-x64', 'macOS-arm64']
build: [latest, locked]
include:
- runner: ubuntu-20.04
name: Linux
arch: x64,arm64,armv7l
- runner: windows-latest
name: Windows
arch: x64,arm64,ia32
- runner: macos-latest
name: macOS-x64
arch: x64 #,arm64,universal
- runner: macos-14
name: macOS-arm64
arch: arm64
name: '${{ matrix.name }} (${{ matrix.build }})'
runs-on: ${{ matrix.runner }}
needs: ['test']
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.name == 'Windows' && 21 || 'latest' }}
cache: npm
- name: Lock Python version (macOS only)
if: ${{ matrix.runner == 'macos-latest' || matrix.runner == 'macos-14' }}
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies (NPM)
run: npm ci
- name: Update dependencies
if: ${{ matrix.build == 'latest' }}
run: npm update
- name: TSC cache
uses: actions/cache@v4
with:
key: tsc-${{ matrix.build }}
path: |
app
cache/tsc.json
- name: Generate distributables (${{ matrix.arch }})
uses: nick-fields/retry@v2
with:
retry_on: error
max_attempts: 3
timeout_minutes: 10
command: npm run make -- -a ${{ matrix.arch }}
- name: Upload distributables as artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }}_${{ matrix.build }}
path: out/devel/make/*
- name: Upload lockfile as artifact
if: ${{ matrix.build == 'latest' }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.name }}-lockfile_updated
path: package-lock.json