Skip to content

CI

CI #38610

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
merge_group:
types: [ checks_requested ]
jobs:
ensure-no_std:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2024-11-23
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- run: |
cd ensure-no_std && cargo build
parallel-tests:
runs-on: ubuntu-latest
strategy:
matrix:
cmd:
- test --profile=ci-dev -p cairo-lang-casm --features=serde,parity-scale-codec,schemars
- test --profile=ci-dev -p cairo-lang-casm --no-default-features --features=serde,parity-scale-codec
- test --profile=ci-dev -p cairo-lang-compiler
- test --profile=ci-dev -p cairo-lang-debug
- test --profile=ci-dev -p cairo-lang-defs
- test --profile=ci-dev -p cairo-lang-diagnostics
- test --profile=ci-dev -p cairo-lang-doc
- test --profile=ci-dev -p cairo-lang-eq-solver
- test --profile=ci-dev -p cairo-lang-executable
- test --profile=ci-dev -p cairo-lang-filesystem
- test --profile=ci-dev -p cairo-lang-formatter
- test --profile=ci-dev -p cairo-lang-language-server
- test --profile=ci-dev -p cairo-lang-lowering
- test --profile=ci-dev -p cairo-lang-parser
- test --profile=ci-dev -p cairo-lang-plugins
- test --profile=ci-dev -p cairo-lang-proc-macros
- test --profile=ci-dev -p cairo-lang-project
- test --profile=ci-dev -p cairo-lang-runnable-utils
- test --profile=ci-dev -p cairo-lang-runner
- test --profile=ci-dev -p cairo-lang-semantic
- test --profile=ci-dev -p cairo-lang-sierra
- test --profile=ci-dev -p cairo-lang-sierra-ap-change
- test --profile=ci-dev -p cairo-lang-sierra-gas
- test --profile=ci-dev -p cairo-lang-sierra-generator
- test --profile=ci-dev -p cairo-lang-sierra-to-casm
- test --profile=ci-dev -p cairo-lang-sierra-type-size
- test --profile=ci-dev -p cairo-lang-starknet-classes
- test --profile=ci-dev -p cairo-lang-starknet
- test --profile=ci-dev -p cairo-lang-syntax
- test --profile=ci-dev -p cairo-lang-syntax-codegen
- test --profile=ci-dev -p cairo-lang-test-plugin
- test --profile=ci-dev -p cairo-lang-test-runner
- test --profile=ci-dev -p cairo-lang-test-utils
- test --profile=ci-dev -p cairo-lang-utils --features=serde,parity-scale-codec,schemars,testing,env_logger
- test --profile=ci-dev -p cairo-lang-utils --no-default-features --features=serde,parity-scale-codec
- test --profile=ci-dev -p cairo-lang-primitive-token
- test --profile=ci-dev -p tests
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
components: rustfmt
toolchain: nightly-2024-11-23
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install nextest
uses: taiki-e/install-action@nextest
# Validates that the number of commands in the matrix is equal to the number of crates in the
# workspace + 2 (for the crates which have multiple commands)
- run: |
CRATES_COUNT=$(find {crates/*,tests}/Cargo.toml | wc -l)
COMMANDS_COUNT=${{ strategy.job-total }}
if [ $((CRATES_COUNT + 2)) -ne $COMMANDS_COUNT ]; then
echo "CRATES_COUNT: $CRATES_COUNT"
echo "COMMANDS_COUNT: $COMMANDS_COUNT"
echo "The number of commands in the matrix is not equal to the number of crates in the workspace + 2"
exit 1
fi
- run: |
cargo ${{ matrix.cmd }}
test:
if: ${{ always() }}
needs: parallel-tests
runs-on: ubuntu-latest
steps:
- if: needs.parallel-tests.result == 'success'
run: exit 0
- if: needs.parallel-tests.result != 'success'
run: exit 1
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
components: rustfmt
toolchain: nightly-2024-11-23
- uses: Swatinem/rust-cache@v2
- run: scripts/rust_fmt.sh --check
# Checks all .cairo files in the repo are formatted correctly.
cairofmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: scripts/cairo_fmt.sh --check
# Checks all cairo corelib tests run correctly.
cairotest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: scripts/cairo_test.sh
- run: scripts/starknet_test.sh
# Check for unnecessary dependencies.
udeps:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Machete
uses: bnjbvr/cargo-machete@main
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
components: clippy
toolchain: nightly-2024-11-23
- uses: Swatinem/rust-cache@v2
- run: >
scripts/clippy.sh
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: crate-ci/[email protected]
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2024-11-23
- uses: Swatinem/rust-cache@v2
- run: >
scripts/docs.sh
sierra-updated-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: '0'
- run: >
scripts/sierra_update_check.sh origin/$GITHUB_BASE_REF origin/$GITHUB_HEAD_REF