@@ -15,8 +15,12 @@ concurrency:
15
15
cancel-in-progress : true
16
16
17
17
jobs :
18
- build-ubuntu-X64 :
19
- runs-on : ubuntu-22.04
18
+ build-ubuntu :
19
+ strategy :
20
+ fail-fast : false
21
+ matrix :
22
+ os : [ubuntu-22.04, ubuntu-22.04-arm]
23
+ runs-on : ${{ matrix.os }}
20
24
outputs :
21
25
eras : ${{ steps.eras-test-lab.outputs.eras }}
22
26
steps :
32
36
33
37
# We separate the build in 2 steps as we want to avoid side effects with Rust feature unification.
34
38
- name : Cargo build - Tooling
39
+ if : matrix.os == 'ubuntu-22.04'
35
40
shell : bash
36
41
run : cargo build --release --bin mithril-end-to-end --bin load-aggregator --features bundle_tls
37
42
57
62
if-no-files-found : error
58
63
59
64
- name : Publish End-to-end runner (${{ runner.os }}-${{ runner.arch }})
65
+ if : matrix.os == 'ubuntu-22.04'
60
66
uses : actions/upload-artifact@v4
61
67
with :
62
68
name : mithril-tooling-${{ runner.os }}-${{ runner.arch }}
66
72
if-no-files-found : error
67
73
68
74
- name : Prepare test lab eras
75
+ if : matrix.os == 'ubuntu-22.04'
69
76
id : eras-test-lab
70
77
run : |
71
78
ERAS=$(./target/release/mithril-aggregator era list --json)
@@ -173,11 +180,13 @@ jobs:
173
180
strategy :
174
181
fail-fast : false
175
182
matrix :
176
- os : [ubuntu-24.04, macos-14, windows-latest]
183
+ os : [ubuntu-24.04, ubuntu-24.04-arm, macos-14, windows-latest]
177
184
178
185
include :
179
186
- os : ubuntu-24.04
180
187
test-args : --features full,unstable,future_dmq --workspace
188
+ - os : ubuntu-24.04-arm
189
+ test-args : --features full,unstable,future_dmq --workspace
181
190
# Exclude nodes not officially supported on Windows and macOS (only mithril-client is supported)
182
191
- os : macos-14
183
192
test-args : >
@@ -326,12 +335,12 @@ jobs:
326
335
327
336
e2e :
328
337
runs-on : ubuntu-24.04
329
- needs : [build-ubuntu-X64 ]
338
+ needs : [build-ubuntu]
330
339
strategy :
331
340
fail-fast : false
332
341
matrix :
333
342
mode : ["std"]
334
- era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras) }}
343
+ era : ${{ fromJSON(needs.build-ubuntu.outputs.eras) }}
335
344
next_era : [""]
336
345
cardano_node_version : ["10.3.1", "10.4.1"]
337
346
hard_fork_latest_era_at_epoch : [0]
@@ -341,32 +350,32 @@ jobs:
341
350
include :
342
351
# Include a test for partial decentralization with leader/follower signer registration and P2P signature registration
343
352
- mode : " leader-follower"
344
- era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras)[0] }}
353
+ era : ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
345
354
next_era : [""]
346
355
cardano_node_version : " 10.3.1"
347
356
hard_fork_latest_era_at_epoch : 0
348
357
run_id : " #1"
349
358
extra_args : " --number-of-aggregators=2 --use-relays --relay-signer-registration-mode=passthrough --relay-signature-registration-mode=p2p"
350
359
# Include a test for full dedentralization P2P signer registration and P2P signature registration
351
360
- mode : " decentralized"
352
- era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras)[0] }}
361
+ era : ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
353
362
next_era : " "
354
363
cardano_node_version : " 10.3.1"
355
364
hard_fork_latest_era_at_epoch : 0
356
365
run_id : " #1"
357
366
extra_args : " --number-of-aggregators=2 --use-relays --relay-signer-registration-mode=p2p --relay-signature-registration-mode=p2p"
358
367
# Include a test for the era switch without regenesis
359
368
- mode : " std"
360
- era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras)[0] }}
361
- next_era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras)[1] }}
369
+ era : ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
370
+ next_era : ${{ fromJSON(needs.build-ubuntu.outputs.eras)[1] }}
362
371
cardano_node_version : " 10.3.1"
363
372
hard_fork_latest_era_at_epoch : 0
364
373
run_id : " #1"
365
374
extra_args : " "
366
375
# Include a test for the era switch with regenesis
367
376
- mode : " std"
368
- era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras)[0] }}
369
- next_era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras)[1] }}
377
+ era : ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
378
+ next_era : ${{ fromJSON(needs.build-ubuntu.outputs.eras)[1] }}
370
379
cardano_node_version : " 10.3.1"
371
380
hard_fork_latest_era_at_epoch : 0
372
381
run_id : " #1"
@@ -494,6 +503,12 @@ jobs:
494
503
- name : Checkout
495
504
uses : actions/checkout@v4
496
505
506
+ - name : Set up QEMU
507
+ uses : docker/setup-qemu-action@v3
508
+
509
+ - name : Set up Docker Buildx
510
+ uses : docker/setup-buildx-action@v3
511
+
497
512
- name : Log in to the Container registry
498
513
uses : docker/login-action@v3
499
514
with :
@@ -510,11 +525,17 @@ jobs:
510
525
unstable
511
526
type=raw,value=${{ github.base_ref || github.ref_name }}-{{sha}}
512
527
513
- - name : Download built artifacts
528
+ - name : Download built artifacts (Linux-X64)
514
529
uses : actions/download-artifact@v4
515
530
with :
516
- name : mithril-distribution-${{ runner.os }}-${{ runner.arch }}
517
- path : ${{ matrix.project }}
531
+ name : mithril-distribution-Linux-X64
532
+ path : ${{ matrix.project }}/bin-linux-amd64
533
+
534
+ - name : Download built artifacts (Linux-ARM64)
535
+ uses : actions/download-artifact@v4
536
+ with :
537
+ name : mithril-distribution-Linux-ARM64
538
+ path : ${{ matrix.project }}/bin-linux-arm64
518
539
519
540
- name : Build and push Docker image
520
541
uses : docker/build-push-action@v6
@@ -523,6 +544,8 @@ jobs:
523
544
file : ${{ env.DOCKER_FILE }}
524
545
push : ${{ env.PUSH_PACKAGES }}
525
546
tags : ${{ steps.meta.outputs.tags }}
547
+ platforms : linux/amd64,linux/arm64
548
+ provenance : false
526
549
527
550
publish-crate-test :
528
551
strategy :
@@ -628,6 +651,18 @@ jobs:
628
651
name : mithril-deb-packages-Linux-X64
629
652
path : ./package
630
653
654
+ - name : Download built artifacts (Linux-ARM64)
655
+ uses : actions/download-artifact@v4
656
+ with :
657
+ name : mithril-distribution-Linux-ARM64
658
+ path : ./package-Linux-ARM64
659
+
660
+ - name : Download Debian packages (Linux-ARM64)
661
+ uses : actions/download-artifact@v4
662
+ with :
663
+ name : mithril-deb-packages-Linux-ARM64
664
+ path : ./package
665
+
631
666
- name : Download built artifacts (macOS-ARM64)
632
667
uses : actions/download-artifact@v4
633
668
with :
0 commit comments