Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: include anvil-zksync in foundryup install script #765

Merged
merged 13 commits into from
Dec 10, 2024
277 changes: 138 additions & 139 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,148 +1,147 @@
name: test

on:
push:
branches:
- main
pull_request:
branches:
- main
push:
branches:
- main
pull_request:
branches:
- main

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

doctest:
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: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: cargo test
run: cargo test --doc -p forge

clippy:
name: clippy
runs-on: ubuntu-latest
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-github-hosted-16core
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-github-hosted-16core
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-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: codespell-project/actions-codespell@v2
with:
skip: "*.json"

crate-checks:
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-github-hosted-16core

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

- 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: Run zk tests
env:
RUST_BACKTRACE: full
TEST_MAINNET_URL: http://localhost:8011
run: |
git config --global user.name "test-runner"
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-latest
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
nextest:
uses: ./.github/workflows/nextest.yml
with:
profile: default
secrets: inherit

doctest:
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: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: cargo test
run: cargo test --doc -p forge

clippy:
name: clippy
runs-on: ubuntu-latest
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-github-hosted-16core
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-github-hosted-16core
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-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: codespell-project/actions-codespell@v2
with:
skip: "*.json"

crate-checks:
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-github-hosted-16core

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

- name: Run era-test-node
dutterbutter marked this conversation as resolved.
Show resolved Hide resolved
uses: dutterbutter/[email protected]
with:
mode: fork
forkUrl: mainnet
log: info
logFilePath: anvil-zksync.log
target: x86_64-unknown-linux-gnu

- name: Run zk tests
env:
RUST_BACKTRACE: full
TEST_MAINNET_URL: http://localhost:8011
run: |
git config --global user.name "test-runner"
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-latest
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
63 changes: 57 additions & 6 deletions foundryup-zksync/foundryup-zksync
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,59 @@ EOF
fi
done

# Begin anvil-zksync installation
say "downloading anvil-zksync"

# Supported targets for anvil-zksync
SUPPORTED_TARGETS=(
dutterbutter marked this conversation as resolved.
Show resolved Hide resolved
"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
Expand Down Expand Up @@ -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 <OPTIONS>

Expand All @@ -250,7 +301,7 @@ OPTIONS:
-p, --path Build and install a local repository
-j, --jobs Number of CPUs to use for building Foundry (default: all CPUs)
--arch Install a specific architecture (supports amd64 and arm64)
--platform Install a specific platform (supports win32, linux, and darwin)
dutterbutter marked this conversation as resolved.
Show resolved Hide resolved
--platform Install a specific platform (supports linux, and darwin)
EOF
}

Expand Down Expand Up @@ -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 "$@"
Loading