ci(workflows) add GitHub Actions workflow for preview builds #8484
Workflow file for this run
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: | |
- 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 |