Trust world #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |