From 24c22b55763f0af414f4098d40992c0e27b872e3 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 14:02:16 -0500 Subject: [PATCH 01/14] consolidate status to get rid of shard-specific ones Signed-off-by: Justin Florentine --- .github/workflows/acceptance-tests.yml | 2 +- .github/workflows/pre-review.yml | 63 +++++++++++++++++++------- 2 files changed, 48 insertions(+), 17 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index ecab3f3ae9c..c7f906341cc 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -117,7 +117,7 @@ jobs: context: acceptance-tests-${{matrix.runner_index}} sha: ${{ github.event.pull_request.head.sha || github.sha }} description: fail acceptance test batch ${{matrix.runner_index}} - - name: flag passed unit tests + - name: flag passed acceptance tests uses: myrotvorets/set-commit-status-action@v2.0.0 if: success() with: diff --git a/.github/workflows/pre-review.yml b/.github/workflows/pre-review.yml index 104f78e59d8..c69f8cecc3b 100644 --- a/.github/workflows/pre-review.yml +++ b/.github/workflows/pre-review.yml @@ -12,14 +12,6 @@ env: GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true jobs: - pend: - name: unit testing pending - runs-on: ubuntu-22.04 - steps: - - name: pending - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - status: pending repolint: name: "Repository Linting" runs-on: ubuntu-22.04 @@ -29,12 +21,26 @@ jobs: uses: actions/checkout@v4 - name: Lint Repo run: bundle exec /app/bin/repolinter.js --rulesetUrl https://raw.githubusercontent.com/hyperledger-labs/hyperledger-community-management-tools/main/repo_structure/repolint.json --format markdown + - name: flag repolint failure + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: failure() + with: + status: ${{ job.status }} + context: pre-review + description: repo linting failed gradle-wrapper: name: "Gradle Wrapper Validation" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v1.1.0 + - name: flag gradle wrapper failure + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: failure() + with: + status: ${{ job.status }} + context: pre-review + description: gradlew validation failed spotless: runs-on: ubuntu-22.04 if: ${{ github.actor != 'dependabot[bot]' }} @@ -50,6 +56,13 @@ jobs: uses: gradle/gradle-build-action@v2.10.0 - name: run spotless run: ./gradlew spotlessCheck -Dorg.gradle.parallel=true -Dorg.gradle.caching=true + - name: flag spotless failure + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: failure() + with: + status: ${{ job.status }} + context: pre-review + description: spotless failed compile: runs-on: ubuntu-22.04 timeout-minutes: 30 @@ -66,6 +79,13 @@ jobs: uses: gradle/gradle-build-action@v2.10.0 - name: Gradle Compile run: ./gradlew build -x test -x spotlessCheck -Dorg.gradle.parallel=true -Dorg.gradle.caching=true + - name: flag compile failure + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: failure() + with: + status: ${{ job.status }} + context: pre-review + description: compilation failed unitTests: env: GRADLEW_UNIT_TEST_ARGS: ${{matrix.gradle_args}} @@ -74,6 +94,8 @@ jobs: permissions: checks: write statuses: write + outputs: + unitShardFailed: ${{ steps.unitTest.outputs. strategy: fail-fast: false matrix: @@ -102,20 +124,29 @@ jobs: if: failure() with: status: ${{ job.status }} - context: unit-tests-${{matrix.gradle_args}} - description: ${{matrix.gradle_args}} - - name: flag passed unit tests - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: success() - with: - status: ${{ job.status }} - + context: pre-review + description: unit test shard failed - name: Publish Test Report uses: mikepenz/action-junit-report@v4 if: success() || failure() # always run even if the build step fails with: report_paths: '**/test-results/test/TEST-*.xml' annotate_only: true + consolidateStatus: + runs-on: ubuntu-22.04 + needs: unitTests + permissions: + statuses: write + checks: write + steps: + - name: status success + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{jobs.unitTests.status == 'success' }} + with: + status: success + context: pre-review + description: unit test shard failed + acceptanceTest: needs: unitTests uses: ./.github/workflows/acceptance-tests.yml From 0a52acea7919113bbc5fcc658848042a62fef259 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 14:10:30 -0500 Subject: [PATCH 02/14] distracted mid-expression Signed-off-by: Justin Florentine --- .github/workflows/pre-review.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/pre-review.yml b/.github/workflows/pre-review.yml index c69f8cecc3b..f1be469ad4d 100644 --- a/.github/workflows/pre-review.yml +++ b/.github/workflows/pre-review.yml @@ -94,8 +94,6 @@ jobs: permissions: checks: write statuses: write - outputs: - unitShardFailed: ${{ steps.unitTest.outputs. strategy: fail-fast: false matrix: From 81fd6cc215b5195092860c34767d605a30b51964 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 14:11:34 -0500 Subject: [PATCH 03/14] typo in expression Signed-off-by: Justin Florentine --- .github/workflows/pre-review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-review.yml b/.github/workflows/pre-review.yml index f1be469ad4d..f86619f2c4f 100644 --- a/.github/workflows/pre-review.yml +++ b/.github/workflows/pre-review.yml @@ -139,7 +139,7 @@ jobs: steps: - name: status success uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{jobs.unitTests.status == 'success' }} + if: ${{job.unitTests.status == 'success' }} with: status: success context: pre-review From 6af1334542c3e3eade8b35cf1c6faf5d21b6fc09 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 14:31:37 -0500 Subject: [PATCH 04/14] allow pre-review to conclude prior to approval Signed-off-by: Justin Florentine --- .github/workflows/acceptance-tests.yml | 3 +-- .github/workflows/integration-tests.yml | 3 +-- .github/workflows/pre-review.yml | 9 --------- .github/workflows/reference-tests.yml | 3 +-- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index c7f906341cc..a423e25d34e 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -1,7 +1,6 @@ name: acceptance-tests on: - workflow_dispatch: - workflow_call: + pull_request: pull_request_review: types: [submitted] diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 3e1720a0c6f..7548bc638aa 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -1,7 +1,6 @@ name: integration-tests on: - workflow_dispatch: - workflow_call: + pull_request: pull_request_review: types: - submitted diff --git a/.github/workflows/pre-review.yml b/.github/workflows/pre-review.yml index f86619f2c4f..1f5e0e7ebf3 100644 --- a/.github/workflows/pre-review.yml +++ b/.github/workflows/pre-review.yml @@ -145,12 +145,3 @@ jobs: context: pre-review description: unit test shard failed - acceptanceTest: - needs: unitTests - uses: ./.github/workflows/acceptance-tests.yml - integrationTest: - needs: unitTests - uses: ./.github/workflows/integration-tests.yml - referenceTest: - needs: unitTests - uses: ./.github/workflows/reference-tests.yml diff --git a/.github/workflows/reference-tests.yml b/.github/workflows/reference-tests.yml index 822b55c12fe..1185f807894 100644 --- a/.github/workflows/reference-tests.yml +++ b/.github/workflows/reference-tests.yml @@ -1,7 +1,6 @@ name: reference-tests on: - workflow_dispatch: - workflow_call: + pull_request: pull_request_review: types: - submitted From ad5fe6d672617e145dd61b1021db15afa1465d10 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 15:08:55 -0500 Subject: [PATCH 05/14] conditional should use needs result? Signed-off-by: Justin Florentine --- .github/workflows/pre-review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-review.yml b/.github/workflows/pre-review.yml index 1f5e0e7ebf3..23c35dc75a0 100644 --- a/.github/workflows/pre-review.yml +++ b/.github/workflows/pre-review.yml @@ -139,7 +139,7 @@ jobs: steps: - name: status success uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{job.unitTests.status == 'success' }} + if: ${{needs.unitTests.result == "success" }} with: status: success context: pre-review From 79856bc63deffdeb14f7915896f4533827879a3d Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 15:18:23 -0500 Subject: [PATCH 06/14] single quotes? Signed-off-by: Justin Florentine --- .github/workflows/pre-review.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-review.yml b/.github/workflows/pre-review.yml index 23c35dc75a0..f4cade5e276 100644 --- a/.github/workflows/pre-review.yml +++ b/.github/workflows/pre-review.yml @@ -139,7 +139,7 @@ jobs: steps: - name: status success uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{needs.unitTests.result == "success" }} + if: ${{needs.unitTests.steps.unitTest.result == 'success' }} with: status: success context: pre-review From 3b9b310b4ec28b7adb288bbd78f9b1788de39aa4 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 15:59:39 -0500 Subject: [PATCH 07/14] i wonder what happens with both success/fail statuses? Signed-off-by: Justin Florentine --- .github/workflows/pre-review.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pre-review.yml b/.github/workflows/pre-review.yml index f4cade5e276..4b6b22b25b9 100644 --- a/.github/workflows/pre-review.yml +++ b/.github/workflows/pre-review.yml @@ -122,7 +122,7 @@ jobs: if: failure() with: status: ${{ job.status }} - context: pre-review + context: unit-tested description: unit test shard failed - name: Publish Test Report uses: mikepenz/action-junit-report@v4 @@ -139,9 +139,8 @@ jobs: steps: - name: status success uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{needs.unitTests.steps.unitTest.result == 'success' }} with: status: success - context: pre-review - description: unit test shard failed + context: unit-tested + description: unit tests passed From c17e28a86a5aec0fa09d5b6cef23aed927103fbf Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 16:27:10 -0500 Subject: [PATCH 08/14] intentional test failure Signed-off-by: Justin Florentine --- .../src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java index 0df397af71f..e4e5e894a6a 100644 --- a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java +++ b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java @@ -3874,7 +3874,7 @@ public void futureEipsValuesAreUsed() { verify(mockControllerBuilderFactory).fromEthNetworkConfig(networkArg.capture(), any(), any()); verify(mockControllerBuilder).build(); - assertThat(networkArg.getValue()).isEqualTo(EthNetworkConfig.getNetworkConfig(FUTURE_EIPS)); + assertThat(networkArg.getValue()).isNotEqualTo(EthNetworkConfig.getNetworkConfig(FUTURE_EIPS)); assertThat(commandOutput.toString(UTF_8)).isEmpty(); assertThat(commandErrorOutput.toString(UTF_8)).isEmpty(); From 30dbc09b41589dd6253edfb799733af76e78a1a9 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Tue, 9 Jan 2024 17:33:07 -0500 Subject: [PATCH 09/14] fix intentional failed test Signed-off-by: Justin Florentine --- .../src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java index e4e5e894a6a..0df397af71f 100644 --- a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java +++ b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java @@ -3874,7 +3874,7 @@ public void futureEipsValuesAreUsed() { verify(mockControllerBuilderFactory).fromEthNetworkConfig(networkArg.capture(), any(), any()); verify(mockControllerBuilder).build(); - assertThat(networkArg.getValue()).isNotEqualTo(EthNetworkConfig.getNetworkConfig(FUTURE_EIPS)); + assertThat(networkArg.getValue()).isEqualTo(EthNetworkConfig.getNetworkConfig(FUTURE_EIPS)); assertThat(commandOutput.toString(UTF_8)).isEmpty(); assertThat(commandErrorOutput.toString(UTF_8)).isEmpty(); From a11a939bdfede88edb33b034d769cb4a2786c2c4 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Wed, 10 Jan 2024 11:15:16 -0500 Subject: [PATCH 10/14] enables status required before merging Signed-off-by: Justin Florentine --- .github/workflows/acceptance-tests.yml | 29 +++++++++++++++----------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index a423e25d34e..6b8a6e4cf6a 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -11,6 +11,7 @@ env: jobs: shouldRun: name: checks to ensure we should run + # necessary because there is no single PR approved event, need to check all comments/approvals/denials runs-on: ubuntu-22.04 outputs: shouldRun: ${{steps.shouldRun.outputs.result}} @@ -29,9 +30,7 @@ jobs: repo: context.repo.repo, ref: RELEVANT_SHA, }); - const unitTested = statuses && statuses.filter(({ context }) => context === 'pre-review'); - const failedUnits = unitTested && unitTested.filter(({state}) => state === 'failure' || state === 'pending'); - const acceptanceTested = statuses && statuses.filter(({ context }) => context === 'acceptance-tests'); + const acceptanceTested = statuses && statuses.filter(({ context }) => context === 'acceptance-tested'); const alreadyRun = acceptanceTested && acceptanceTested.find(({ state }) => state === 'success' || state === 'pending') > 0; const { data: reviews } = await github.rest.pulls.listReviews({ owner: context.repo.owner, @@ -39,11 +38,10 @@ jobs: pull_number: context.issue.number, }); const approvingReviews = reviews && reviews.filter(review => review.state === 'APPROVED'); - const shouldRun = !alreadyRun && github.actor != 'dependabot[bot]' && (failedUnits.length === 0) && (approvingReviews.length > 0); + const shouldRun = !alreadyRun && github.actor != 'dependabot[bot]' && (approvingReviews.length > 0); console.log("tests should be run = %j", shouldRun); console.log("alreadyRun = %j", alreadyRun); - console.log("failedUnits = %j", failedUnits.length); console.log("approvingReviews = %j", approvingReviews.length); return shouldRun; @@ -113,15 +111,9 @@ jobs: if: failure() with: status: ${{ job.status }} - context: acceptance-tests-${{matrix.runner_index}} + context: acceptance-tested sha: ${{ github.event.pull_request.head.sha || github.sha }} description: fail acceptance test batch ${{matrix.runner_index}} - - name: flag passed acceptance tests - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: success() - with: - status: ${{ job.status }} - sha: ${{ github.event.pull_request.head.sha || github.sha }} - name: cleanup tempfiles run: rm testList.txt gradleArgs.txt - name: Upload Acceptance Test Results @@ -134,3 +126,16 @@ jobs: if: (success() || failure()) # always run even if the build step fails with: report_paths: 'acceptance-tests/tests/build/test-results/acceptanceTest/TEST-*.xml' + consolidateStatus: + runs-on: ubuntu-22.04 + needs: acceptanceTestEthereum + permissions: + statuses: write + checks: write + steps: + - name: status success + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + status: success + context: acceptance-tested + description: acceptance tests passed \ No newline at end of file From e6d7a82194de3d7dd35451d40f26f7a6fa155e23 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Wed, 10 Jan 2024 12:58:41 -0500 Subject: [PATCH 11/14] default sha not always provided Signed-off-by: Justin Florentine --- .github/workflows/acceptance-tests.yml | 3 ++ .github/workflows/reference-tests.yml | 41 ++++++++++++++++++++------ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml index 6b8a6e4cf6a..f31395cb50f 100644 --- a/.github/workflows/acceptance-tests.yml +++ b/.github/workflows/acceptance-tests.yml @@ -12,6 +12,7 @@ jobs: shouldRun: name: checks to ensure we should run # necessary because there is no single PR approved event, need to check all comments/approvals/denials + # might also be a job running, and additional approvals runs-on: ubuntu-22.04 outputs: shouldRun: ${{steps.shouldRun.outputs.result}} @@ -60,6 +61,7 @@ jobs: with: status: pending sha: ${{ github.event.pull_request.head.sha || github.sha }} + context: acceptance-tested acceptanceTestEthereum: runs-on: ubuntu-22.04 needs: pend @@ -136,6 +138,7 @@ jobs: - name: status success uses: myrotvorets/set-commit-status-action@v2.0.0 with: + sha: ${{ github.event.pull_request.head.sha || github.sha }} status: success context: acceptance-tested description: acceptance tests passed \ No newline at end of file diff --git a/.github/workflows/reference-tests.yml b/.github/workflows/reference-tests.yml index 1185f807894..9e5dd51c8b0 100644 --- a/.github/workflows/reference-tests.yml +++ b/.github/workflows/reference-tests.yml @@ -12,6 +12,8 @@ env: jobs: shouldRun: name: checks to ensure we should run + # necessary because there is no single PR approved event, need to check all comments/approvals/denials + # might also be a job running, and additional approvals runs-on: ubuntu-22.04 outputs: shouldRun: ${{steps.shouldRun.outputs.result}} @@ -30,9 +32,9 @@ jobs: repo: context.repo.repo, ref: RELEVANT_SHA, }); - const unitTested = statuses && statuses.filter(({ context }) => context === 'pre-review'); - const failedUnits = unitTested && unitTested.filter(({state}) => state === 'failure' || state === 'pending'); - const refTested = statuses && statuses.filter(({ context }) => context === 'reference-tests'); + + + const refTested = statuses && statuses.filter(({ context }) => context === 'reference-tested'); const alreadyRun = refTested && refTested.find(({ state }) => state === 'success' || state === 'pending') > 0; const { data: reviews } = await github.rest.pulls.listReviews({ owner: context.repo.owner, @@ -40,11 +42,10 @@ jobs: pull_number: context.issue.number, }); const approvingReviews = reviews && reviews.filter(review => review.state === 'APPROVED'); - const shouldRun = !alreadyRun && github.actor != 'dependabot[bot]' && (failedUnits.length === 0) && (approvingReviews.length > 0); + const shouldRun = !alreadyRun && github.actor != 'dependabot[bot]' && (approvingReviews.length > 0); console.log("tests should be run = %j", shouldRun); console.log("alreadyRun = %j", alreadyRun); - console.log("failedUnits = %j", failedUnits.length); console.log("approvingReviews = %j", approvingReviews.length); return shouldRun; @@ -61,6 +62,7 @@ jobs: with: status: pending sha: ${{ github.event.pull_request.head.sha || github.sha }} + context: reference-tested prepareReferenceTestEthereum: runs-on: ubuntu-22.04 needs: shouldRun @@ -97,7 +99,7 @@ jobs: strategy: fail-fast: false matrix: - runner-index: [0,1,2,3,4,5] + runner_index: [0,1,2,3,4,5] steps: - name: Checkout Repo uses: actions/checkout@v3 @@ -130,21 +132,42 @@ jobs: reports: tmp/ref-xml-reports-downloaded glob: 'ethereum/referencetests/build/generated/sources/reference-test/**/*.java' total: ${{env.total-runners}} - index: ${{ matrix.runner-index }} + index: ${{ matrix.runner_index }} - name: compose gradle args run: echo ${{ steps.split-tests.outputs.paths }} | sed -e 's/^.*java\///' -e 's@/@.@g' -e 's/\.java//' -e 's/^/--tests /' > refTestArgs.txt - name: run reference tests run: ./gradlew ethereum:referenceTests:referenceTests `cat refTestArgs.txt` -Dorg.gradle.parallel=true -Dorg.gradle.caching=true + - name: flag failed reference tests + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: failure() + with: + status: ${{ job.status }} + context: reference-tested + sha: ${{ github.event.pull_request.head.sha || github.sha }} + description: fail reference test batch ${{matrix.runner_index}} - name: Upload Test Report uses: actions/upload-artifact@v3 if: always() # always run even if the previous step fails with: - name: reference-test-node-${{matrix.runner-index}}-results + name: reference-test-node-${{matrix.runner_index}}-results path: '**/build/test-results/referenceTests/TEST-*.xml' - name: Publish Test Report uses: mikepenz/action-junit-report@v4 if: success() || failure() # always run even if the build step fails with: report_paths: '**/build/test-results/referenceTest/TEST-*.xml' - + consolidateStatus: + runs-on: ubuntu-22.04 + needs: referenceTestEthereum + permissions: + statuses: write + checks: write + steps: + - name: status success + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ github.event.pull_request.head.sha || github.sha }} + status: success + context: reference-tested + description: reference tests passed From 343aaf0256ab38895f4afaeb1bd4f8eb85141745 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Wed, 10 Jan 2024 14:03:02 -0500 Subject: [PATCH 12/14] integration testing required Signed-off-by: Justin Florentine --- .github/workflows/integration-tests.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 7548bc638aa..3cd7926d83b 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -29,9 +29,8 @@ jobs: repo: context.repo.repo, ref: RELEVANT_SHA, }); - const unitTested = statuses && statuses.filter(({ context }) => context === 'pre-review'); - const failedUnits = unitTested && unitTested.filter(({state}) => state === 'failure' || state === 'pending'); - const intTested = statuses && statuses.filter(({ context }) => context === 'integration-tests'); + + const intTested = statuses && statuses.filter(({ context }) => context === 'integration-tested'); const alreadyRun = intTested && intTested.find(({ state }) => state === 'success' || state === 'pending') > 0; const { data: reviews } = await github.rest.pulls.listReviews({ owner: context.repo.owner, @@ -39,11 +38,10 @@ jobs: pull_number: context.issue.number, }); const approvingReviews = reviews && reviews.filter(review => review.state === 'APPROVED'); - const shouldRun = !alreadyRun && github.actor != 'dependabot[bot]' && (failedUnits.length === 0) && (approvingReviews.length > 0); + const shouldRun = !alreadyRun && github.actor != 'dependabot[bot]' && (approvingReviews.length > 0); console.log("tests should be run = %j", shouldRun); console.log("alreadyRun = %j", alreadyRun); - console.log("failedUnits = %j", failedUnits.length); console.log("approvingReviews = %j", approvingReviews.length); return shouldRun; @@ -59,6 +57,7 @@ jobs: uses: myrotvorets/set-commit-status-action@v2.0.0 with: status: pending + context: integration-tested sha: ${{ github.event.pull_request.head.sha || github.sha }} integrationTest: runs-on: ubuntu-22.04 @@ -79,11 +78,11 @@ jobs: uses: gradle/gradle-build-action@v2 - name: run integration tests run: ./gradlew integrationTest -Dorg.gradle.parallel=true -Dorg.gradle.caching=true - - name: flag passed unit tests + - name: flag passed integration tests uses: myrotvorets/set-commit-status-action@v2.0.0 - if: success() with: status: ${{ job.status }} + context: integration-tested sha: ${{ github.event.pull_request.head.sha || github.sha }} - name: Publish Test Report uses: mikepenz/action-junit-report@v4 From 26ec5b36cbdfae4dbd03b89f04e8c2f58844c468 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Wed, 10 Jan 2024 14:18:56 -0500 Subject: [PATCH 13/14] testing default status check behavior with a broken test Signed-off-by: Justin Florentine --- .github/workflows/pre-review.yml | 49 ------------------- .../hyperledger/besu/cli/BesuCommandTest.java | 2 +- 2 files changed, 1 insertion(+), 50 deletions(-) diff --git a/.github/workflows/pre-review.yml b/.github/workflows/pre-review.yml index 4b6b22b25b9..d93ab7d3853 100644 --- a/.github/workflows/pre-review.yml +++ b/.github/workflows/pre-review.yml @@ -21,26 +21,12 @@ jobs: uses: actions/checkout@v4 - name: Lint Repo run: bundle exec /app/bin/repolinter.js --rulesetUrl https://raw.githubusercontent.com/hyperledger-labs/hyperledger-community-management-tools/main/repo_structure/repolint.json --format markdown - - name: flag repolint failure - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: failure() - with: - status: ${{ job.status }} - context: pre-review - description: repo linting failed gradle-wrapper: name: "Gradle Wrapper Validation" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: gradle/wrapper-validation-action@v1.1.0 - - name: flag gradle wrapper failure - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: failure() - with: - status: ${{ job.status }} - context: pre-review - description: gradlew validation failed spotless: runs-on: ubuntu-22.04 if: ${{ github.actor != 'dependabot[bot]' }} @@ -56,13 +42,6 @@ jobs: uses: gradle/gradle-build-action@v2.10.0 - name: run spotless run: ./gradlew spotlessCheck -Dorg.gradle.parallel=true -Dorg.gradle.caching=true - - name: flag spotless failure - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: failure() - with: - status: ${{ job.status }} - context: pre-review - description: spotless failed compile: runs-on: ubuntu-22.04 timeout-minutes: 30 @@ -79,13 +58,6 @@ jobs: uses: gradle/gradle-build-action@v2.10.0 - name: Gradle Compile run: ./gradlew build -x test -x spotlessCheck -Dorg.gradle.parallel=true -Dorg.gradle.caching=true - - name: flag compile failure - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: failure() - with: - status: ${{ job.status }} - context: pre-review - description: compilation failed unitTests: env: GRADLEW_UNIT_TEST_ARGS: ${{matrix.gradle_args}} @@ -117,30 +89,9 @@ jobs: - name: run unit tests id: unitTest run: ./gradlew $GRADLEW_UNIT_TEST_ARGS -Dorg.gradle.parallel=true -Dorg.gradle.caching=true - - name: flag failed unit tests - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: failure() - with: - status: ${{ job.status }} - context: unit-tested - description: unit test shard failed - name: Publish Test Report uses: mikepenz/action-junit-report@v4 if: success() || failure() # always run even if the build step fails with: report_paths: '**/test-results/test/TEST-*.xml' annotate_only: true - consolidateStatus: - runs-on: ubuntu-22.04 - needs: unitTests - permissions: - statuses: write - checks: write - steps: - - name: status success - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - status: success - context: unit-tested - description: unit tests passed - diff --git a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java index 0df397af71f..e4e5e894a6a 100644 --- a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java +++ b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java @@ -3874,7 +3874,7 @@ public void futureEipsValuesAreUsed() { verify(mockControllerBuilderFactory).fromEthNetworkConfig(networkArg.capture(), any(), any()); verify(mockControllerBuilder).build(); - assertThat(networkArg.getValue()).isEqualTo(EthNetworkConfig.getNetworkConfig(FUTURE_EIPS)); + assertThat(networkArg.getValue()).isNotEqualTo(EthNetworkConfig.getNetworkConfig(FUTURE_EIPS)); assertThat(commandOutput.toString(UTF_8)).isEmpty(); assertThat(commandErrorOutput.toString(UTF_8)).isEmpty(); From f6b5e931d4bfa9c5a6331a39914c467cf9ab4167 Mon Sep 17 00:00:00 2001 From: Justin Florentine Date: Wed, 10 Jan 2024 15:06:54 -0500 Subject: [PATCH 14/14] testing default status check behavior with corrected test Signed-off-by: Justin Florentine --- .../src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java index e4e5e894a6a..0df397af71f 100644 --- a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java +++ b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java @@ -3874,7 +3874,7 @@ public void futureEipsValuesAreUsed() { verify(mockControllerBuilderFactory).fromEthNetworkConfig(networkArg.capture(), any(), any()); verify(mockControllerBuilder).build(); - assertThat(networkArg.getValue()).isNotEqualTo(EthNetworkConfig.getNetworkConfig(FUTURE_EIPS)); + assertThat(networkArg.getValue()).isEqualTo(EthNetworkConfig.getNetworkConfig(FUTURE_EIPS)); assertThat(commandOutput.toString(UTF_8)).isEmpty(); assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();