Skip to content

Commit

Permalink
feat: include anvil-zksync in foundryup install script (#765)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
dutterbutter authored Dec 10, 2024
1 parent 85f68fd commit f6527ae
Show file tree
Hide file tree
Showing 2 changed files with 184 additions and 118 deletions.
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=(
"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 "$@"

0 comments on commit f6527ae

Please sign in to comment.