ci: Removes CI secrets in branch 0.4.14 #867
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
with: | |
submodules: recursive | |
path: solidity | |
- name: Checking out the compiler-tester candidate | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
with: | |
repository: matter-labs/era-compiler-tester | |
submodules: recursive | |
path: compiler-tester | |
- 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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
with: | |
submodules: recursive | |
path: solidity | |
- name: Checking out the compiler-tester reference | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
with: | |
repository: matter-labs/era-compiler-tester | |
ref: main | |
submodules: recursive | |
path: compiler-tester | |
- 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@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
with: | |
repository: matter-labs/era-compiler-tester | |
submodules: recursive | |
path: compiler-tester | |
- 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.GITHUB_TOKEN }} | |
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 |