EIP-7840 Implementation #5480
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: acceptance-tests | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: | |
- main | |
- release-* | |
- verkle | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
GRADLE_OPTS: "-Xmx7g" | |
total-runners: 14 | |
jobs: | |
acceptanceTestEthereum: | |
runs-on: ubuntu-22.04 | |
name: "Acceptance Runner" | |
permissions: | |
statuses: write | |
checks: write | |
strategy: | |
fail-fast: true | |
matrix: | |
runner_index: [0,1,2,3,4,5,6,7,8,9,10,11,12,13] | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
ref: ${{ github.event.pull_request.head.sha || github.ref }} | |
- name: Set up Java | |
uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 | |
with: | |
distribution: temurin | |
java-version: 21 | |
- name: Install required packages | |
run: sudo apt-get install -y xmlstarlet | |
- name: setup gradle | |
uses: gradle/actions/setup-gradle@9e899d11ad247ec76be7a60bc1cf9d3abbb9e7f1 | |
with: | |
cache-disabled: true | |
- name: List unit tests | |
run: ./gradlew acceptanceTestNotPrivacy --test-dry-run -Dorg.gradle.parallel=true -Dorg.gradle.caching=true | |
- name: Extract current test list | |
run: mkdir tmp; find . -type f -name TEST-*.xml | xargs -I{} bash -c "xmlstarlet sel -t -v '/testsuite/@name' '{}'; echo ' acceptanceTestNotPrivacy'" | tee tmp/currentTests.list | |
- name: Get acceptance test reports | |
uses: dawidd6/action-download-artifact@e7466d1a7587ed14867642c2ca74b5bcc1e19a2d | |
continue-on-error: true | |
with: | |
branch: main | |
workflow: update-test-reports.yml | |
name: acceptance-test-results | |
path: tmp/junit-xml-reports-downloaded | |
if_no_artifact_found: ignore | |
- name: Split tests | |
run: .github/workflows/splitTestsByTime.sh tmp/junit-xml-reports-downloaded "tmp/junit-xml-reports-downloaded/acceptance-node-.*-test-results" "TEST-" ${{env.total-runners}} ${{ matrix.runner_index }} > testList.txt | |
- name: format gradle args | |
# we do not need the module task here | |
run: cat testList.txt | cut -f 2- -d ' ' | tee gradleArgs.txt | |
- name: Upload Timing | |
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 | |
if: matrix.runner_index == 0 | |
with: | |
name: acceptance-tests-timing | |
path: 'tmp/timing.tsv' | |
- name: Upload Lists | |
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 | |
if: matrix.runner_index == 0 | |
with: | |
name: acceptance-tests-lists | |
path: 'tmp/*.list' | |
- name: Upload gradle test tasks | |
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 | |
with: | |
name: test-args-${{ matrix.runner_index }}.txt | |
path: '*.txt' | |
- name: run acceptance tests | |
run: ./gradlew acceptanceTestNotPrivacy `cat gradleArgs.txt` -Dorg.gradle.parallel=true -Dorg.gradle.caching=true | |
- name: Remove downloaded test results | |
run: rm -rf tmp/junit-xml-reports-downloaded | |
- name: Upload Acceptance Test Results | |
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 | |
with: | |
name: acceptance-node-${{matrix.runner_index}}-test-results | |
path: 'acceptance-tests/tests/build/test-results/**/TEST-*.xml' | |
- name: Upload Acceptance Test HTML Reports | |
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 | |
if: success() || failure() | |
with: | |
name: acceptance-node-${{matrix.runner_index}}-test-html-reports | |
path: 'acceptance-tests/tests/build/reports/tests/**' | |
accepttests-passed: | |
name: "accepttests-passed" | |
runs-on: ubuntu-22.04 | |
needs: [ acceptanceTestEthereum ] | |
permissions: | |
checks: write | |
statuses: write | |
if: always() | |
steps: | |
# Fail if any `needs` job was not a success. | |
# Along with `if: always()`, this allows this job to act as a single required status check for the entire workflow. | |
- name: Fail on workflow error | |
run: exit 1 | |
if: >- | |
${{ | |
contains(needs.*.result, 'failure') | |
|| contains(needs.*.result, 'cancelled') | |
|| contains(needs.*.result, 'skipped') | |
}} |