@@ -15,8 +15,12 @@ concurrency:
1515 cancel-in-progress : true
1616
1717jobs :
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 }}
2024 outputs :
2125 eras : ${{ steps.eras-test-lab.outputs.eras }}
2226 steps :
3236
3337 # We separate the build in 2 steps as we want to avoid side effects with Rust feature unification.
3438 - name : Cargo build - Tooling
39+ if : matrix.os == 'ubuntu-22.04'
3540 shell : bash
3641 run : cargo build --release --bin mithril-end-to-end --bin load-aggregator --features bundle_tls
3742
5762 if-no-files-found : error
5863
5964 - name : Publish End-to-end runner (${{ runner.os }}-${{ runner.arch }})
65+ if : matrix.os == 'ubuntu-22.04'
6066 uses : actions/upload-artifact@v4
6167 with :
6268 name : mithril-tooling-${{ runner.os }}-${{ runner.arch }}
6672 if-no-files-found : error
6773
6874 - name : Prepare test lab eras
75+ if : matrix.os == 'ubuntu-22.04'
6976 id : eras-test-lab
7077 run : |
7178 ERAS=$(./target/release/mithril-aggregator era list --json)
@@ -173,11 +180,13 @@ jobs:
173180 strategy :
174181 fail-fast : false
175182 matrix :
176- os : [ubuntu-24.04, macos-14, windows-latest]
183+ os : [ubuntu-24.04, ubuntu-24.04-arm, macos-14, windows-latest]
177184
178185 include :
179186 - os : ubuntu-24.04
180187 test-args : --features full,unstable,future_dmq --workspace
188+ - os : ubuntu-24.04-arm
189+ test-args : --features full,unstable,future_dmq --workspace
181190 # Exclude nodes not officially supported on Windows and macOS (only mithril-client is supported)
182191 - os : macos-14
183192 test-args : >
@@ -326,12 +335,12 @@ jobs:
326335
327336 e2e :
328337 runs-on : ubuntu-24.04
329- needs : [build-ubuntu-X64 ]
338+ needs : [build-ubuntu]
330339 strategy :
331340 fail-fast : false
332341 matrix :
333342 mode : ["std"]
334- era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras) }}
343+ era : ${{ fromJSON(needs.build-ubuntu.outputs.eras) }}
335344 next_era : [""]
336345 cardano_node_version : ["10.3.1", "10.4.1"]
337346 hard_fork_latest_era_at_epoch : [0]
@@ -341,32 +350,32 @@ jobs:
341350 include :
342351 # Include a test for partial decentralization with leader/follower signer registration and P2P signature registration
343352 - mode : " leader-follower"
344- era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras)[0] }}
353+ era : ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
345354 next_era : [""]
346355 cardano_node_version : " 10.3.1"
347356 hard_fork_latest_era_at_epoch : 0
348357 run_id : " #1"
349358 extra_args : " --number-of-aggregators=2 --use-relays --relay-signer-registration-mode=passthrough --relay-signature-registration-mode=p2p"
350359 # Include a test for full dedentralization P2P signer registration and P2P signature registration
351360 - mode : " decentralized"
352- era : ${{ fromJSON(needs.build-ubuntu-X64 .outputs.eras)[0] }}
361+ era : ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
353362 next_era : " "
354363 cardano_node_version : " 10.3.1"
355364 hard_fork_latest_era_at_epoch : 0
356365 run_id : " #1"
357366 extra_args : " --number-of-aggregators=2 --use-relays --relay-signer-registration-mode=p2p --relay-signature-registration-mode=p2p"
358367 # Include a test for the era switch without regenesis
359368 - 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] }}
362371 cardano_node_version : " 10.3.1"
363372 hard_fork_latest_era_at_epoch : 0
364373 run_id : " #1"
365374 extra_args : " "
366375 # Include a test for the era switch with regenesis
367376 - 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] }}
370379 cardano_node_version : " 10.3.1"
371380 hard_fork_latest_era_at_epoch : 0
372381 run_id : " #1"
@@ -494,6 +503,12 @@ jobs:
494503 - name : Checkout
495504 uses : actions/checkout@v4
496505
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+
497512 - name : Log in to the Container registry
498513 uses : docker/login-action@v3
499514 with :
@@ -510,11 +525,17 @@ jobs:
510525 unstable
511526 type=raw,value=${{ github.base_ref || github.ref_name }}-{{sha}}
512527
513- - name : Download built artifacts
528+ - name : Download built artifacts (Linux-X64)
514529 uses : actions/download-artifact@v4
515530 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
518539
519540 - name : Build and push Docker image
520541 uses : docker/build-push-action@v6
@@ -523,6 +544,8 @@ jobs:
523544 file : ${{ env.DOCKER_FILE }}
524545 push : ${{ env.PUSH_PACKAGES }}
525546 tags : ${{ steps.meta.outputs.tags }}
547+ platforms : linux/amd64,linux/arm64
548+ provenance : false
526549
527550 publish-crate-test :
528551 strategy :
@@ -628,6 +651,18 @@ jobs:
628651 name : mithril-deb-packages-Linux-X64
629652 path : ./package
630653
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+
631666 - name : Download built artifacts (macOS-ARM64)
632667 uses : actions/download-artifact@v4
633668 with :
0 commit comments