Improve rules_java CI config
- Removes duplication by using the matrix configuration
- Separates out linux-only tests, so we can run analysis tests on all platforms
- Uses https://github.com/bazelbuild/continuous-integration/pull/2188 for task names
PiperOrigin-RevId: 735739491
Change-Id: I0b0fbe296bed6a24a693a41e319a439f9e0ac358
diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml
index 2bf1a1f..de1be01 100644
--- a/.bazelci/presubmit.yml
+++ b/.bazelci/presubmit.yml
@@ -22,6 +22,8 @@
test_targets: &test_targets
- "//test/..."
- "//java/test/..."
+ # linux-only tests
+ - "-//test:check_remote_jdk_configs_test"
# TODO: re-enable docs after moving them out of https://bazel.build/reference/be/java
- "-//test:docs_up_to_date_test"
@@ -38,146 +40,73 @@
buildifier: latest
+matrix:
+ all_platforms: ["ubuntu2004", "macos", "windows"]
+ integration_platforms: ["ubuntu2004", "macos"] # TODO: add windows batch setup script
+ bazel: ["7.4.0", "8.1.0", "last_green"] # Bazel 6 tested separately, needs different flags
+ modern_bazel: ["8.1.0", "last_green"] # Fully supported Bazel versions
+
tasks:
# Bazel 7.x
- ubuntu2004_bazel7:
- name: "Bazel 7.x"
- bazel: "7.4.0"
- platform: ubuntu2004
+ build_and_test_bazel7:
+ name: "Bazel 7.5.0"
+ bazel: "7.5.0"
+ platform: ${{ all_platforms }}
build_targets: *build_targets
test_targets: *test_targets
test_flags:
- "--test_tag_filters=-min_bazel_8"
- ubuntu2004_integration_bazel7:
- name: "Bazel 7.x Integration"
- bazel: "7.4.0"
- platform: ubuntu2004
- working_directory: "test/repo"
- shell_commands:
- - sh setup.sh
- build_targets: *build_targets_integration
- test_targets: *test_target_integration
- ubuntu2004_integration_workspace_bazel7:
- name: "Bazel 7.x Integration (WORKSPACE)"
- bazel: "7.4.0"
- platform: ubuntu2004
- working_directory: "test/repo"
- shell_commands:
- - sh setup.sh
- build_targets: *build_targets_integration
- build_flags: *flags_workspace_integration
- test_targets: *test_target_integration
- test_flags: *flags_workspace_integration
- macos_bazel7:
- name: "Bazel 7.x"
- bazel: "7.4.0"
- platform: macos
- build_targets: *build_targets
- windows_bazel7:
- name: "Bazel 7.x"
- bazel: "7.4.0"
- platform: windows
- build_targets: *build_targets
-# Bazel 8.x
- ubuntu2004_bazel8:
- name: "Bazel 8.x"
- bazel: "8.1.0"
- platform: ubuntu2004
+# Bazel 8+
+ build_and_test:
+ name: "Bazel {modern_bazel}"
+ bazel: ${{ modern_bazel }}
+ platform: ${{ all_platforms }}
build_targets: *build_targets
test_targets: *test_targets
- ubuntu2004_integration_bazel8:
- name: "Bazel 8.x Integration"
- bazel: "8.1.0"
- platform: ubuntu2004
- working_directory: "test/repo"
- shell_commands:
- - sh setup.sh
- build_targets: *build_targets_integration
- test_targets: *test_target_integration
- ubuntu2004_integration_workspace_bazel8:
- name: "Bazel 8.x Integration (WORKSPACE)"
- bazel: "8.1.0"
- platform: ubuntu2004
- working_directory: "test/repo"
- shell_commands:
- - sh setup.sh
- build_targets: *build_targets_integration
- build_flags: *flags_workspace_integration
- test_targets: *test_target_integration
- test_flags: *flags_workspace_integration
- macos_bazel8:
- name: "Bazel 8.x"
- bazel: "8.1.0"
- platform: macos
- build_targets: *build_targets
- windows_bazel8:
- name: "Bazel 8.x"
- bazel: "8.1.0"
- platform: windows
- build_targets: *build_targets
-# Bazel@HEAD
- ubuntu2004_head:
- name: "Bazel@HEAD"
- bazel: last_green
- platform: ubuntu2004
- build_targets: *build_targets
- test_targets: *test_targets
- ubuntu2004_integration_head:
- name: "Bazel@HEAD Integration"
- bazel: last_green
- platform: ubuntu2004
- working_directory: "test/repo"
- shell_commands:
- - sh setup.sh
- build_targets: *build_targets_integration
- test_targets: *test_target_integration
- ubuntu2004_integration_head_workspace:
- name: "Bazel@HEAD Integration (WORKSPACE)"
- bazel: "last_green"
- platform: ubuntu2004
- working_directory: "test/repo"
- shell_commands:
- - sh setup.sh
- build_targets: *build_targets_integration
- build_flags: *flags_workspace_integration
- test_targets: *test_target_integration
- test_flags: *flags_workspace_integration
- macos_head:
- name: "Bazel@HEAD"
- bazel: last_green
- platform: macos
- build_targets: *build_targets
- windows_head:
- name: "Bazel@HEAD"
- bazel: last_green
- platform: windows
- build_targets: *build_targets
-
# Bazel 6.x
- ubuntu2004_bazel6:
- name: "Bazel 6.x"
- bazel: 6.4.0
- platform: ubuntu2004
+ build_and_test_bazel6:
+ name: "Bazel 6.5.0"
+ bazel: 6.5.0
+ platform: ${{ all_platforms }}
build_targets: *build_targets_bazel6
test_targets: *test_targets_bazel6
test_flags:
- "--test_tag_filters=-min_bazel_7,-min_bazel_8"
ubuntu2004_integration_bazel6:
- name: "Bazel 6.x Integration"
- bazel: 6.4.0
+ name: "Integration w/ Bazel 6.5.0"
+ bazel: 6.5.0
platform: ubuntu2004
working_directory: "test/repo"
shell_commands:
- sh setup.sh
build_targets: *build_targets_integration
test_targets: *test_target_integration
- macos_bazel6:
- name: "Bazel 6.x"
- bazel: 6.4.0
- platform: macos
- build_targets: *build_targets_bazel6
- windows_bazel6:
- name: "Bazel 6.x"
- bazel: 6.4.0
- platform: windows
- build_targets: *build_targets_bazel6
+
+# Integration tests
+ integration_build_and_test:
+ name: "Integration w/ Bazel {bazel}"
+ bazel: ${{ bazel }}
+ platform: ${{ integration_platforms }}
+ working_directory: "test/repo"
+ shell_commands:
+ - sh setup.sh
+ build_targets: *build_targets_integration
+ test_targets: *test_target_integration
+ integration_build_and_test_workspace:
+ name: "Integration (WORKSPACE) w/ Bazel {bazel}"
+ bazel: ${{ bazel }}
+ platform: ${{ integration_platforms }}
+ working_directory: "test/repo"
+ shell_commands:
+ - sh setup.sh
+ build_targets: *build_targets_integration
+ build_flags: *flags_workspace_integration
+ test_targets: *test_target_integration
+ test_flags: *flags_workspace_integration
+# Linux-only tests
+ linux_only_tests:
+ name: "Extra tests w/ Bazel {bazel}"
+ bazel: ${{ bazel }}
+ platform: "ubuntu2004"
+ test_targets:
+ - "//test:check_remote_jdk_configs_test"