Skip to content

ci(workflows) add GitHub Actions workflow for preview builds #8484

ci(workflows) add GitHub Actions workflow for preview builds

ci(workflows) add GitHub Actions workflow for preview builds #8484

Workflow file for this run

name: ci
on:
push:
branches:
- main
pull_request:
env:
CARGO_TERM_COLOR: always
RUST_VERSION: 1.79.0
jobs:
build:
runs-on: ubuntu-latest-4-cores
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- run: |
cargo build -r --bin katana
cargo build -r --bin sozo
mkdir -p bins
cp ./target/release/katana bins/
cp ./target/release/sozo bins/
- uses: actions/upload-artifact@v4
with:
name: dojo-bins
path: bins
test:
needs: ensure-docker
runs-on: ubuntu-latest-32-cores
container:
image: ghcr.io/dojoengine/dojo-dev:v1.0.0-alpha.11
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- uses: actions/download-artifact@v4
with:
name: dojo-bins
path: /tmp/bins
- run: |
chmod +x /tmp/bins/katana
chmod +x /tmp/bins/sozo
bash scripts/build_cairo_projects.sh /tmp/bins/sozo
tar -xzf spawn-and-move-db.tar.gz -C /tmp/
tar -xzf types-test-db.tar.gz -C /tmp/
KATANA_RUNNER_BIN=/tmp/bins/katana cargo llvm-cov nextest --no-report --all-features --workspace --build-jobs 20
cargo llvm-cov report --lcov --output-path lcov.info
- uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
ensure-wasm:
runs-on: ubuntu-latest
container:
image: ghcr.io/dojoengine/dojo-dev:v1.0.0-alpha.11
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- name: Install wasm32 target
run: rustup target add wasm32-unknown-unknown
- run: cargo build -r --target wasm32-unknown-unknown -p torii-client
ensure-windows:
needs: ensure-docker
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_version }}
target: x86_64-pc-windows-msvc
- uses: swatinem/rust-cache@v2
- uses: arduino/setup-protoc@v2
with:
repo-token: ${{ secrets.github_token }}
# required for `aws-lc-rs` crate to compile on Windows; https://aws.github.io/aws-lc-rs/requirements/windows.html
- name: Install NASM
uses: ilammy/setup-nasm@v1
with:
version: "2.15.05"
- run: cargo build --target x86_64-pc-windows-msvc --bins
# This job is used to ensure the built katana image doesn't depend on any
# libraries that don't exist in the base docker image we use for distribution
ensure-docker:
needs: build
runs-on: ubuntu-latest
container:
image: debian:bookworm-slim
steps:
- uses: actions/download-artifact@v4
with:
name: dojo-bins
- run: |
chmod +x ./katana
./katana &
KATANA_PID=$!
sleep 2
if ! kill -0 $KATANA_PID; then
echo "Katana exited with an error"
exit 1
fi
kill $KATANA_PID
cairofmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.7.0"
- run: |
scarb --manifest-path examples/spawn-and-move/Scarb.toml fmt --check
scarb --manifest-path crates/dojo-core/Scarb.toml fmt --check
dojo-core-test:
needs: build
runs-on: ubuntu-latest
container:
image: ghcr.io/dojoengine/dojo-dev:v1.0.0-alpha.11
steps:
- uses: actions/download-artifact@v4
with:
name: dojo-bins
path: /tmp/bins
- uses: actions/checkout@v3
- run: |
chmod +x /tmp/bins/sozo
/tmp/bins/sozo --manifest-path crates/dojo-core/Scarb.toml test
dojo-spawn-and-move-example-test:
needs: build
runs-on: ubuntu-latest
container:
image: ghcr.io/dojoengine/dojo-dev:v1.0.0-alpha.11
steps:
- uses: actions/download-artifact@v4
with:
name: dojo-bins
path: /tmp/bins
- uses: actions/checkout@v3
- run: |
chmod +x /tmp/bins/sozo
/tmp/bins/sozo --manifest-path examples/spawn-and-move/Scarb.toml test
dojo-world-bindings-check:
runs-on: ubuntu-latest
container:
image: ghcr.io/dojoengine/dojo-dev:v1.0.0-alpha.11
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- run: cargo run --bin dojo-world-abigen -- --check
clippy:
runs-on: ubuntu-latest-4-cores
container:
image: ghcr.io/dojoengine/dojo-dev:v1.0.0-alpha.11
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- run: scripts/clippy.sh
fmt:
runs-on: ubuntu-latest
container:
image: ghcr.io/dojoengine/dojo-dev:v1.0.0-alpha.11
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- run: scripts/rust_fmt.sh --check
docs:
runs-on: ubuntu-latest
container:
image: ghcr.io/dojoengine/dojo-dev:v1.0.0-alpha.11
steps:
- uses: actions/checkout@v3
- uses: Swatinem/rust-cache@v2
- run: >
scripts/docs.sh
test-hurl:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with:
name: dojo-bins
path: /tmp/bins
- uses: actions/checkout@v3
- run: |
curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/3.0.0/hurl_3.0.0_amd64.deb
sudo apt update && sudo apt install ./hurl_3.0.0_amd64.deb
chmod +x /tmp/bins/katana
chmod +x /tmp/bins/sozo
nohup /tmp/bins/katana --accounts 2 --disable-fee &
- run: |
/tmp/bins/sozo --manifest-path examples/spawn-and-move/Scarb.toml build
/tmp/bins/sozo --manifest-path examples/spawn-and-move/Scarb.toml migrate apply
- run: hurl --test examples/rpc/**/*.hurl