First try at adding single GHA pass/fail signal. Only implemented for java
diff --git a/.github/workflows/test_bazel.yml b/.github/workflows/test_bazel.yml
index 0569790..e0df9b4 100644
--- a/.github/workflows/test_bazel.yml
+++ b/.github/workflows/test_bazel.yml
@@ -3,6 +3,9 @@
on:
workflow_call:
inputs:
+ is-presubmit:
+ description: "True if we are in a presubmit run, false otherwise"
+ type: boolean
safe-checkout:
required: true
description: "The SHA key for the commit we want to run over"
diff --git a/.github/workflows/test_cpp.yml b/.github/workflows/test_cpp.yml
index ad135a2..31a7797 100644
--- a/.github/workflows/test_cpp.yml
+++ b/.github/workflows/test_cpp.yml
@@ -3,6 +3,9 @@
on:
workflow_call:
inputs:
+ is-presubmit:
+ description: "True if we are in a presubmit run, false otherwise"
+ type: boolean
safe-checkout:
required: true
description: "The SHA key for the commit we want to run over"
diff --git a/.github/workflows/test_java.yml b/.github/workflows/test_java.yml
index a9abfac..3a34a1b 100644
--- a/.github/workflows/test_java.yml
+++ b/.github/workflows/test_java.yml
@@ -3,6 +3,9 @@
on:
workflow_call:
inputs:
+ is-presubmit:
+ description: "True if we are in a presubmit run, false otherwise"
+ type: boolean
safe-checkout:
required: true
description: "The SHA key for the commit we want to run over"
@@ -17,16 +20,18 @@
fail-fast: false
matrix:
include:
- - name: OpenJDK 8
+ - name: OpenJDK 8 (Continuous)
version: '8'
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
# TODO: b/318555165 - enable the layering check. Currently it does
# not work correctly with the toolchain in this Docker image.
targets: //java/... //java/internal:java_version --features=-layering_check
- - name: OpenJDK 11
+ if: ${{ !inputs.presubmit }}
+ - name: OpenJDK 11 (Continuous)
version: '11'
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:11-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
targets: //java/... //java/internal:java_version
+ if: ${{ !inputs.presubmit }}
- name: OpenJDK 17
version: '17'
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:17-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
diff --git a/.github/workflows/test_runner.yml b/.github/workflows/test_runner.yml
index 70cfc27..e74ab0c 100644
--- a/.github/workflows/test_runner.yml
+++ b/.github/workflows/test_runner.yml
@@ -77,6 +77,9 @@
# Store the sha for checkout so we can easily use it later. For safe
# events, this will be blank and use the defaults.
checkout-sha: ${{ steps.safe-checkout.outputs.sha }}
+ # Stores a boolean value denoting whether this is a presubmit run. This
+ # helps us determine which tests to block on.
+ is-presubmit: ${{ github.event_name == 'pull_request' || github.event_name == 'pull_request_target' }}
steps:
- name: Check
# Trivially pass for safe PRs, and explicitly error for unsafe ones
@@ -114,6 +117,7 @@
needs: [check-tag]
uses: ./.github/workflows/test_bazel.yml
with:
+ is-presubmit: ${{ needs.check-tag.outputs.is-presubmit }}
safe-checkout: ${{ needs.check-tag.outputs.checkout-sha }}
secrets: inherit
@@ -122,6 +126,7 @@
needs: [check-tag]
uses: ./.github/workflows/test_cpp.yml
with:
+ is-presubmit: ${{ needs.check-tag.outputs.is-presubmit }}
safe-checkout: ${{ needs.check-tag.outputs.checkout-sha }}
secrets: inherit
@@ -130,6 +135,7 @@
needs: [check-tag]
uses: ./.github/workflows/test_java.yml
with:
+ is-presubmit: ${{ needs.check-tag.outputs.is-presubmit }}
safe-checkout: ${{ needs.check-tag.outputs.checkout-sha }}
secrets: inherit
@@ -206,3 +212,15 @@
with:
safe-checkout: ${{ needs.check-tag.outputs.checkout-sha }}
secrets: inherit
+
+ # This test depends on all blocking tests and indicates whether they all suceeded.
+ all_blocking_tests:
+ name: All Blocking Tests
+ needs: [bazel, cpp, java, python, ruby, php, php-ext, csharp, objectivec, rust, upb, staleness]
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check test results
+ run: "${{ !contains(join(needs.*.result, ' '), 'failure') && !contains(join(needs.*.result, ' '), 'cancelled') && !contains(join(needs.*.result, ' '), 'skipped') }}"
+ # This workflow must run even if one or more of the dependent workflows
+ # failed.
+ if: always()