From f6527aedd7e573ae71e3135663e726df4fd3ec25 Mon Sep 17 00:00:00 2001 From: Dustin Brickwood Date: Tue, 10 Dec 2024 08:54:39 -0600 Subject: [PATCH] feat: include anvil-zksync in foundryup install script (#765) * feat: adds anvil-zksync to installation script * fix: address target issue * chore: lint * fix: revert unneeded changes * fix: linux install * chore: update workflow action * chore: make requested changes * chore: resolve conflicts * chore: update action --- .github/workflows/test.yml | 241 ++++++++++++++++-------------- foundryup-zksync/foundryup-zksync | 61 +++++++- 2 files changed, 184 insertions(+), 118 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5f22ce7e7..110fe7748 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,83 +1,83 @@ name: test on: - push: - branches: - - main - - "*upstream*" - pull_request: - branches: - - main - - "*upstream*" + push: + branches: + - main + - "*upstream*" + pull_request: + branches: + - main + - "*upstream*" concurrency: - cancel-in-progress: true - group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + group: ${{github.workflow}}-${{github.ref}} env: - CARGO_TERM_COLOR: always - TARGET_RUST_VERSION: "nightly-2024-09-01" + CARGO_TERM_COLOR: always + TARGET_RUST_VERSION: "nightly-2024-09-01" jobs: - nextest: - uses: ./.github/workflows/nextest.yml - with: - profile: default - secrets: inherit + nextest: + uses: ./.github/workflows/nextest.yml + with: + profile: default + secrets: inherit doctest: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - with: - toolchain: ${{ env.TARGET_RUST_VERSION }} - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: cargo test - run: cargo test --doc -p forge + runs-on: ubuntu-22.04 + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + with: + toolchain: ${{ env.TARGET_RUST_VERSION }} + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + - name: cargo test + run: cargo test --doc -p forge clippy: - name: clippy - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@clippy - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - run: cargo clippy --workspace --all-targets --all-features - env: - RUSTFLAGS: -Dwarnings + name: clippy + runs-on: ubuntu-22.04 + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@clippy + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + - run: cargo clippy --workspace --all-targets --all-features + env: + RUSTFLAGS: -Dwarnings rustfmt: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - with: - toolchain: ${{ env.TARGET_RUST_VERSION }} - components: rustfmt - - run: cargo fmt --all --check + runs-on: ubuntu-22.04 + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + with: + toolchain: ${{ env.TARGET_RUST_VERSION }} + components: rustfmt + - run: cargo fmt --all --check forge-fmt: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - with: - toolchain: ${{ env.TARGET_RUST_VERSION }} - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: forge fmt - shell: bash - run: ./.github/scripts/format.sh --check + runs-on: ubuntu-22.04 + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + with: + toolchain: ${{ env.TARGET_RUST_VERSION }} + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + - name: forge fmt + shell: bash + run: ./.github/scripts/format.sh --check codespell: runs-on: ubuntu-22.04 @@ -89,66 +89,81 @@ jobs: skip: "*.json" crate-checks: - # ubuntu-22.04 runs out of disk space - runs-on: ubuntu-22.04-github-hosted-16core - timeout-minutes: 60 - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@nightly - with: - toolchain: ${{ env.TARGET_RUST_VERSION }} - - uses: taiki-e/install-action@cargo-hack - - uses: Swatinem/rust-cache@v2 - with: - cache-on-failure: true - - name: cargo hack - run: cargo hack check - + # ubuntu-22.04 runs out of disk space + runs-on: ubuntu-22.04-github-hosted-16core + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + with: + toolchain: ${{ env.TARGET_RUST_VERSION }} + - uses: taiki-e/install-action@cargo-hack + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + - name: cargo hack + run: cargo hack check + zk-cargo-test: - runs-on: ubuntu-22.04 - - steps: + runs-on: ubuntu-22.04 + + steps: - name: Checkout code uses: actions/checkout@v4 with: submodules: recursive ref: ${{ github.event.pull_request.head.sha }} - + - name: Install Rust uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: ${{ env.TARGET_RUST_VERSION }} - - name: Install cargo-nextest - uses: taiki-e/install-action@nextest + zk-cargo-test: + runs-on: ubuntu-22.04 - - name: Run era-test-node - uses: dutterbutter/era-test-node-action@v1 - with: - mode: fork - network: mainnet - log: info - logFilePath: era_test_node.log - target: x86_64-unknown-linux-gnu - releaseTag: v0.1.0-alpha.29 - - name: Setup Git config - run: | - git config --global user.name "GitHub Actions Bot" - git config --global user.email "<>" - git config --global url."https://github.com/".insteadOf "git@github.com:" - - name: Run zk tests - env: - RUST_BACKTRACE: full - TEST_MAINNET_URL: http://localhost:8011 - run: | - ZK_DEBUG_HISTORICAL_BLOCK_HASHES=5 cargo nextest run --package '*' --lib --test '*' --filter-expr 'test(~zk)' + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ github.event.pull_request.head.sha }} - check-ci-install: - name: CI install - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - name: Install foundry-zksync - run: cp ./install-foundry-zksync ./foundryup-zksync/* /tmp/ && cd /tmp && ./install-foundry-zksync - - name: Verify installation - run: forge --version + - name: Install Rust + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: ${{ env.TARGET_RUST_VERSION }} + + - name: Install cargo-nextest + uses: taiki-e/install-action@nextest + + - name: Run anvil-zksync + uses: dutterbutter/anvil-zksync-action@v1.1.0 + with: + mode: fork + forkUrl: mainnet + log: info + logFilePath: anvil_zksync.log + target: x86_64-unknown-linux-gnu + releaseTag: v0.2.1 + - name: Setup Git config + run: | + git config --global user.name "GitHub Actions Bot" + git config --global user.email "<>" + git config --global url."https://github.com/".insteadOf "git@github.com:" + - name: Run zk tests + env: + RUST_BACKTRACE: full + TEST_MAINNET_URL: http://localhost:8011 + run: | + ZK_DEBUG_HISTORICAL_BLOCK_HASHES=5 cargo nextest run --package '*' --lib --test '*' --filter-expr 'test(~zk)' + + check-ci-install: + name: CI install + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - name: Install foundry-zksync + run: cp ./install-foundry-zksync ./foundryup-zksync/* /tmp/ && cd /tmp && ./install-foundry-zksync + - name: Verify installation + run: forge --version diff --git a/foundryup-zksync/foundryup-zksync b/foundryup-zksync/foundryup-zksync index abc726a50..b61be118f 100755 --- a/foundryup-zksync/foundryup-zksync +++ b/foundryup-zksync/foundryup-zksync @@ -178,6 +178,59 @@ EOF fi done + # Begin anvil-zksync installation + say "downloading anvil-zksync" + + # Supported targets for anvil-zksync + SUPPORTED_TARGETS=( + "x86_64-apple-darwin" + "aarch64-apple-darwin" + "x86_64-unknown-linux-gnu" + "aarch64-unknown-linux-gnu" + ) + + if [ "$ARCHITECTURE" = "arm64" ]; then + ARCHITECTURE="aarch64" + fi + + if [ "$PLATFORM" = "darwin" ]; then + TARGET="${ARCHITECTURE}-apple-${PLATFORM}" + elif [ "$PLATFORM" = "linux" ]; then + TARGET="${ARCHITECTURE}-unknown-${PLATFORM}-gnu" + else + TARGET="${ARCHITECTURE}-${PLATFORM}" + fi + + if [[ " ${SUPPORTED_TARGETS[*]} " == *" $TARGET "* ]]; then + ANVIL_REPO="matter-labs/anvil-zksync" + + say "getting latest tag for anvil-zksync" + + ANVIL_TAG=$(curl -s https://api.github.com/repos/$ANVIL_REPO/releases/latest | sed -n 's/.*"tag_name": "\([^"]*\)".*/\1/p') + + if [ -z "$ANVIL_TAG" ]; then + err "failed to get latest tag for anvil-zksync" + fi + + ANVIL_BIN_NAME="anvil-zksync-${ANVIL_TAG}-${TARGET}.${EXT}" + + ANVIL_BIN_URL="https://github.com/$ANVIL_REPO/releases/download/$ANVIL_TAG/$ANVIL_BIN_NAME" + + ANVIL_BIN_PATH="$FOUNDRY_BIN_DIR/anvil-zksync" + + say "downloading anvil-zksync from $ANVIL_BIN_URL" + + ensure download "$ANVIL_BIN_URL" | ensure tar -xzC "$FOUNDRY_BIN_DIR" + + mv "$FOUNDRY_BIN_DIR/anvil-zksync" "$ANVIL_BIN_PATH" + + chmod +x "$ANVIL_BIN_PATH" + + say "installed - $(ensure "$ANVIL_BIN_PATH" --version)" + else + warn "anvil-zksync is not supported on your platform ($TARGET). Skipping anvil-zksync installation." + fi + say "done!" # Install by cloning the repo with the provided branch/tag @@ -235,8 +288,6 @@ Update or revert to a specific Foundry-zksync version with ease. By default, the latest nightly version is installed from built binaries. -By default, the latest nightly version is installed from built binaries. - USAGE: foundryup-zksync @@ -313,19 +364,19 @@ banner() { .xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx ╔═╗ ╔═╗ ╦ ╦ ╔╗╔ ╔╦╗ ╦═╗ ╦ ╦ Portable and modular toolkit - ╠╣ ║ ║ ║ ║ ║║║ ║║ ╠╦╝ ╚╦╝ for Ethereum Application Development + ╠╣ ║ ║ ║ ║ ║║║ ║║ ╠╦╝ ╚╦╝ for ZKsync Application Development ╚ ╚═╝ ╚═╝ ╝╚╝ ═╩╝ ╩╚═ ╩ written in Rust. .xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx Fork of : https://github.com/foundry-rs/ Repo : https://github.com/matter-labs/foundry-zksync/ -Book : https://book.getfoundry.sh/ +Book : https://foundry-book.zksync.io/ .xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx.xOx ' -} +} main "$@"