Skip to content

Merge ci-release-wf-0.8.10 into 0.8.10 #839

Merge ci-release-wf-0.8.10 into 0.8.10

Merge ci-release-wf-0.8.10 into 0.8.10 #839

Workflow file for this run

name: Benchmarking
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
benchmarks_candidate:
runs-on: [self-hosted, ci-runner-compiler]
container:
image: matterlabs/llvm_runner:latest
credentials:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- uses: AutoModality/action-clean@492b2d2e2e77247bfd0b17eaa89a371b2f3430ee # v1
- name: Preparing workspace. Setting environment.
run: |
echo "BENCHMARK_MODE=${{ github.event.inputs.compiler_llvm_benchmark_mode || '+M^B3' }}" >> $GITHUB_ENV
echo "BENCHMARK_PATH=${{ github.event.inputs.compiler_llvm_benchmark_path || 'tests/solidity/' }}" >> $GITHUB_ENV
echo "CANDIDATE_BRANCH_NAME=${{ github.event.inputs.compiler_tester_candidate_branch }}" >> $GITHUB_ENV
- name: Getting the branch name (pull request)
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_BASE_REF} | tr / -)" >> $GITHUB_ENV
- name: Checking out the Solidity repository
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v2
with:
submodules: recursive
path: solidity
token: ${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}
- name: Checking out the compiler-tester candidate
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v2
with:
repository: matter-labs/compiler-tester
ref: az-cpr-532-implement-the-recursion-workaround
submodules: recursive
path: compiler-tester
token: ${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}
- name: Preparing workspace
run: |
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf ssh://[email protected]/
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf https://github.com/
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf [email protected]:
- name: Building the Solidity compiler
working-directory: solidity
run: |
mkdir -p ./build
cd ./build
cmake .. -DCMAKE_BUILD_TYPE='Release' -DSOLC_VERSION_ZKEVM='1.0.0-lts' -DPEDANTIC=OFF -DCMAKE_CXX_FLAGS='-w' -DUSE_Z3=OFF -DUSE_CVC4=OFF
make -j$(nproc)
- name: Benchmarking the Solidity compiler candidate
id: compiler_tester_run
working-directory: compiler-tester
run: |
mkdir -p './solc-bin/'
cp '../solidity/build/solc/solc' "./solc-bin/solc-${BRANCH_NAME}"
chmod +x "./solc-bin/solc-${BRANCH_NAME}"
cargo install compiler-llvm-builder
/usr/local/cargo/bin/zkevm-llvm clone && /usr/local/cargo/bin/zkevm-llvm build
export RUST_BACKTRACE='full'
export LLVM_SYS_150_PREFIX="$(pwd)/target-llvm/target-final/"
cargo build --verbose --release --bin 'compiler-tester'
cargo build --verbose --release --manifest-path /usr/local/cargo/git/checkouts/era-compiler-solidity-*/*/Cargo.toml --target-dir './target-zksolc/'
cargo build --verbose --release --manifest-path /usr/local/cargo/git/checkouts/era-compiler-vyper-*/*/Cargo.toml --target-dir './target-zkvyper/'
./target/release/compiler-tester \
--zksolc './target-zksolc/release/zksolc' \
--zkvyper './target-zkvyper/release/zkvyper' \
--path="${{ env.BENCHMARK_PATH || '' }}" \
--mode="${{ env.BENCHMARK_MODE || '' }}" \
--benchmark='candidate.json' \
--solc-bin-config-path="configs/solc-bin-zkevm-candidate-${BRANCH_NAME}.json"
- uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3
with:
name: candidate-benchmark
path: compiler-tester/candidate.json
benchmarks_reference:
runs-on: [self-hosted, ci-runner-compiler]
container:
image: matterlabs/llvm_runner:latest
credentials:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- uses: AutoModality/action-clean@492b2d2e2e77247bfd0b17eaa89a371b2f3430ee # v1
- name: Preparing workspace. Setting environment.
run: |
echo "BENCHMARK_MODE=${{ github.event.inputs.compiler_llvm_benchmark_mode || '+M^B3' }}" >> $GITHUB_ENV
echo "BENCHMARK_PATH=${{ github.event.inputs.compiler_llvm_benchmark_path || 'tests/solidity/' }}" >> $GITHUB_ENV
echo "REFERENCE_BRANCH_NAME=${{ github.event.inputs.compiler_tester_reference_branch }}" >> $GITHUB_ENV
- name: Getting the branch name (pull request)
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_BASE_REF} | tr / -)" >> $GITHUB_ENV
- name: Checking out the Solidity repository
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v2
with:
submodules: recursive
path: solidity
token: ${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}
- name: Checking out the compiler-tester reference
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v2
with:
repository: matter-labs/compiler-tester
ref: main
submodules: recursive
path: compiler-tester
token: ${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}
- name: Preparing workspace
run: |
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf ssh://[email protected]/
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf https://github.com/
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf [email protected]:
- name: Benchmarking the Solidity compiler reference
working-directory: compiler-tester
id: compiler_tester_run
run: |
cargo install compiler-llvm-builder
/usr/local/cargo/bin/zkevm-llvm clone && /usr/local/cargo/bin/zkevm-llvm build
export RUST_BACKTRACE='full'
export LLVM_SYS_150_PREFIX="$(pwd)/target-llvm/target-final/"
cargo build --verbose --release --bin 'compiler-tester'
cargo build --verbose --release --manifest-path /usr/local/cargo/git/checkouts/era-compiler-solidity-*/*/Cargo.toml --target-dir './target-zksolc/'
cargo build --verbose --release --manifest-path /usr/local/cargo/git/checkouts/era-compiler-vyper-*/*/Cargo.toml --target-dir './target-zkvyper/'
./target/release/compiler-tester \
--zksolc './target-zksolc/release/zksolc' \
--zkvyper './target-zkvyper/release/zkvyper' \
--path="${{ env.BENCHMARK_PATH || '' }}" \
--mode="${{ env.BENCHMARK_MODE || '' }}" \
--benchmark='reference.json' \
--solc-bin-config-path="configs/solc-bin-zkevm-reference-${BRANCH_NAME}.json"
- uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # v3
with:
name: reference-benchmark
path: compiler-tester/reference.json
benchmarks_analysis:
runs-on: [matterlabs-ci-runner]
needs: [benchmarks_candidate, benchmarks_reference]
container:
image: matterlabs/llvm_runner:latest
credentials:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
steps:
- uses: AutoModality/action-clean@492b2d2e2e77247bfd0b17eaa89a371b2f3430ee # v1
- name: Getting the branch name (pull request)
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_BASE_REF} | tr / -)" >> $GITHUB_ENV
- name: Checking out the compiler-tester repository
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v2
with:
repository: matter-labs/compiler-tester
ref: az-cpr-532-implement-the-recursion-workaround
submodules: recursive
path: compiler-tester
token: ${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}
- name: Preparing workspace
run: |
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf ssh://[email protected]/
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf https://github.com/
git config --global --add url."https://${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}:[email protected]/".insteadOf [email protected]:
- uses: actions/download-artifact@master
with:
name: candidate-benchmark
path: compiler-tester
- uses: actions/download-artifact@master
with:
name: reference-benchmark
path: compiler-tester
- name: Comparing the benchmark results
id: compiler_tester_run
run: |
cd compiler-tester && \
export RUST_BACKTRACE=full && \
cargo run --release --bin benchmark-analyzer -- \
--reference 'reference.json' \
--candidate 'candidate.json' \
--output-file 'result.txt' && \
chown 1000:1000 result.txt
- name: Posting the benchmark results to the step summary
run: |
printf "Benchmark results:\n" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
cat ./compiler-tester/result.txt >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
cat $GITHUB_STEP_SUMMARY > ./compiler-tester/result.txt
- name: Posting the benchmark results to a PR comment
if: github.event_name == 'pull_request'
uses: machine-learning-apps/pr-comment@master
env:
GITHUB_TOKEN: ${{ secrets.ZKSYNC_ADMIN_BOT_ORG_REPO_WRITE }}
with:
path: ./compiler-tester/result.txt
- uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
fields: repo,commit,author,action,eventName,ref,workflow,job,took,pullRequest # selectable (default: repo,message)
env:
SLACK_WEBHOOK_URL: ${{ secrets.COMPILER_CI_MATTERMOST_WEBHOOK }} # required
if: ${{ failure() || success() }} # Skip canceled jobs