Skip to content

chore: align build options for snapshot test and for normal builds #604

chore: align build options for snapshot test and for normal builds

chore: align build options for snapshot test and for normal builds #604

Workflow file for this run

name: Continuous Integration
on:
workflow_dispatch:
push:
branches: ["main"]
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches: ["*"]
env:
CARGO_TERM_COLOR: always
RUST_CACHE_PATH: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
jobs:
sanity:
name: Sanity
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
with:
path: ${{ env.RUST_CACHE_PATH }}
key: cargo-x86_64-unknown-linux-gnu
restore-keys: |
cargo-x86_64-unknown-linux-gnu
- name: Check format
run: cargo fmt-amaru
- name: Run clippy
run: cargo clippy-amaru
build:
name: Build on ${{ matrix.environments.runner }} with target ${{ matrix.environments.target }}
strategy:
fail-fast: false
matrix:
environments:
- runner: ubuntu-latest
target: x86_64-unknown-linux-gnu
- runner: macos-latest
target: aarch64-apple-darwin
- runner: windows-latest
target: x86_64-pc-windows-msvc
command: test --profile dev-debug
- runner: ubuntu-latest
target: wasm32-unknown-unknown
packages: -p amaru-ledger -p amaru-ouroboros -p slot-arithmetic
command: build
setup: rustup target add wasm32-unknown-unknown
- runner: ubuntu-latest
target: riscv32im-risc0-zkvm-elf
packages: -p amaru-ledger -p slot-arithmetic
extra-args: +nightly -Zbuild-std=std,panic_abort
command: build
setup: |
curl -L https://risczero.com/install | bash
/home/runner/.risc0/bin/rzup install
rustup toolchain add nightly-x86_64-unknown-linux-gnu
rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
# Disabled for now
#- runner: ubuntu-latest
# target: aarch64-unknown-linux-musl
# cross-compile: true
timeout-minutes: 30
runs-on: ${{ matrix.environments.runner }}
steps:
- uses: actions/checkout@v4
- id: timestamp
shell: bash
run: |
echo "value=$(/bin/date -u '+%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT
# Cache dependencies when pushing (i.e. merging into allowed branch).
- uses: actions/cache@v4
if: github.event_name == 'push'
with:
path: ${{ env.RUST_CACHE_PATH }}
key: cargo-${{ matrix.environments.target }}-${{ steps.timestamp.outputs.value }}
restore-keys: |
cargo-${{ matrix.environments.target }}
# Only restore cache for other types of events (e.g. Pull requests).
- uses: actions/cache/restore@v4
if: github.event_name != 'push'
with:
path: ${{ env.RUST_CACHE_PATH }}
key: cargo-${{ matrix.environments.target }}
restore-keys: |
cargo-${{ matrix.environments.target }}
- name: Run tests
run: |
set +e
EXTRA_ARGS="${{ matrix.environments.extra-args || '' }}"
SCOPE="${{ matrix.environments.packages || '--workspace' }}"
COMMAND="${{ matrix.environments.command || 'test' }}"
if [[ -n "${{ matrix.environments.setup }}" ]]; then
echo "Running setup command: ${{ matrix.environments.setup }}"
${{ matrix.environments.setup }}
fi
if [[ "${{ matrix.environments.cross-compile }}" == "true" ]] ; then
cargo install cross --git https://github.com/cross-rs/cross
# cross doesn't load .cargo/config.toml, see https://github.com/cross-rs/cross/issues/562
$HOME/.cargo/bin/cross $COMMAND --locked --all-features $SCOPE --target ${{ matrix.environments.target }}
else
cargo $EXTRA_ARGS $COMMAND $SCOPE --locked --target ${{ matrix.environments.target }}
fi
exitcode="$?"
if [[ "${{ matrix.environments.optional }}" == "true" && "$exitcode" != "0" ]] ; then
# Propagate failure as a warning
# but do not fail the job
echo "::warning::Tests failed with exit code $exitcode"
exit 0
else
exit "$exitcode"
fi
shell: bash
snapshots:
name: Snapshots
runs-on: ubuntu-latest
if: ${{ !github.event.pull_request.draft }}
env:
AMARU_PEER_ADDRESS: 127.0.0.1:3001
strategy:
matrix:
network: [ preprod ]
cardano_node_version: [ 10.1.4 ]
steps:
- uses: actions/checkout@v4
- id: timestamp
shell: bash
run: |
echo "value=$(/bin/date -u '+%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT
- name: Restore cardano-node DB
id: cache-cardano-node-db
uses: actions/cache/restore@v4
with:
# The path should match the one used for the 'Nightly Sync' workflow.
path: ${{ runner.temp }}/db-${{ matrix.network }}
# The key should also match
key: cardano-node-ogmios-${{ matrix.network }}
restore-keys: |
cardano-node-ogmios-${{ matrix.network }}
- name: Check if cardano-node-db is available
if: steps.cache-cardano-node-db.outputs.cache-hit == ''
run: |
echo "Haskell node db not available, aborting job."
exit 1
- name: Spawn Haskell Node
id: spawn-cardano-node
shell: bash
run: |
docker pull ghcr.io/intersectmbo/cardano-node:${{ matrix.cardano_node_version }}
make HASKELL_NODE_CONFIG_DIR=cardano-node-config NETWORK=${{ matrix.network }} download-haskell-config
docker run -d --name cardano-node \
-v ${{ runner.temp }}/db-${{ matrix.network }}:/db \
-v ${{ runner.temp }}/ipc:/ipc \
-v ./cardano-node-config:/config \
-v ./cardano-node-config:/genesis \
-p 3001:3001 \
ghcr.io/intersectmbo/cardano-node:${{ matrix.cardano_node_version }} run \
--config /config/config.json \
--database-path /db \
--socket-path /ipc/node.socket \
--topology /config/topology.json
- uses: actions/cache/restore@v4
with:
path: ${{ env.RUST_CACHE_PATH }}
key: cargo-x86_64-unknown-linux-gnu
restore-keys: |
cargo-x86_64-unknown-linux-gnu
- name: Build Amaru
run: |
cargo test --no-run -p amaru --target x86_64-unknown-linux-gnu
- name: Cache Amaru's ledger.db
id: cache-ledger-db
uses: actions/cache/restore@v4
with:
path: ./ledger.db
# If the ledger store serialisation format changes and become
# incompatible, it is necessary to bump the index below to invalidate
# the cached ledger snapshots, and recompute them from the CBOR ones
# (i.e. Full bootstrap below)
key: ${{ runner.OS }}-ledger-cache-v2
restore-keys: |
${{ runner.OS }}-ledger-cache-v2
- name: Full bootstrap amaru
if: steps.cache-ledger-db.outputs.cache-hit != 'true'
run: |
make bootstrap
- if: steps.cache-ledger-db.outputs.cache-hit != 'true'
uses: actions/cache/save@v4
with:
path: ./ledger.db
key: ${{ runner.OS }}-ledger-cache-v2
- name: Light bootstrap amaru
if: steps.cache-ledger-db.outputs.cache-hit == 'true'
run: |
make import-headers
make import-nonces
- name: Run node
timeout-minutes: 30
shell: bash
run: |
make demo
- name: Run tests
run: |
make test-e2e
- name: Teardown haskell node
shell: bash
run: |
docker stop cardano-node
docker rm cardano-node
- uses: actions/cache/save@v4
if: github.event_name == 'push'
with:
path: ${{ runner.temp }}/db-${{ matrix.network }}
key: cardano-node-ogmios-${{ matrix.network }}-${{ steps.timestamp.outputs.value }}
examples:
name: Examples
strategy:
fail-fast: false
matrix:
projects:
- path: ledger-in-nodejs
commands: |
rustup target add wasm32-unknown-unknown
make
defaults:
run:
working-directory: examples/${{ matrix.projects.path }}
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
with:
path: ${{ env.RUST_CACHE_PATH }}
key: cargo-wasm32-unknown-unknown
restore-keys: |
cargo-wasm32-unknown-unknown
- name: Run commands
run: ${{ matrix.projects.commands }}