Skip to content

Commit

Permalink
✨ fpvm tests in CI
Browse files Browse the repository at this point in the history
don't install go for `cannon-rs` tests
  • Loading branch information
clabby committed Feb 13, 2024
1 parent 6831d10 commit af9af82
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 23 deletions.
31 changes: 25 additions & 6 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,35 +20,54 @@ jobs:
cargo-lint:
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
matrix:
target: ["native", "cannon", "asterisc"]
name: lint-${{ matrix.target }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: taiki-e/install-action@just
- name: Install Rust nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: cargo fmt
run: cargo fmt --all -- --check
- name: cargo clippy
run: cargo clippy --workspace --all --locked -- -D warnings
- name: Log into ghcr
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: fmt + lint
run: just lint-${{ matrix.target }}
cargo-build:
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
matrix:
target: ["native", "cannon", "asterisc"]
name: build-${{ matrix.target }}
continue-on-error: true
steps:
- name: Checkout sources
uses: actions/checkout@v4
- uses: taiki-e/install-action@just
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Log into ghcr
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: build
id: build
run: cargo build --workspace --all --locked
run: just build-${{ matrix.target }}
cargo-doc:
runs-on: ubuntu-latest
timeout-minutes: 20
Expand Down
79 changes: 79 additions & 0 deletions .github/workflows/fpvm-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: FPVM
on: [push]
env:
CARGO_TERM_COLOR: always
jobs:
build-example-programs:
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
matrix:
fpvm: ["cannon", "asterisc"]
name: build-${{ matrix.fpvm }}-examples
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Prepare
id: prep
run: echo "::set-output name=timestamp::$(date +%s)"
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- uses: taiki-e/install-action@just
- name: Log into ghcr
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build ${{ matrix.fpvm }} examples
working-directory: ./fpvm-tests
run: just build-${{ matrix.fpvm }}-examples
- uses: actions/upload-artifact@v4
with:
name: images-${{ matrix.fpvm }}
path: |
examples/minimal/target/${{ matrix.fpvm == 'cannon' && 'mips-unknown-none' || 'riscv64gc-unknown-none-elf' }}/release/minimal
examples/simple-revm/target/${{ matrix.fpvm == 'cannon' && 'mips-unknown-none' || 'riscv64gc-unknown-none-elf' }}/release/simple-revm
fpvm-example-tests:
needs: build-example-programs
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
matrix:
fpvm: ["cannon-go", "cannon-rs", "asterisc"]
name: ${{ matrix.fpvm }}-tests
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install Rust nightly toolchain
if: contains(matrix.fpvm, 'cannon-rs')
uses: dtolnay/rust-toolchain@nightly
- name: Install xsltproc
if: contains(matrix.fpvm, 'cannon-rs')
run: sudo apt-get install xsltproc
- name: Setup Go toolchain
if: "!contains(matrix.fpvm , 'cannon-rs')"
uses: actions/setup-go@v4
with:
go-version: "1.21.6"
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- uses: taiki-e/install-action@just
- name: Download Binaries
uses: actions/download-artifact@v4
with:
name: images-${{ contains(matrix.fpvm, 'cannon') && 'cannon' || 'asterisc' }}
- name: Restore Targets
run: |
TARGET="${{ contains(matrix.fpvm, 'cannon') && 'mips-unknown-none' || 'riscv64gc-unknown-none-elf' }}"
mkdir -p examples/minimal/target/$TARGET/release
mkdir -p examples/simple-revm/target/$TARGET/release
mv minimal examples/minimal/target/$TARGET/release
mv simple-revm examples/simple-revm/target/$TARGET/release
- name: Run FPVM tests
working-directory: ./fpvm-tests
run: just test-${{ matrix.fpvm }}
5 changes: 3 additions & 2 deletions build/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,16 @@ docker run \
--platform linux/amd64 \
-v `pwd`/:/workdir \
-w="/workdir" \
cannon-pipeline:latest cargo build --release -Zbuild-std
ghcr.io/ethereum-optimism/kona/cannon-builder:main cargo build --release -Zbuild-std
```

**asterisc**

```
docker run \
--rm \
--platform linux/amd64 \
-v `pwd`/:/workdir \
-w="/workdir" \
asterisc-pipeline:latest cargo build --release -Zbuild-std
ghcr.io/ethereum-optimism/kona/asterisc-builder:main cargo build --release -Zbuild-std
```
4 changes: 2 additions & 2 deletions examples/minimal/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ build-cannon *args='':
--platform linux/amd64 \
-v `pwd`/../../:/workdir \
-w="/workdir/examples/minimal" \
cannon-pipeline:latest cargo build -Zbuild-std $@
ghcr.io/ethereum-optimism/kona/cannon-builder:main cargo build -Zbuild-std $@

# Build for the `asterisc` target
build-asterisc *args='':
Expand All @@ -16,4 +16,4 @@ build-asterisc *args='':
--platform linux/amd64 \
-v `pwd`/../../:/workdir \
-w="/workdir/examples/minimal" \
asterisc-pipeline:latest cargo build -Zbuild-std $@
ghcr.io/ethereum-optimism/kona/asterisc-builder:main cargo build -Zbuild-std $@
4 changes: 2 additions & 2 deletions examples/simple-revm/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ build-cannon *args='':
--platform linux/amd64 \
-v `pwd`/../../:/workdir \
-w="/workdir/examples/simple-revm" \
cannon-pipeline:latest cargo build -Zbuild-std $@
ghcr.io/ethereum-optimism/kona/cannon-builder:main cargo build -Zbuild-std $@

# Build for the `asterisc` target
build-asterisc *args='':
Expand All @@ -16,4 +16,4 @@ build-asterisc *args='':
--platform linux/amd64 \
-v `pwd`/../../:/workdir \
-w="/workdir/examples/simple-revm" \
asterisc-pipeline:latest cargo build -Zbuild-std $@
ghcr.io/ethereum-optimism/kona/asterisc-builder:main cargo build -Zbuild-std $@
25 changes: 18 additions & 7 deletions fpvm-tests/justfile
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
# Test all FPVM targets
test: test-cannon test-asterisc
test: build-cannon-examples build-asterisc-examples test-cannon test-asterisc

# Test programs on `cannon`
test-cannon:
# Build the programs
# Build cannon programs
build-cannon-examples:
@cd ../examples/minimal && just build-cannon --release
@cd ../examples/simple-revm && just build-cannon --release

# Build asterisc programs
build-asterisc-examples:
@cd ../examples/minimal && just build-asterisc --release
@cd ../examples/simple-revm && just build-asterisc --release

# Test programs on `cannon`
test-cannon: test-cannon-go test-cannon-rs

# Test programs on `cannon`
test-cannon-go:
# Run Cannon tests
@cd cannon-tests && go test -count=1 -v ./...

# Test programs on `cannon-rs`
test-cannon-rs:
# Run Cannon tests
@cd cannon-rs-tests && cargo +nightly test --release

# Test programs on `asterisc`
test-asterisc:
# Build the programs
@cd ../examples/minimal && just build-asterisc --release
@cd ../examples/simple-revm && just build-asterisc --release
# Run Asterisc tests
@cd asterisc-tests && go test -count=1 -v ./...
8 changes: 4 additions & 4 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ lint-cannon:
--platform linux/amd64 \
-v `pwd`/:/workdir \
-w="/workdir" \
cannon-pipeline:latest cargo +nightly clippy --workspace --all --all-features --target /mips-unknown-none.json -Zbuild-std -- -D warnings
ghcr.io/ethereum-optimism/kona/cannon-builder:main cargo +nightly clippy --workspace --all --all-features --target /mips-unknown-none.json -Zbuild-std -- -D warnings

# Lint the workspace (risc-v arch)
lint-asterisc:
Expand All @@ -32,7 +32,7 @@ lint-asterisc:
--platform linux/amd64 \
-v `pwd`/:/workdir \
-w="/workdir" \
asterisc-pipeline:latest cargo +nightly clippy --workspace --all --all-features --target riscv64gc-unknown-linux-gnu -Zbuild-std -- -D warnings
ghcr.io/ethereum-optimism/kona/asterisc-builder:main cargo +nightly clippy --workspace --all --all-features --target riscv64gc-unknown-linux-gnu -Zbuild-std -- -D warnings

# Build the workspace for all available targets
build: build-native build-cannon build-asterisc
Expand All @@ -48,7 +48,7 @@ build-cannon *args='':
--platform linux/amd64 \
-v `pwd`/:/workdir \
-w="/workdir" \
cannon-pipeline:latest cargo build --workspace --all -Zbuild-std $@
ghcr.io/ethereum-optimism/kona/cannon-builder:main cargo build --workspace --all -Zbuild-std $@

# Build for the `asterisc` target
build-asterisc *args='':
Expand All @@ -57,4 +57,4 @@ build-asterisc *args='':
--platform linux/amd64 \
-v `pwd`/:/workdir \
-w="/workdir" \
asterisc-pipeline:latest cargo build --workspace --all -Zbuild-std $@
ghcr.io/ethereum-optimism/kona/asterisc-builder:main cargo build --workspace --all -Zbuild-std $@

0 comments on commit af9af82

Please sign in to comment.