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
241 changes: 128 additions & 113 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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 "[email protected]:"
- 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/[email protected]
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 "[email protected]:"
- 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
61 changes: 56 additions & 5 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 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