From 28a7826f0b88abe06fdcf3134dec8d520af6e38b Mon Sep 17 00:00:00 2001 From: John Cater Date: Fri, 6 Nov 2026 17:40:08 +0100 Subject: [PATCH 1/4] Add XCode 27.2 to the list of installed xcodes. Also update module versions to support XCode 27.2. ref CE-302. --- MODULE.bazel | 4 ++-- MODULE.bazel.lock | 12 ++++++------ platform/macos_arm64/BUILD | 23 +++++++++++++++++++++-- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index c2e3ffd7..c7d80bb5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -49,9 +49,9 @@ bazel_dep(name = "bazel_skylib", version = "1.9.0") bazel_dep(name = "engflowapis-java", version = "2025.03.14-12.58.52") bazel_dep(name = "platforms", version = "1.1.0") bazel_dep(name = "protobuf", version = "35.0") -bazel_dep(name = "apple_support", version = "2.8.4") +bazel_dep(name = "apple_support", version = "2.9.1") bazel_dep(name = "rules_cc", version = "0.2.22") -bazel_dep(name = "rules_apple", version = "5.1.0") +bazel_dep(name = "rules_apple", version = "5.4.0") bazel_dep( name = "googleapis", version = "0.0.0-20260525-ef19b7b7", diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index eacbf056..cf0fe4fc 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -34,10 +34,10 @@ "https://bcr.bazel.build/modules/apple_support/1.24.2/MODULE.bazel": "0e62471818affb9f0b26f128831d5c40b074d32e6dda5a0d3852847215a41ca4", "https://bcr.bazel.build/modules/apple_support/2.3.0/MODULE.bazel": "d48f824ae8eeea5f837eb3038cef3615075d996d3e82eb9187192c2820605a81", "https://bcr.bazel.build/modules/apple_support/2.5.2/MODULE.bazel": "bb1b7081e390a8d3885f642cb0073dfcf8e7a36525e079fa8f5835af7079c0fe", - "https://bcr.bazel.build/modules/apple_support/2.5.4/MODULE.bazel": "964e9268b37edb64e9a0fa525e5b5e535ba56bf63cadc68375f92e69fcb734f6", "https://bcr.bazel.build/modules/apple_support/2.8.0/MODULE.bazel": "c45f5176057092afba0be6c48a9ea02101666802f8be536947e099e94757f8ed", "https://bcr.bazel.build/modules/apple_support/2.8.4/MODULE.bazel": "83ae0682db2a4ea86d20416a9b3bdba7f6c2a81e136b4d210e5986e30436585e", - "https://bcr.bazel.build/modules/apple_support/2.8.4/source.json": "1c9c86472ed56669622b46e2ddfeb36f58e1234cea73d52740f09de58e93ec6e", + "https://bcr.bazel.build/modules/apple_support/2.9.1/MODULE.bazel": "fb209b83ed172af587419acb3340389cfe3260669e5f1c05e1ac3974aca614e0", + "https://bcr.bazel.build/modules/apple_support/2.9.1/source.json": "247d9f86d94c546533fb01e6e18b018486f9a6dff5faccae8838ef12e659b2a7", "https://bcr.bazel.build/modules/aspect_bazel_lib/1.31.2/MODULE.bazel": "7bee702b4862612f29333590f4b658a5832d433d6f8e4395f090e8f4e85d442f", "https://bcr.bazel.build/modules/aspect_bazel_lib/1.38.0/MODULE.bazel": "6307fec451ba9962c1c969eb516ebfe1e46528f7fa92e1c9ac8646bef4cdaa3f", "https://bcr.bazel.build/modules/aspect_bazel_lib/1.40.3/MODULE.bazel": "668e6bcb4d957fc0e284316dba546b705c8d43c857f87119619ee83c4555b859", @@ -332,8 +332,8 @@ "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", "https://bcr.bazel.build/modules/rules_apple/3.5.1/MODULE.bazel": "3d1bbf65ad3692003d36d8a29eff54d4e5c1c5f4bfb60f79e28646a924d9101c", "https://bcr.bazel.build/modules/rules_apple/4.1.0/MODULE.bazel": "76e10fd4a48038d3fc7c5dc6e63b7063bbf5304a2e3bd42edda6ec660eebea68", - "https://bcr.bazel.build/modules/rules_apple/5.1.0/MODULE.bazel": "57a85577faf7de9f98ecd4d84c3cd9e85f701d8881206ff6f4f31751c8fe4ded", - "https://bcr.bazel.build/modules/rules_apple/5.1.0/source.json": "33eea0f632b6175f9433bdecb36794ab8c831d15cd3bc54e57743b22b3e220c0", + "https://bcr.bazel.build/modules/rules_apple/5.4.0/MODULE.bazel": "35332c590fdb8e03f208e200b6077856b2504ef8fd52aebca729d1a4e2ced010", + "https://bcr.bazel.build/modules/rules_apple/5.4.0/source.json": "7dd022593cf2800dc16c7e581a0fc45743f0e6c7ea52bbf125bc42f0295657ba", "https://bcr.bazel.build/modules/rules_buf/0.1.1/MODULE.bazel": "6189aec18a4f7caff599ad41b851ab7645d4f1e114aa6431acf9b0666eb92162", "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", @@ -358,7 +358,8 @@ "https://bcr.bazel.build/modules/rules_cc/0.2.17/MODULE.bazel": "1849602c86cb60da8613d2de887f9566a6d354a6df6d7009f9d04a14402f9a84", "https://bcr.bazel.build/modules/rules_cc/0.2.20/MODULE.bazel": "f5c07bce5ddcb99be21a0812ff5aadb439e688b7449c6542152363b2fd859c1a", "https://bcr.bazel.build/modules/rules_cc/0.2.22/MODULE.bazel": "94df4328edef9e44d38de5e73b037cd348e75e7ae55f4e21bf07878c41a31ebb", - "https://bcr.bazel.build/modules/rules_cc/0.2.22/source.json": "b2d6d6f9c332ce269ad75b89c6f3168d809a66173c9040210fb9bcc733ab42fa", + "https://bcr.bazel.build/modules/rules_cc/0.2.25/MODULE.bazel": "4a3d4f3606d3b3190be495dbc497acca552807d1d5540661ef0d1658472882e3", + "https://bcr.bazel.build/modules/rules_cc/0.2.25/source.json": "8df28a9a97b878fe45f0a4f4adf019869dda51a60ee2f6e15a0c79656a25058d", "https://bcr.bazel.build/modules/rules_cc/0.2.4/MODULE.bazel": "1ff1223dfd24f3ecf8f028446d4a27608aa43c3f41e346d22838a4223980b8cc", "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", "https://bcr.bazel.build/modules/rules_cc/0.2.9/MODULE.bazel": "34263f1dca62ea664265438cef714d7db124c03e1ed55ebb4f1dc860164308d1", @@ -505,7 +506,6 @@ "https://bcr.bazel.build/modules/rules_swift/2.4.0/MODULE.bazel": "1639617eb1ede28d774d967a738b4a68b0accb40650beadb57c21846beab5efd", "https://bcr.bazel.build/modules/rules_swift/2.5.0/MODULE.bazel": "6d2fec72be0ad2e1fc2eab536cf9d3fb149037c6d2aa678078f3512c06a819e1", "https://bcr.bazel.build/modules/rules_swift/3.1.2/MODULE.bazel": "72c8f5cf9d26427cee6c76c8e3853eb46ce6b0412a081b2b6db6e8ad56267400", - "https://bcr.bazel.build/modules/rules_swift/4.0.1/MODULE.bazel": "24ad295128e648c117a9defc50a994e9fc4790b6e9a6dab64ba3988146eb4736", "https://bcr.bazel.build/modules/rules_swift/4.1.1/MODULE.bazel": "74bc181e75147cadab7c5040ef59813168f50cf68f48b1c669cb928de4dc4148", "https://bcr.bazel.build/modules/rules_swift/4.1.1/source.json": "41230391449a30ff80956b7ce559ea61c37531cda87ca3aeb2003e1fb0adcaa6", "https://bcr.bazel.build/modules/stardoc/0.5.0/MODULE.bazel": "f9f1f46ba8d9c3362648eea571c6f9100680efc44913618811b58cc9c02cd678", diff --git a/platform/macos_arm64/BUILD b/platform/macos_arm64/BUILD index 30b624f7..12ec901c 100644 --- a/platform/macos_arm64/BUILD +++ b/platform/macos_arm64/BUILD @@ -35,18 +35,37 @@ xcode_version( version = "26.5.0.17F42", ) +xcode_version( + name = "version27_2_0_27B52", + aliases = [ + "27.2.0", + "27.2.0.27B52", + "27B52", + "27.2", + "27", + ], + default_ios_sdk_version = "27.2", + default_macos_sdk_version = "27.2", + default_tvos_sdk_version = "27.2", + default_visionos_sdk_version = "27.2", + default_watchos_sdk_version = "27.2", + version = "27.2.0.27B52", +) + xcode_config( name = "installed_xcodes", - default = ":version26_5_0_17F42", + default = ":version27_2_0_27B52", versions = [ ":version26_5_0_17F42", + ":version27_2_0_27B52", ], ) available_xcodes( name = "available_xcodes", - default = ":version26_5_0_17F42", + default = ":version27_2_0_27B52", versions = [ ":version26_5_0_17F42", + ":version27_2_0_27B52", ], ) From 1a7ea9043b87b923892d12c4c60ba79afa54184d Mon Sep 17 00:00:00 2001 From: John Cater Date: Fri, 6 Nov 2026 11:47:42 -0500 Subject: [PATCH 2/4] Change the default back to 26.5 --- platform/macos_arm64/BUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/macos_arm64/BUILD b/platform/macos_arm64/BUILD index 12ec901c..fc1ad88b 100644 --- a/platform/macos_arm64/BUILD +++ b/platform/macos_arm64/BUILD @@ -54,7 +54,7 @@ xcode_version( xcode_config( name = "installed_xcodes", - default = ":version27_2_0_27B52", + default = ":version26_5_0_17F42", versions = [ ":version26_5_0_17F42", ":version27_2_0_27B52", @@ -63,7 +63,7 @@ xcode_config( available_xcodes( name = "available_xcodes", - default = ":version27_2_0_27B52", + default = ":version26_5_0_17F42", versions = [ ":version26_5_0_17F42", ":version27_2_0_27B52", From ad2f80f30e8b7cc604886a9fb911e7f96b294af4 Mon Sep 17 00:00:00 2001 From: John Cater Date: Fri, 6 Nov 2026 18:52:19 +0000 Subject: [PATCH 3/4] Test ios against each installed Xcode version Run the ios tests in CI against both Xcode 26.5 and 27.2, locally on macos and remotely from both the macos and linux jobs. The version is passed via XCODE_VERSION_OVERRIDE, which test-all.py forwards to bazel as --xcode_version. Part of BZL-94. AI-Assisted: Claude Code, Anthropic Opus 5.5 --- .github/workflows/main.yml | 55 ++++++++++++++++++++++++++++++++------ infra/test-all.py | 4 +++ 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e940a2d3..727aa865 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -39,7 +39,6 @@ jobs: - docker - genrules - go - - ios - java - kotlin - perl @@ -51,6 +50,28 @@ jobs: - arch: arm64 - os: macos + # ios is tested against each installed Xcode version. + - test_package: ios + execution_type: remote + xcode_version: "26.5" + arch: arm64 + os: macos + - test_package: ios + execution_type: remote + xcode_version: "27.2" + arch: arm64 + os: macos + - test_package: ios + execution_type: local + xcode_version: "26.5" + arch: arm64 + os: macos + - test_package: ios + execution_type: local + xcode_version: "27.2" + arch: arm64 + os: macos + steps: - uses: "actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd" @@ -67,8 +88,16 @@ jobs: ARCH: ${{ matrix.arch }} OS: ${{ matrix.os }} EXECUTION_TYPE: ${{ matrix.execution_type }} + # TODO: This should probably follow matrix.xcode_version for the ios tests. APPLE_SDK_VERSION_OVERRIDE: 26.5 - run: python3 infra/test-all.py --package=${{ matrix.test_package }} + XCODE_VERSION: ${{ matrix.xcode_version }} + shell: bash + run: | + # Only set the override when the matrix specifies an Xcode version. + if [[ -n "${XCODE_VERSION}" ]]; then + export XCODE_VERSION_OVERRIDE="${XCODE_VERSION}" + fi + python3 infra/test-all.py --package=${{ matrix.test_package }} linux-test-matrix: runs-on: @@ -92,7 +121,6 @@ jobs: - docker - genrules - go - - ios - java - kotlin - perl @@ -104,15 +132,19 @@ jobs: - arch: x64 - os: linux - # Override remote ios tests to use macos/arm64 in the remote executor. + # Remote ios tests use macos/arm64 in the remote executor, and are + # tested against each installed Xcode version. Local ios tests are + # not supported on linux. - test_package: ios execution_type: remote + xcode_version: "26.5" arch: arm64 os: macos - exclude: - # Local ios tests are not supported on linux - test_package: ios - execution_type: local + execution_type: remote + xcode_version: "27.2" + arch: arm64 + os: macos steps: - uses: "actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd" @@ -130,7 +162,14 @@ jobs: ARCH: ${{ matrix.arch }} OS: ${{ matrix.os }} EXECUTION_TYPE: ${{ matrix.execution_type }} - run: python3 infra/test-all.py --package=${{ matrix.test_package }} + XCODE_VERSION: ${{ matrix.xcode_version }} + shell: bash + run: | + # Only set the override when the matrix specifies an Xcode version. + if [[ -n "${XCODE_VERSION}" ]]; then + export XCODE_VERSION_OVERRIDE="${XCODE_VERSION}" + fi + python3 infra/test-all.py --package=${{ matrix.test_package }} bento-snapshot: runs-on: diff --git a/infra/test-all.py b/infra/test-all.py index a3e50d78..6931f19b 100755 --- a/infra/test-all.py +++ b/infra/test-all.py @@ -66,6 +66,10 @@ def run_tests(package): if package in EXTRA_FLAGS: flags += EXTRA_FLAGS[package] + xcode_version = os.getenv("XCODE_VERSION_OVERRIDE") + if xcode_version: + flags.append("--xcode_version=" + xcode_version) + print(f"---------------\nTesting {package}...") sys.stdout.flush() From 0d59fb12b04e2848a743ae76d5b75bb62d6bb018 Mon Sep 17 00:00:00 2001 From: John Cater Date: Fri, 6 Nov 2026 14:11:09 -0500 Subject: [PATCH 4/4] Don't set XCODE_VERSION_OVERRIDE --- .github/workflows/main.yml | 16 ++-------------- infra/test-all.py | 2 +- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 727aa865..d96b5f19 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -91,13 +91,7 @@ jobs: # TODO: This should probably follow matrix.xcode_version for the ios tests. APPLE_SDK_VERSION_OVERRIDE: 26.5 XCODE_VERSION: ${{ matrix.xcode_version }} - shell: bash - run: | - # Only set the override when the matrix specifies an Xcode version. - if [[ -n "${XCODE_VERSION}" ]]; then - export XCODE_VERSION_OVERRIDE="${XCODE_VERSION}" - fi - python3 infra/test-all.py --package=${{ matrix.test_package }} + run: python3 infra/test-all.py --package=${{ matrix.test_package }} linux-test-matrix: runs-on: @@ -163,13 +157,7 @@ jobs: OS: ${{ matrix.os }} EXECUTION_TYPE: ${{ matrix.execution_type }} XCODE_VERSION: ${{ matrix.xcode_version }} - shell: bash - run: | - # Only set the override when the matrix specifies an Xcode version. - if [[ -n "${XCODE_VERSION}" ]]; then - export XCODE_VERSION_OVERRIDE="${XCODE_VERSION}" - fi - python3 infra/test-all.py --package=${{ matrix.test_package }} + run: python3 infra/test-all.py --package=${{ matrix.test_package }} bento-snapshot: runs-on: diff --git a/infra/test-all.py b/infra/test-all.py index 6931f19b..81d23af4 100755 --- a/infra/test-all.py +++ b/infra/test-all.py @@ -66,7 +66,7 @@ def run_tests(package): if package in EXTRA_FLAGS: flags += EXTRA_FLAGS[package] - xcode_version = os.getenv("XCODE_VERSION_OVERRIDE") + xcode_version = os.getenv("XCODE_VERSION") if xcode_version: flags.append("--xcode_version=" + xcode_version)