Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions .github/workflows/actions/prepare-distribution/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,15 @@ runs:
--version "${{ inputs.version-name }}" \
--target "linux-x64"

- name: Package distribution (Linux-ARM64)
shell: bash
run: |
python3 ./.github/workflows/scripts/package-distribution.py \
--input package-Linux-ARM64/ \
--dest package/ \
--version "${{ inputs.version-name }}" \
--target "linux-arm64"

- name: Package distribution (macOS-ARM64)
shell: bash
run: |
Expand Down Expand Up @@ -84,12 +93,24 @@ runs:
| jq -r 'keys_unsorted[] as $network | "| \($network) | \(.[$network]) |"' \
>> ./release-notes-addon.txt

- name: Add minimum supported libc version
- name: Add platform support table
shell: bash
run: |
cat >> ./release-notes-addon.txt << EOF

## Linux Requirements
## Platform Support

Summary of the platforms for which pre-built binaries are provided.

| Binary | Linux x64 | Linux arm64 | macOS arm64 | Windows x64 |
| ------------------ | :-------: | :---------: | :---------: | :---------: |
| mithril-aggregator | ✔ | ✔ ⁽\*⁾ | ⛔ | ⛔ |
| mithril-signer | ✔ | ✔ ⁽\*⁾ | ⛔ | ⛔ |
| mithril-client | ✔ | ✔ ⁽\*⁾ | ✔ | ✔ |

⁽\*⁾⚠️ Linux arm64 builds are not guaranteed, use at your own risk.

### Linux Requirements
The Linux binaries target \`glibc\`: to run them or install the \`.deb\` packages you must have \`glibc\` version \`2.35+\` installed.
Compatible systems include, but are not limited to, \`Ubuntu 22.04+\` or \`Debian 12+\` (Bookworm)).
EOF
Expand Down
63 changes: 49 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,12 @@ concurrency:
cancel-in-progress: true

jobs:
build-ubuntu-X64:
runs-on: ubuntu-22.04
build-ubuntu:
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-22.04-arm]
runs-on: ${{ matrix.os }}
outputs:
eras: ${{ steps.eras-test-lab.outputs.eras }}
steps:
Expand All @@ -32,6 +36,7 @@ jobs:

# We separate the build in 2 steps as we want to avoid side effects with Rust feature unification.
- name: Cargo build - Tooling
if: matrix.os == 'ubuntu-22.04'
shell: bash
run: cargo build --release --bin mithril-end-to-end --bin load-aggregator --features bundle_tls

Expand All @@ -57,6 +62,7 @@ jobs:
if-no-files-found: error

- name: Publish End-to-end runner (${{ runner.os }}-${{ runner.arch }})
if: matrix.os == 'ubuntu-22.04'
uses: actions/upload-artifact@v4
with:
name: mithril-tooling-${{ runner.os }}-${{ runner.arch }}
Expand All @@ -66,6 +72,7 @@ jobs:
if-no-files-found: error

- name: Prepare test lab eras
if: matrix.os == 'ubuntu-22.04'
id: eras-test-lab
run: |
ERAS=$(./target/release/mithril-aggregator era list --json)
Expand Down Expand Up @@ -173,11 +180,13 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, macos-14, windows-latest]
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-14, windows-latest]

include:
- os: ubuntu-24.04
test-args: --features full,unstable,future_dmq --workspace
- os: ubuntu-24.04-arm
test-args: --features full,unstable,future_dmq --workspace
# Exclude nodes not officially supported on Windows and macOS (only mithril-client is supported)
- os: macos-14
test-args: >
Expand Down Expand Up @@ -326,12 +335,12 @@ jobs:

e2e:
runs-on: ubuntu-24.04
needs: [build-ubuntu-X64]
needs: [build-ubuntu]
strategy:
fail-fast: false
matrix:
mode: ["std"]
era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras) }}
era: ${{ fromJSON(needs.build-ubuntu.outputs.eras) }}
next_era: [""]
cardano_node_version: ["10.3.1", "10.4.1"]
hard_fork_latest_era_at_epoch: [0]
Expand All @@ -341,32 +350,32 @@ jobs:
include:
# Include a test for partial decentralization with leader/follower signer registration and P2P signature registration
- mode: "leader-follower"
era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }}
era: ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
next_era: [""]
cardano_node_version: "10.3.1"
hard_fork_latest_era_at_epoch: 0
run_id: "#1"
extra_args: "--number-of-aggregators=2 --use-relays --relay-signer-registration-mode=passthrough --relay-signature-registration-mode=p2p"
# Include a test for full dedentralization P2P signer registration and P2P signature registration
- mode: "decentralized"
era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }}
era: ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
next_era: ""
cardano_node_version: "10.3.1"
hard_fork_latest_era_at_epoch: 0
run_id: "#1"
extra_args: "--number-of-aggregators=2 --use-relays --relay-signer-registration-mode=p2p --relay-signature-registration-mode=p2p"
# Include a test for the era switch without regenesis
- mode: "std"
era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }}
next_era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[1] }}
era: ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
next_era: ${{ fromJSON(needs.build-ubuntu.outputs.eras)[1] }}
cardano_node_version: "10.3.1"
hard_fork_latest_era_at_epoch: 0
run_id: "#1"
extra_args: ""
# Include a test for the era switch with regenesis
- mode: "std"
era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[0] }}
next_era: ${{ fromJSON(needs.build-ubuntu-X64.outputs.eras)[1] }}
era: ${{ fromJSON(needs.build-ubuntu.outputs.eras)[0] }}
next_era: ${{ fromJSON(needs.build-ubuntu.outputs.eras)[1] }}
cardano_node_version: "10.3.1"
hard_fork_latest_era_at_epoch: 0
run_id: "#1"
Expand Down Expand Up @@ -494,6 +503,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
Expand All @@ -510,11 +525,17 @@ jobs:
unstable
type=raw,value=${{ github.base_ref || github.ref_name }}-{{sha}}

- name: Download built artifacts
- name: Download built artifacts (Linux-X64)
uses: actions/download-artifact@v4
with:
name: mithril-distribution-${{ runner.os }}-${{ runner.arch }}
path: ${{ matrix.project }}
name: mithril-distribution-Linux-X64
path: ${{ matrix.project }}/bin-linux-amd64

- name: Download built artifacts (Linux-ARM64)
uses: actions/download-artifact@v4
with:
name: mithril-distribution-Linux-ARM64
path: ${{ matrix.project }}/bin-linux-arm64

- name: Build and push Docker image
uses: docker/build-push-action@v6
Expand All @@ -523,6 +544,8 @@ jobs:
file: ${{ env.DOCKER_FILE }}
push: ${{ env.PUSH_PACKAGES }}
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/amd64,linux/arm64
provenance: false

publish-crate-test:
strategy:
Expand Down Expand Up @@ -628,6 +651,18 @@ jobs:
name: mithril-deb-packages-Linux-X64
path: ./package

- name: Download built artifacts (Linux-ARM64)
uses: actions/download-artifact@v4
with:
name: mithril-distribution-Linux-ARM64
path: ./package-Linux-ARM64

- name: Download Debian packages (Linux-ARM64)
uses: actions/download-artifact@v4
with:
name: mithril-deb-packages-Linux-ARM64
path: ./package

- name: Download built artifacts (macOS-ARM64)
uses: actions/download-artifact@v4
with:
Expand Down
37 changes: 36 additions & 1 deletion .github/workflows/pre-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,24 @@ jobs:
workflow: ci.yml
workflow_conclusion: success

- name: Download built artifacts (Linux-ARM64)
uses: dawidd6/action-download-artifact@v6
with:
name: mithril-distribution-Linux-ARM64
path: ./package-Linux-ARM64
commit: ${{ github.sha }}
workflow: ci.yml
workflow_conclusion: success

- name: Download Debian packages (Linux-ARM64)
uses: dawidd6/action-download-artifact@v6
with:
name: mithril-deb-packages-Linux-ARM64
path: ./package
commit: ${{ github.sha }}
workflow: ci.yml
workflow_conclusion: success

- name: Download built artifacts (macOS-ARM64)
uses: dawidd6/action-download-artifact@v6
with:
Expand Down Expand Up @@ -112,6 +130,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
Expand All @@ -132,7 +156,16 @@ jobs:
uses: dawidd6/action-download-artifact@v6
with:
name: mithril-distribution-Linux-X64
path: ${{ matrix.project }}
path: ${{ matrix.project }}/bin-linux-amd64
commit: ${{ github.sha }}
workflow: ci.yml
workflow_conclusion: success

- name: Download built artifacts (Linux-arm64)
uses: dawidd6/action-download-artifact@v6
with:
name: mithril-distribution-Linux-ARM64
path: ${{ matrix.project }}/bin-linux-arm64
commit: ${{ github.sha }}
workflow: ci.yml
workflow_conclusion: success
Expand All @@ -144,6 +177,8 @@ jobs:
file: ${{ env.DOCKER_FILE }}
push: true
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/amd64,linux/arm64
provenance: false

deploy-pre-release:
strategy:
Expand Down
19 changes: 18 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
Expand All @@ -51,7 +57,16 @@ jobs:
uses: dawidd6/action-download-artifact@v6
with:
name: mithril-distribution-Linux-X64
path: ${{ matrix.project }}
path: ${{ matrix.project }}/bin-linux-amd64
commit: ${{ github.sha }}
workflow: ci.yml
workflow_conclusion: success

- name: Download built artifacts (Linux-arm64)
uses: dawidd6/action-download-artifact@v6
with:
name: mithril-distribution-Linux-ARM64
path: ${{ matrix.project }}/bin-linux-arm64
commit: ${{ github.sha }}
workflow: ci.yml
workflow_conclusion: success
Expand All @@ -63,6 +78,8 @@ jobs:
file: ${{ env.DOCKER_FILE }}
push: true
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/amd64,linux/arm64
provenance: false

deploy-release:
strategy:
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/test-client.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, macos-14, windows-latest]
os: [ubuntu-24.04, ubuntu-24.04-arm, macos-14, windows-latest]
extra_args: ["", "--include-ancillary"]

runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -163,12 +163,13 @@ jobs:
run: ./mithril-client ${{ steps.prepare.outputs.debug_level }} --origin-tag CI cardano-db download $CDB_SNAPSHOT_DIGEST --backend v1 --download-dir v1 ${{ matrix.extra_args }} 2>&1 | tee cdb-download-output.txt

- name: Cardano Database Snapshot / verify Cardano node starts successfully
if: runner.os == 'Linux'
if: matrix.os == 'ubuntu-24.04'
shell: bash
run: .github/workflows/scripts/verify-cardano-db-restoration.sh ./bin/cdb-download-output.txt "${{ matrix.extra_args }}"

# The 'snapshot-converter' binary is not currently supported on Linux ARM64 platforms.
- name: Ledger state snapshot conversion from InMemory to LMDB
if: matrix.extra_args == '--include-ancillary'
if: matrix.os != 'ubuntu-24.04-arm' && matrix.extra_args == '--include-ancillary'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
Expand Down Expand Up @@ -268,7 +269,7 @@ jobs:
run: ./mithril-client ${{ steps.prepare.outputs.debug_level }} --origin-tag CI cardano-db verify --backend v2 --db-dir v2/db $CARDANO_DATABASE_V2_SNAPSHOT_HASH | tee cdb-v2-verify-output.txt

- name: Cardano Database V2 Snapshot / verify Cardano node starts successfully
if: runner.os == 'Linux' && steps.aggregator_capability_unix.outputs.cardano_database_v2_enabled == 'true'
if: matrix.os == 'ubuntu-24.04' && steps.aggregator_capability_unix.outputs.cardano_database_v2_enabled == 'true'
shell: bash
run: .github/workflows/scripts/verify-cardano-db-restoration.sh ./bin/cdb-v2-download-output.txt "${{ matrix.extra_args }}"

Expand Down
19 changes: 18 additions & 1 deletion .github/workflows/test-docker-distribution.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,26 @@ jobs:
run: |
git checkout ${{ inputs.commit_sha }}

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Download built artifacts (Linux-x64)
uses: dawidd6/action-download-artifact@v6
with:
name: mithril-distribution-Linux-X64
path: ${{ matrix.project }}
path: ${{ matrix.project }}/bin-linux-amd64
commit: ${{ inputs.commit_sha }}
workflow: ci.yml
workflow_conclusion: completed

- name: Download built artifacts (Linux-arm64)
uses: dawidd6/action-download-artifact@v6
with:
name: mithril-distribution-Linux-ARM64
path: ${{ matrix.project }}/bin-linux-arm64
commit: ${{ inputs.commit_sha }}
workflow: ci.yml
workflow_conclusion: completed
Expand Down Expand Up @@ -108,3 +123,5 @@ jobs:
CARDANO_BIN_URL=${{ inputs.cardano_bin_url }}
push: ${{ inputs.dry_run == false }}
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/amd64,linux/arm64
provenance: false
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ As a minor extension, we have adopted a slightly different versioning convention

- Upgrade the Rust edition of the repository from 2021 to 2024

- Add pre-built Linux ARM binaries in the distribution for the signer, client CLI, and aggregator.

- **UNSTABLE** :
- Support for DMQ signature publisher in the signer and signature consumer in the aggregator.

Expand Down
Loading
Loading