@@ -34,7 +34,8 @@ concurrency:
34
34
35
35
jobs :
36
36
build-and-test :
37
- runs-on : ${{ matrix.os }}
37
+ runs-on : ${{ matrix.os || 'ubuntu-24.04' }}
38
+ container : ${{ matrix.container }}
38
39
strategy :
39
40
40
41
fail-fast : false
@@ -57,21 +58,21 @@ jobs:
57
58
- cc : " gcc-7"
58
59
cxx : " g++-7"
59
60
compiler_pkgs : " gcc-7 g++-7"
60
- os : " ubuntu- 20.04"
61
+ container : " ubuntu: 20.04"
61
62
otp : " 27"
62
63
elixir_version : " 1.17"
63
64
rebar3_version : " 3.24.0"
64
65
- cc : " gcc-8"
65
66
cxx : " g++-8"
66
67
compiler_pkgs : " gcc-8 g++-8"
67
- os : " ubuntu- 20.04"
68
+ container : " ubuntu: 20.04"
68
69
otp : " 27"
69
70
elixir_version : " 1.17"
70
71
rebar3_version : " 3.24.0"
71
72
- cc : " gcc-9"
72
73
cxx : " g++-9"
73
74
compiler_pkgs : " gcc-9 g++-9"
74
- os : " ubuntu- 20.04"
75
+ container : " ubuntu: 20.04"
75
76
# otp: all
76
77
- cc : " gcc-10"
77
78
cxx : " g++-10"
@@ -119,13 +120,13 @@ jobs:
119
120
cxx : " clang++-10"
120
121
compiler_pkgs : " clang-10"
121
122
cmake_opts_other : " -DAVM_WARNINGS_ARE_ERRORS=ON"
122
- os : " ubuntu- 20.04"
123
+ container : " ubuntu: 20.04"
123
124
# otp: all
124
125
- cc : " clang-11"
125
126
cxx : " clang++-11"
126
127
compiler_pkgs : " clang-11"
127
128
cmake_opts_other : " -DAVM_WARNINGS_ARE_ERRORS=ON"
128
- os : " ubuntu- 20.04"
129
+ container : " ubuntu: 20.04"
129
130
otp : " 27"
130
131
elixir_version : " 1.17"
131
132
rebar3_version : " 3.24.0"
@@ -195,37 +196,41 @@ jobs:
195
196
rebar3_version : " 3.24.0"
196
197
197
198
# Old versions of OTP/Elixir
198
- - os : " ubuntu- 20.04"
199
+ - container : " ubuntu: 20.04"
199
200
cc : " cc"
200
201
cxx : " c++"
201
202
cflags : " "
202
203
otp : " 21"
203
204
elixir_version : " 1.7"
204
205
rebar3_version : " 3.15.2"
206
+ compiler_pkgs : " g++"
205
207
206
- - os : " ubuntu- 20.04"
208
+ - container : " ubuntu: 20.04"
207
209
cc : " cc"
208
210
cxx : " c++"
209
211
cflags : " "
210
212
otp : " 22"
211
213
elixir_version : " 1.8"
212
214
rebar3_version : " 3.18.0"
215
+ compiler_pkgs : " g++"
213
216
214
- - os : " ubuntu- 20.04"
217
+ - container : " ubuntu: 20.04"
215
218
cc : " cc"
216
219
cxx : " c++"
217
220
cflags : " "
218
221
otp : " 23"
219
222
elixir_version : " 1.11"
220
223
rebar3_version : " 3.20.0"
224
+ compiler_pkgs : " g++"
221
225
222
- - os : " ubuntu-22 .04"
226
+ - container : " ubuntu:20 .04"
223
227
cc : " cc"
224
228
cxx : " c++"
225
229
cflags : " "
226
230
otp : " 24"
227
231
elixir_version : " 1.14"
228
232
rebar3_version : " 3.23.0"
233
+ compiler_pkgs : " g++"
229
234
230
235
- os : " ubuntu-24.04"
231
236
cc : " cc"
@@ -235,13 +240,14 @@ jobs:
235
240
rebar3_version : " 3.24.0"
236
241
237
242
# Additional default compiler builds
238
- - os : " ubuntu- 20.04"
243
+ - container : " ubuntu: 20.04"
239
244
cc : " cc"
240
245
cxx : " c++"
241
246
cflags : " "
242
247
otp : " 27"
243
248
elixir_version : " 1.17"
244
249
rebar3_version : " 3.24.0"
250
+ compiler_pkgs : " g++"
245
251
246
252
- os : " ubuntu-22.04"
247
253
cc : " cc"
@@ -271,7 +277,7 @@ jobs:
271
277
compiler_pkgs : " clang-18"
272
278
273
279
# Additional 32 bits build
274
- - os : " ubuntu- 20.04"
280
+ - container : " ubuntu: 20.04"
275
281
cc : " gcc-10"
276
282
cxx : " g++-10"
277
283
cflags : " -m32 -O3"
@@ -285,13 +291,30 @@ jobs:
285
291
libc6-dbg:i386 zlib1g-dev:i386 libmbedtls-dev:i386"
286
292
287
293
env :
294
+ ImageOS : ${{ matrix.container == 'ubuntu:20.04' && 'ubuntu20' || matrix.os == 'ubuntu-20.04' && 'ubuntu20' || matrix.os == 'ubuntu-22.04' && 'ubuntu22' || matrix.os == 'ubuntu-24.04' && 'ubuntu24' || 'ubuntu24' }}
288
295
CC : ${{ matrix.cc }}
289
296
CXX : ${{ matrix.cxx }}
290
297
CFLAGS : ${{ matrix.cflags }}
291
298
CXXFLAGS : ${{ matrix.cflags }}
299
+ DEBIAN_FRONTEND : noninteractive
300
+ TZ : " Etc/UTC"
292
301
293
302
steps :
294
303
# Setup
304
+ - name : " Install deps for containers"
305
+ if : matrix.container != ''
306
+ run : apt-get update && apt-get install -y --no-install-recommends sudo unzip git tzdata
307
+
308
+ - name : " Add i386 architecture"
309
+ if : matrix.arch == 'i386'
310
+ run : sudo dpkg --add-architecture i386
311
+
312
+ - name : " APT update"
313
+ run : sudo apt update -y
314
+
315
+ - name : " Install deps"
316
+ run : sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev
317
+
295
318
- name : " Checkout repo"
296
319
uses : actions/checkout@v4
297
320
with :
@@ -308,16 +331,6 @@ jobs:
308
331
https://repo.hex.pm
309
332
https://cdn.jsdelivr.net/hex
310
333
311
- - name : " Add i386 architecture"
312
- if : matrix.arch == 'i386'
313
- run : sudo dpkg --add-architecture i386
314
-
315
- - name : " APT update"
316
- run : sudo apt update -y
317
-
318
- - name : " Install deps"
319
- run : sudo apt install -y ${{ matrix.compiler_pkgs}} cmake gperf zlib1g-dev doxygen valgrind libmbedtls-dev
320
-
321
334
# Builder info
322
335
- name : " System info"
323
336
run : |
@@ -436,10 +449,12 @@ jobs:
436
449
working-directory : build
437
450
run : |
438
451
ulimit -c unlimited
439
- if command -v elixirc &> /dev/null
452
+ if command -v elixirc >/dev/null 2>&1 && command -v elixir > /dev/null 2>&1
440
453
then
441
454
valgrind --error-exitcode=1 ./src/AtomVM ./tests/libs/exavmlib/Tests.avm
442
455
./src/AtomVM ./tests/libs/exavmlib/Tests.avm
456
+ else
457
+ echo "Elixir not installed, skipping Elixir tests"
443
458
fi
444
459
445
460
- name : " Install and smoke test"
0 commit comments