@@ -12,16 +12,59 @@ concurrency:
12
12
cancel-in-progress : true
13
13
14
14
jobs :
15
- test :
15
+ # Build statically linked Linux binaries in an Alpine-based Docker container
16
+ # See https://ocamlpro.com/blog/2021_09_02_generating_static_and_portable_executables_with_ocaml
17
+ # for more info.
18
+ # The container already comes with all required tools pre-installed
19
+ # (see https://github.com/rescript-lang/docker-rescript-ci-build/blob/main/Dockerfile).
20
+ build-linux :
21
+ strategy :
22
+ fail-fast : false
23
+ matrix :
24
+ os : [ubuntu-latest, buildjet-2vcpu-ubuntu-2204-arm]
25
+ # syntax explanation:
26
+ # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-including-additional-values-into-combinations
27
+ include :
28
+ - os : ubuntu-latest
29
+ artifact-folder : linux
30
+ - os : buildjet-2vcpu-ubuntu-2204-arm
31
+ artifact-folder : linuxarm64
32
+
33
+ runs-on : ${{matrix.os}}
34
+
35
+ steps :
36
+ - name : Checkout
37
+ uses : actions/checkout@v4
38
+
39
+ - name : Build
40
+ uses : docker://ghcr.io/rescript-lang/rescript-ci-build:alpine-3.19-ocaml-5.1.1-01
41
+ env :
42
+ DUNE_PROFILE : static
43
+ with :
44
+ args : opam exec -- make
45
+
46
+ # Also avoids artifacts upload permission loss:
47
+ # https://github.com/actions/upload-artifact/tree/ee69f02b3dfdecd58bb31b4d133da38ba6fe3700#permission-loss
48
+ - name : Compress files
49
+ run : |
50
+ mkdir ${{matrix.artifact-folder}}
51
+ mv rescript-editor-analysis.exe ${{matrix.artifact-folder}}
52
+ mv rescript-tools.exe ${{matrix.artifact-folder}}
53
+ tar -cvf binary.tar ${{matrix.artifact-folder}}
54
+
55
+ - name : " Upload artifacts"
56
+ uses : actions/upload-artifact@v4
57
+ with :
58
+ name : ${{matrix.artifact-folder}}
59
+ path : binary.tar
60
+
61
+ build :
16
62
strategy :
17
63
fail-fast : false
18
64
matrix :
19
- # Stay on the oldest Ubuntu version that's still supported by Github Actions
20
- # to avoid glibc incompatibilities as far as possible.
21
65
os : [
22
66
macos-13, # x64
23
67
macos-14, # ARM
24
- ubuntu-20.04,
25
68
windows-latest,
26
69
]
27
70
# syntax explanation:
31
74
artifact-folder : darwin
32
75
- os : macos-14
33
76
artifact-folder : darwinarm64
34
- - os : ubuntu-20.04
35
- artifact-folder : linux
36
77
- os : windows-latest
37
78
artifact-folder : win32
38
79
@@ -106,12 +147,14 @@ jobs:
106
147
107
148
- uses : actions/upload-artifact@v4
108
149
with :
109
- name : ${{matrix.os }}
150
+ name : ${{matrix.artifact-folder }}
110
151
path : binary.tar
111
152
112
153
package :
113
- needs : test
114
- runs-on : ubuntu-20.04
154
+ needs :
155
+ - build
156
+ - build-linux
157
+ runs-on : ubuntu-latest
115
158
116
159
steps :
117
160
- uses : actions/checkout@v4
@@ -125,34 +168,42 @@ jobs:
125
168
- run : npm ci
126
169
- run : npm run compile
127
170
128
- - name : Download MacOS binary
171
+ - name : Download MacOS binaries
172
+ uses : actions/download-artifact@v4
173
+ with :
174
+ name : darwin
175
+ path : binaries
176
+ - run : tar -xvf binary.tar
177
+ working-directory : binaries
178
+
179
+ - name : Download MacOS ARM binaries
129
180
uses : actions/download-artifact@v4
130
181
with :
131
- name : macos-13
182
+ name : darwinarm64
132
183
path : binaries
133
184
- run : tar -xvf binary.tar
134
185
working-directory : binaries
135
186
136
- - name : Download MacOS ARM binary
187
+ - name : Download Linux binaries
137
188
uses : actions/download-artifact@v4
138
189
with :
139
- name : macos-14
190
+ name : linux
140
191
path : binaries
141
192
- run : tar -xvf binary.tar
142
193
working-directory : binaries
143
194
144
- - name : Download Linux binary
195
+ - name : Download Linux ARM binaries
145
196
uses : actions/download-artifact@v4
146
197
with :
147
- name : ubuntu-20.04
198
+ name : linuxarm64
148
199
path : binaries
149
200
- run : tar -xvf binary.tar
150
201
working-directory : binaries
151
202
152
- - name : Download Windows binary
203
+ - name : Download Windows binaries
153
204
uses : actions/download-artifact@v4
154
205
with :
155
- name : windows-latest
206
+ name : win32
156
207
path : binaries
157
208
- run : tar -xvf binary.tar
158
209
working-directory : binaries
@@ -163,7 +214,7 @@ jobs:
163
214
164
215
- name : Move binaries to folders
165
216
run : |
166
- declare -a platforms=("darwin" "darwinarm64" "linux" "win32")
217
+ declare -a platforms=("darwin" "darwinarm64" "linux" "linuxarm64" " win32")
167
218
168
219
for platform in "${platforms[@]}"; do
169
220
mkdir server/analysis_binaries/"$platform"
0 commit comments