Skip to content

Trust world

Trust world #9

Workflow file for this run

name: E2E Tests
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build Rust binaries
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-wasip1
- name: Install protoc
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler
- name: Install cargo-component
run: cargo install cargo-component
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
threshold-ffi/target
ark-ffi/target
cosigner/target
server/target
e2e/signer-server/target
key: e2e-rust-${{ hashFiles('**/Cargo.lock', '**/Cargo.toml') }}
restore-keys: e2e-rust-
- name: Build all
run: |
cargo build --release --manifest-path threshold-ffi/Cargo.toml
cargo build --release --manifest-path ark-ffi/Cargo.toml
(cd cosigner && cargo component build --release)
cargo build --release --manifest-path server/Cargo.toml
cargo build --release --manifest-path e2e/signer-server/Cargo.toml
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: e2e-binaries
retention-days: 1
path: |
threshold-ffi/target/release/libthreshold_ffi.so
ark-ffi/target/release/libark_ffi.so
cosigner/target/wasm32-wasip1/release/cosigner.wasm
server/target/release/server
e2e/signer-server/target/release/signer-server
bitcoin-e2e:
name: Bitcoin E2E (regtest)
needs: build
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Download binaries
uses: actions/download-artifact@v4
with:
name: e2e-binaries
- name: Make binaries executable
run: |
chmod +x server/target/release/server
chmod +x e2e/signer-server/target/release/signer-server
- name: Setup Dart
uses: dart-lang/setup-dart@v1
with:
sdk: '3.11.4'
- name: Install Dart dependencies
run: cd e2e && dart pub get
- name: Start signer-server
run: |
e2e/signer-server/target/release/signer-server --port 9090 &
sleep 1
- name: Run Bitcoin E2E test
run: cd e2e && dart test test/full_system_test.dart --timeout 600s
- name: Cleanup
if: always()
run: |
pkill -f signer-server || true
docker compose down || true
ark-e2e:
name: Ark E2E (regtest)
needs: build
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v4
- name: Download binaries
uses: actions/download-artifact@v4
with:
name: e2e-binaries
- name: Make binaries executable
run: |
chmod +x server/target/release/server
chmod +x e2e/signer-server/target/release/signer-server
- name: Setup Dart
uses: dart-lang/setup-dart@v1
with:
sdk: '3.11.4'
- name: Install Dart dependencies
run: cd e2e && dart pub get
- name: Start Docker services (regtest + Ark)
run: |
docker compose -f docker-compose.yml -f docker-compose.ark.yml up -d
echo "Waiting for services to stabilize (30s)..."
sleep 30
- name: Initialize Bitcoin chain
run: ./scripts/bitcoin.sh init
- name: Initialize arkd
run: ./scripts/arkd_init.sh --fund
- name: Start signer-server
run: |
e2e/signer-server/target/release/signer-server --port 9090 &
sleep 1
- name: Run Ark E2E test
run: cd e2e && dart test test/ark_e2e_test.dart --timeout 600s
- name: Cleanup
if: always()
run: |
pkill -f signer-server || true
docker compose -f docker-compose.yml -f docker-compose.ark.yml down || true