feat: auto-detect Engine API GetPayload version for Osaka fork (#3113) #69
This file contains hidden or 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: Benchmarks | |
| permissions: {} | |
| "on": | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| paths: | |
| - 'test/e2e/benchmark/**' | |
| - 'test/e2e/evm_contract_bench_test.go' | |
| - 'test/e2e/evm_test_common.go' | |
| - 'test/e2e/sut_helper.go' | |
| - 'block/internal/executing/**' | |
| - '.github/workflows/benchmark.yml' | |
| workflow_dispatch: | |
| jobs: | |
| evm-benchmark: | |
| name: EVM Contract Benchmark | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Set up Go | |
| uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 | |
| with: | |
| go-version-file: ./go.mod | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 | |
| - name: Install just | |
| uses: extractions/setup-just@v3 | |
| - name: Build binaries | |
| run: just build-evm build-da | |
| - name: Run EVM benchmarks | |
| run: | | |
| cd test/e2e && go test -tags evm -bench=. -benchmem -run='^$' \ | |
| -timeout=10m --evm-binary=../../build/evm | tee output.txt | |
| - name: Run Block Executor benchmarks | |
| run: | | |
| go test -bench=BenchmarkProduceBlock -benchmem -run='^$' \ | |
| ./block/internal/executing/... > block_executor_output.txt | |
| - name: Upload benchmark results | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: evm-benchmark-results | |
| path: | | |
| test/e2e/output.txt | |
| block_executor_output.txt | |
| spamoor-benchmark: | |
| name: Spamoor Trace Benchmark | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Set up Go | |
| uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 | |
| with: | |
| go-version-file: ./go.mod | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 | |
| - name: Install just | |
| uses: extractions/setup-just@v3 | |
| - name: Build binaries | |
| run: just build-evm build-da | |
| - name: Run Spamoor smoke test | |
| run: | | |
| cd test/e2e && BENCH_JSON_OUTPUT=spamoor_bench.json go test -tags evm \ | |
| -run='^TestSpamoorSuite$/^TestSpamoorSmoke$' -v -timeout=15m \ | |
| ./benchmark/ --evm-binary=../../../build/evm | |
| - name: Upload benchmark results | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: spamoor-benchmark-results | |
| path: test/e2e/benchmark/spamoor_bench.json | |
| # single job to push all results to gh-pages sequentially, avoiding race conditions | |
| publish-benchmarks: | |
| name: Publish Benchmark Results | |
| needs: [evm-benchmark, spamoor-benchmark] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| issues: write | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Download EVM benchmark results | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| name: evm-benchmark-results | |
| - name: Download Spamoor benchmark results | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| name: spamoor-benchmark-results | |
| path: test/e2e/benchmark/ | |
| # only update the benchmark baseline on push/dispatch, not on PRs | |
| - name: Store EVM Contract Roundtrip result | |
| if: always() | |
| uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1.20.7 | |
| with: | |
| name: EVM Contract Roundtrip | |
| tool: 'go' | |
| output-file-path: test/e2e/output.txt | |
| auto-push: ${{ github.event_name != 'pull_request' }} | |
| save-data-file: ${{ github.event_name != 'pull_request' }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| alert-threshold: '150%' | |
| fail-on-alert: true | |
| comment-on-alert: true | |
| # delete local gh-pages so the next benchmark action step fetches fresh from remote | |
| - name: Reset local gh-pages branch | |
| if: always() | |
| run: git branch -D gh-pages || true | |
| - name: Store Block Executor result | |
| if: always() | |
| uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1.20.7 | |
| with: | |
| name: Block Executor Benchmark | |
| tool: 'go' | |
| output-file-path: block_executor_output.txt | |
| auto-push: ${{ github.event_name != 'pull_request' }} | |
| save-data-file: ${{ github.event_name != 'pull_request' }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| alert-threshold: '150%' | |
| fail-on-alert: true | |
| comment-on-alert: true | |
| # delete local gh-pages so the next benchmark action step fetches fresh from remote | |
| - name: Reset local gh-pages branch | |
| if: always() | |
| run: git branch -D gh-pages || true | |
| - name: Store Spamoor Trace result | |
| if: always() | |
| uses: benchmark-action/github-action-benchmark@4bdcce38c94cec68da58d012ac24b7b1155efe8b # v1.20.7 | |
| with: | |
| name: Spamoor Trace Benchmarks | |
| tool: 'customSmallerIsBetter' | |
| output-file-path: test/e2e/benchmark/spamoor_bench.json | |
| auto-push: ${{ github.event_name != 'pull_request' }} | |
| save-data-file: ${{ github.event_name != 'pull_request' }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| alert-threshold: '150%' | |
| fail-on-alert: false | |
| comment-on-alert: true |