Add upload to registry workflow for foundry_std #10206
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: | |
pull_request: | |
merge_group: | |
push: | |
branches: | |
- master | |
workflow_dispatch: | |
jobs: | |
test-forge-unit-and-integration: | |
name: Test Forge / Unit and Integration Tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: software-mansion/setup-scarb@v1 | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- run: cargo test --release --lib -p forge | |
- run: cargo test --release --bin snforge | |
- run: cargo test --release integration -p forge | |
build-test-forge-e2e-nextest-archive: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Build and archive tests | |
run: cargo nextest archive --release -p forge --archive-file nextest-archive.tar.zst | |
- name: Upload archive to workflow | |
uses: actions/upload-artifact@v4 | |
with: | |
name: nextest-archive | |
path: nextest-archive.tar.zst | |
test-forge-e2e: | |
name: Test Forge / E2E Tests | |
runs-on: ubuntu-latest | |
needs: build-test-forge-e2e-nextest-archive | |
strategy: | |
matrix: | |
partition: [ 1, 2, 3, 4, 5, 6, 7, 8 ] | |
steps: | |
- name: Extract branch name | |
if: github.event_name != 'pull_request' | |
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV | |
- name: Extract branch name on pull request | |
if: github.event_name == 'pull_request' | |
run: echo "BRANCH_NAME=$(echo $GITHUB_HEAD_REF)" >> $GITHUB_ENV | |
- name: Extract repo name and owner | |
if: github.event_name != 'pull_request' | |
run: echo "REPO_NAME=$(echo ${{ github.repository }}.git)" >> $GITHUB_ENV | |
- name: Extract repo name and owner on pull request | |
if: github.event_name == 'pull_request' | |
run: echo "REPO_NAME=$(echo ${{ github.event.pull_request.head.repo.full_name }}.git)" >> $GITHUB_ENV | |
- name: Print repo name | |
run: echo 'The repo name is' $REPO_NAME | |
- name: Get branch name | |
run: echo 'The branch name is' $BRANCH_NAME | |
- name: Install cairo-profiler | |
run: | | |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-profiler/main/scripts/install.sh | sh | |
- name: Install cairo-coverage | |
run: | | |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: software-mansion/setup-scarb@v1 | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- uses: taiki-e/install-action@nextest | |
- uses: actions/download-artifact@v4 | |
with: | |
name: nextest-archive | |
- name: nextest partition ${{ matrix.partition }}/8 | |
run: cargo nextest run --partition 'count:${{ matrix.partition }}/8' --archive-file 'nextest-archive.tar.zst' e2e | |
test-coverage: | |
name: Test coverage | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: software-mansion/setup-scarb@v1 | |
with: | |
scarb-version: "2.8.3" | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- name: Install cairo-coverage | |
run: | | |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh | |
- run: cargo test --package forge --features scarb_2_8_3 --test main e2e::coverage | |
test-coverage-error: | |
name: Test coverage error | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: software-mansion/setup-scarb@v1 | |
with: | |
scarb-version: "2.7.1" | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- name: Install cairo-coverage | |
run: | | |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh | |
- run: cargo test --package forge --features scarb_2_7_1 --test main e2e::coverage::test_fail_on_scarb_version_lt_2_8_0 | |
test-contracts-artifacts: | |
name: Test contracts artifacts | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: software-mansion/setup-scarb@v1 | |
with: | |
scarb-version: "2.8.3" | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- run: | | |
cargo test --package forge --features scarb_2_8_3 e2e::contract_artifacts | |
- run: | | |
cargo test --package forge --features scarb_2_8_3 e2e::features | |
- run: | | |
cargo test --package scarb-api --features scarb_2_8_3 get_starknet_artifacts_path | |
test-forge-runner: | |
name: Test Forge Runner | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- run: cargo test --release -p forge_runner | |
test-cheatnet: | |
name: Test Cheatnet | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: software-mansion/setup-scarb@v1 | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- name: Run Cheatnet tests | |
run: cargo test --release -p cheatnet | |
test-data-transformer: | |
name: Test Data Transformer | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- name: Run Data Transformer tests | |
run: cargo test --release -p data-transformer | |
test-forge-scarb-plugin: | |
name: Test Forge Scarb Plugin | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: software-mansion/setup-scarb@v1 | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- name: Run Forge Scarb Plugin tests | |
run: cargo test --release -p snforge_scarb_plugin | |
test-cast: | |
name: Test Cast | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a | |
with: | |
toolchain: stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- name: Install starknet-devnet-rs | |
run: ./scripts/install_devnet.sh | |
- uses: software-mansion/setup-scarb@v1 | |
with: | |
scarb-version: "2.7.0" | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- name: Run tests | |
run: cargo test --release -p sncast | |
- name: Run test in debug profile | |
run: cargo test -p sncast test_happy_case_common_arguments_after_subcommand | |
test-conversions: | |
name: Test Conversions | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a | |
with: | |
toolchain: stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- name: Run tests | |
run: cargo test --release -p conversions | |
test-shared: | |
name: Test Shared | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- run: cargo test --release -p shared | |
test-scarb-api: | |
name: Test Scarb Api | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: software-mansion/setup-scarb@v1 | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- run: cargo test --release -p scarb-api | |
scarbfmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: software-mansion/setup-scarb@v1 | |
- name: Check cairo files format | |
run: | | |
output=$(find . -type f -name "Scarb.toml" -execdir sh -c ' | |
echo "Running \"scarb fmt\" in directory: $PWD" | |
scarb fmt --check | |
' \;) | |
echo "$output" | |
if grep -iq "Diff" <<< "$output"; then | |
exit 1 | |
fi | |
exit 0 | |
rustfmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a | |
with: | |
toolchain: stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- name: Check formatting | |
run: cargo fmt --check | |
clippy: | |
runs-on: ubuntu-latest | |
env: | |
# Make sure CI fails on all warnings - including Clippy lints. | |
RUSTFLAGS: "-Dwarnings" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a | |
with: | |
toolchain: stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- run: cargo lint | |
build-docs: | |
name: Test Building Docs | |
runs-on: ubuntu-latest | |
env: | |
MDBOOK_VERSION: 0.4.31 | |
steps: | |
- uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a | |
with: | |
toolchain: stable | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab | |
- uses: actions/checkout@v4 | |
- uses: software-mansion/setup-scarb@v1 | |
- uses: software-mansion/setup-universal-sierra-compiler@v1 | |
- name: Install mdBook | |
run: | | |
cargo install --version ${MDBOOK_VERSION} mdbook | |
- name: Install mdBook Link-Check | |
run: | | |
cargo install mdbook-linkcheck | |
- name: Build with mdBook | |
run: mdbook build | |
working-directory: ./docs | |
- name: Install Forge | |
run: | | |
cargo install --path crates/forge --locked | |
- name: Verify Cairo listings | |
run: | | |
./scripts/verify_cairo_listings.sh | |
typos: | |
name: Check typos | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: typos-action | |
uses: crate-ci/typos@v1.26.8 |