Nit #153
This file contains 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: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
name: | |
description: 'Manually triggered' | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
# Native tests | |
test_app_sdk: | |
name: Run V-App SDK tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: x86_64-unknown-linux-gnu | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Unit tests | |
working-directory: app-sdk | |
run: | | |
cargo +nightly test --target x86_64-unknown-linux-gnu | |
test_client_sdk: | |
name: Run V-App Client SDK tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: x86_64-unknown-linux-gnu | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Install libudev-dev and pkg-config | |
run: | | |
sudo apt-get update && sudo apt-get install -y libudev-dev pkg-config | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Unit tests | |
working-directory: client-sdk | |
run: | | |
cargo +nightly test --target x86_64-unknown-linux-gnu | |
test_common: | |
name: Run common crate tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: x86_64-unknown-linux-gnu | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Unit tests | |
working-directory: common | |
run: | | |
cargo +nightly test --target x86_64-unknown-linux-gnu | |
test_vnd_test_app: | |
name: Run vnd-test app tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: x86_64-unknown-linux-gnu | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Unit tests | |
working-directory: apps/test/app | |
run: | | |
cargo +nightly test --target x86_64-unknown-linux-gnu | |
test_vnd_test_app_client: | |
name: Run vnd-test app client tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: x86_64-unknown-linux-gnu | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Install libudev-dev and pkg-config | |
run: | | |
sudo apt-get update && sudo apt-get install -y libudev-dev pkg-config | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Unit tests | |
working-directory: apps/test/client | |
run: | | |
cargo +nightly test --target x86_64-unknown-linux-gnu | |
# build Vanadium VM app | |
build_vanadium_app: | |
name: Build application using the reusable workflow | |
uses: LedgerHQ/ledger-app-workflows/.github/workflows/reusable_build.yml@v1 | |
with: | |
upload_app_binaries_artifact: "vanadium_binaries" | |
builder: ledger-app-builder | |
### Risc-V tests | |
# build test V-App | |
build_vnd_test: | |
name: vnd-test, Build on Risc-V target | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: riscv32i-unknown-none-elf | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Build app | |
working-directory: apps/test/app | |
run: | | |
cargo +nightly build --release --target riscv32i-unknown-none-elf | |
- name: Upload binaries | |
uses: actions/upload-artifact@v4 | |
with: | |
name: vnd_test_riscv_binary | |
path: apps/test/app/target/riscv32i-unknown-none-elf/release/vnd-test | |
vnd_test_speculos_integration_tests: | |
name: vnd-test, Integration tests on Speculos | |
strategy: | |
matrix: | |
include: | |
# - model: nanox # TODO: reenable once compilation is fixed | |
- model: nanosplus | |
- model: flex | |
- model: stax | |
runs-on: ubuntu-latest | |
needs: [build_vanadium_app, build_vnd_test] | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: x86_64-unknown-linux-gnu | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Install Speculos | |
run: | | |
pip install speculos | |
- name: Install dependencies | |
run: | | |
sudo apt-get update && \ | |
sudo apt-get install -y libudev-dev pkg-config && \ | |
sudo apt-get install -y qemu-user-static libvncserver-dev | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Download Vanadium binaries | |
uses: actions/download-artifact@v4 | |
with: | |
name: vanadium_binaries | |
path: ./vanadium_binaries | |
- name: Download vnd_test_riscv_binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: vnd_test_riscv_binary | |
path: ./vnd_test_riscv_binary | |
- name: Run integration tests | |
working-directory: apps/test/client | |
env: | |
VANADIUM_BINARY: ../../../vanadium_binaries/${{ matrix.model }}/release/app-vanadium | |
VAPP_BINARY: ../../../vnd_test_riscv_binary/vnd-test | |
run: | | |
cargo test --features speculos-tests | |
# build sadik V-App | |
build_vnd_sadik: | |
name: vnd-sadik, Build on Risc-V target | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: riscv32i-unknown-none-elf | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Build app | |
working-directory: apps/sadik/app | |
run: | | |
cargo +nightly build --release --target riscv32i-unknown-none-elf | |
- name: Upload binaries | |
uses: actions/upload-artifact@v4 | |
with: | |
name: vnd_sadik_riscv_binary | |
path: apps/sadik/app/target/riscv32i-unknown-none-elf/release/vnd-sadik | |
vnd_sadik_integration_tests: | |
name: vnd-sadik, Integration tests on Speculos | |
strategy: | |
matrix: | |
include: | |
# - model: nanox # TODO: reenable once compilation is fixed | |
- model: nanosplus | |
- model: flex | |
- model: stax | |
runs-on: ubuntu-latest | |
needs: [build_vanadium_app, build_vnd_sadik] | |
steps: | |
- name: Set up Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly | |
target: x86_64-unknown-linux-gnu | |
components: rustfmt, clippy | |
profile: minimal | |
- name: Install Speculos | |
run: | | |
pip install speculos | |
- name: Install dependencies | |
run: | | |
sudo apt-get update && \ | |
sudo apt-get install -y libudev-dev pkg-config && \ | |
sudo apt-get install -y qemu-user-static libvncserver-dev | |
- name: Clone | |
uses: actions/checkout@v4 | |
- name: Download Vanadium binaries | |
uses: actions/download-artifact@v4 | |
with: | |
name: vanadium_binaries | |
path: ./vanadium_binaries | |
- name: Download vnd_sadik_riscv_binary | |
uses: actions/download-artifact@v4 | |
with: | |
name: vnd_sadik_riscv_binary | |
path: ./vnd_sadik_riscv_binary | |
- name: Run integration tests | |
working-directory: apps/sadik/client | |
env: | |
VANADIUM_BINARY: ../../../vanadium_binaries/${{ matrix.model }}/release/app-vanadium | |
VAPP_BINARY: ../../../vnd_sadik_riscv_binary/vnd-sadik | |
run: | | |
cargo test --features speculos-tests |