From 636c572120d413f989ebd4bef9a62b55ed0b3b72 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jul 2026 16:25:36 +1000 Subject: [PATCH 01/10] Require Xcode 26.6 in CI --- .xcode-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.xcode-version b/.xcode-version index 3e9e908d3126..7363977a2ac2 100644 --- a/.xcode-version +++ b/.xcode-version @@ -1 +1 @@ -26.4.1 +26.6 From 62afedfefc67a5eace295b0f39f76c3d5521de10 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jul 2026 16:29:40 +1000 Subject: [PATCH 02/10] Use Ruby 3.4.9 and re-bundle with latest Bundler, 4.0.15 Also notice that config has been update to enforce building with native extensions, so that the lockfile stays tidy and doesn't produce noise. This behavior had been flaky in previous Xcode toolchain and because we didn't have newer Ruby versions available. --- .bundle/config | 1 + .ruby-version | 2 +- Gemfile.lock | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.bundle/config b/.bundle/config index ae257f93d28f..6237b8471d1b 100644 --- a/.bundle/config +++ b/.bundle/config @@ -4,3 +4,4 @@ BUNDLE_JOBS: "3" BUNDLE_WITHOUT: "screenshots" BUNDLE_RETRY: "3" BUNDLE_SPECIFIC_PLATFORM: "false" +BUNDLE_FORCE_RUBY_PLATFORM: "true" diff --git a/.ruby-version b/.ruby-version index be94e6f53db6..7bcbb3808b50 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.2.2 +3.4.9 diff --git a/Gemfile.lock b/Gemfile.lock index f78ea3b8d0c1..2506801b19f2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -396,4 +396,4 @@ DEPENDENCIES rubocop-rake (~> 0.7) BUNDLED WITH - 2.4.22 + 4.0.15 From 570a469156cea223d05dd44834a6eb1c6afd07d8 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jul 2026 16:43:20 +1000 Subject: [PATCH 03/10] Trust FelixHerrmann tap for newer Homebrew The Xcode 26.6 image ships a Homebrew that enforces tap trust and refuses to load `swift-package-list` from the untrusted `FelixHerrmann/tap`, failing the Homebrew dependency install step. --- Generated with the help of Claude Code, https://claude.ai/code Co-Authored-By: Claude Opus 4.8 --- .buildkite/commands/build-for-testing.sh | 2 ++ .buildkite/commands/shared-set-up-distribution.sh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.buildkite/commands/build-for-testing.sh b/.buildkite/commands/build-for-testing.sh index 1f66c9b2e2f0..92088498de74 100755 --- a/.buildkite/commands/build-for-testing.sh +++ b/.buildkite/commands/build-for-testing.sh @@ -14,6 +14,8 @@ fi echo "--- :beer: Installing Homebrew Dependencies" brew tap FelixHerrmann/tap +# Newer Homebrew refuses third-party tap formulae until the tap is trusted. +brew trust FelixHerrmann/tap brew install swift-package-list "$(dirname "${BASH_SOURCE[0]}")/shared-set-up.sh" diff --git a/.buildkite/commands/shared-set-up-distribution.sh b/.buildkite/commands/shared-set-up-distribution.sh index f81d9639d045..07ea50fe5be0 100755 --- a/.buildkite/commands/shared-set-up-distribution.sh +++ b/.buildkite/commands/shared-set-up-distribution.sh @@ -5,6 +5,8 @@ echo "--- :beer: Installing Homebrew Dependencies" brew upgrade sentry-cli brew tap FelixHerrmann/tap +# Newer Homebrew refuses third-party tap formulae until the tap is trusted. +brew trust FelixHerrmann/tap brew install swift-package-list brew install imagemagick From 281e8b031bac865dab110a63a7d392795b5f610c Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jul 2026 16:45:38 +1000 Subject: [PATCH 04/10] Drop dead BUNDLE_SPECIFIC_PLATFORM bundler setting Bundler stopped reading `specific_platform` in 2.2.0 (2020-12-10): commit `0bcf7492d` deleted its `settings_flag`, making platform-specific gem resolution unconditional. The `"false"` value has been a no-op since. --- Generated with the help of Claude Code, https://claude.ai/code Co-Authored-By: Claude Opus 4.8 --- .bundle/config | 1 - 1 file changed, 1 deletion(-) diff --git a/.bundle/config b/.bundle/config index 6237b8471d1b..84067808eb46 100644 --- a/.bundle/config +++ b/.bundle/config @@ -3,5 +3,4 @@ BUNDLE_PATH: "vendor/bundle" BUNDLE_JOBS: "3" BUNDLE_WITHOUT: "screenshots" BUNDLE_RETRY: "3" -BUNDLE_SPECIFIC_PLATFORM: "false" BUNDLE_FORCE_RUBY_PLATFORM: "true" From f9e72e1344322439165e72d245f4d69d3418895b Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jul 2026 16:52:03 +1000 Subject: [PATCH 05/10] Remove verbose AI comment Co-authored-by: Gio Lodi --- .buildkite/commands/build-for-testing.sh | 1 - .buildkite/commands/shared-set-up-distribution.sh | 1 - 2 files changed, 2 deletions(-) diff --git a/.buildkite/commands/build-for-testing.sh b/.buildkite/commands/build-for-testing.sh index 92088498de74..f49e976b06bc 100755 --- a/.buildkite/commands/build-for-testing.sh +++ b/.buildkite/commands/build-for-testing.sh @@ -14,7 +14,6 @@ fi echo "--- :beer: Installing Homebrew Dependencies" brew tap FelixHerrmann/tap -# Newer Homebrew refuses third-party tap formulae until the tap is trusted. brew trust FelixHerrmann/tap brew install swift-package-list diff --git a/.buildkite/commands/shared-set-up-distribution.sh b/.buildkite/commands/shared-set-up-distribution.sh index 07ea50fe5be0..87c08d570c84 100755 --- a/.buildkite/commands/shared-set-up-distribution.sh +++ b/.buildkite/commands/shared-set-up-distribution.sh @@ -5,7 +5,6 @@ echo "--- :beer: Installing Homebrew Dependencies" brew upgrade sentry-cli brew tap FelixHerrmann/tap -# Newer Homebrew refuses third-party tap formulae until the tap is trusted. brew trust FelixHerrmann/tap brew install swift-package-list From 05032c04537b74ce00331cf08a4621d1008e66f7 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jul 2026 16:56:07 +1000 Subject: [PATCH 06/10] Extract swift-package-list install to shared script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `FelixHerrmann/tap` tap/trust/install block was duplicated in `build-for-testing.sh` and `shared-set-up-distribution.sh` — the two CI paths that build a shippable app and thus need the acknowledgements build phase's `swift-package-list`. Centralize it so the tap-trust incantation has one home. --- Generated with the help of Claude Code, https://claude.ai/code Co-Authored-By: Claude Opus 4.8 --- .buildkite/commands/build-for-testing.sh | 4 +--- .buildkite/commands/install-swift-package-list.sh | 5 +++++ .buildkite/commands/shared-set-up-distribution.sh | 4 +--- 3 files changed, 7 insertions(+), 6 deletions(-) create mode 100755 .buildkite/commands/install-swift-package-list.sh diff --git a/.buildkite/commands/build-for-testing.sh b/.buildkite/commands/build-for-testing.sh index f49e976b06bc..591790f990bd 100755 --- a/.buildkite/commands/build-for-testing.sh +++ b/.buildkite/commands/build-for-testing.sh @@ -13,9 +13,7 @@ if [[ "$APP" != "wordpress" && "$APP" != "jetpack" ]]; then fi echo "--- :beer: Installing Homebrew Dependencies" -brew tap FelixHerrmann/tap -brew trust FelixHerrmann/tap -brew install swift-package-list +"$(dirname "${BASH_SOURCE[0]}")/install-swift-package-list.sh" "$(dirname "${BASH_SOURCE[0]}")/shared-set-up.sh" diff --git a/.buildkite/commands/install-swift-package-list.sh b/.buildkite/commands/install-swift-package-list.sh new file mode 100755 index 000000000000..12bdc1b9b295 --- /dev/null +++ b/.buildkite/commands/install-swift-package-list.sh @@ -0,0 +1,5 @@ +#!/bin/bash -eu + +brew tap FelixHerrmann/tap +brew trust FelixHerrmann/tap +brew install swift-package-list diff --git a/.buildkite/commands/shared-set-up-distribution.sh b/.buildkite/commands/shared-set-up-distribution.sh index 87c08d570c84..2bfafec22569 100755 --- a/.buildkite/commands/shared-set-up-distribution.sh +++ b/.buildkite/commands/shared-set-up-distribution.sh @@ -4,9 +4,7 @@ echo "--- :beer: Installing Homebrew Dependencies" # Sentry CLI needs to be up-to-date brew upgrade sentry-cli -brew tap FelixHerrmann/tap -brew trust FelixHerrmann/tap -brew install swift-package-list +"$(dirname "${BASH_SOURCE[0]}")/install-swift-package-list.sh" brew install imagemagick brew install ghostscript From edebc804c59816a839a45b9568a63c896a6bd882 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Mon, 6 Jul 2026 17:34:52 +1000 Subject: [PATCH 07/10] Disable Homebrew ask-mode to unblock CI installs Homebrew 6 enables ask-mode by default: `brew install` prints its plan and prompts for confirmation when it pulls in dependencies. The prompt is meant to be skipped without a TTY, but Buildkite allocates a PTY, so `brew install imagemagick` hung waiting for input that never came. --- Generated with the help of Claude Code, https://claude.ai/code Co-Authored-By: Claude Opus 4.8 --- .buildkite/commands/shared-set-up-distribution.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.buildkite/commands/shared-set-up-distribution.sh b/.buildkite/commands/shared-set-up-distribution.sh index 2bfafec22569..c5062c5f293d 100755 --- a/.buildkite/commands/shared-set-up-distribution.sh +++ b/.buildkite/commands/shared-set-up-distribution.sh @@ -1,5 +1,8 @@ #!/bin/bash -eu +# Homebrew 6 ask-mode prompts before installing dependencies and hangs on the CI PTY. +export HOMEBREW_NO_ASK=1 + echo "--- :beer: Installing Homebrew Dependencies" # Sentry CLI needs to be up-to-date brew upgrade sentry-cli From 574dd2ef32e3d38c38c937827269c088d3ec275c Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jul 2026 14:55:10 +1000 Subject: [PATCH 08/10] Move one CI log header print to the script the log is about --- .buildkite/commands/build-for-testing.sh | 1 - .buildkite/commands/install-swift-package-list.sh | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/commands/build-for-testing.sh b/.buildkite/commands/build-for-testing.sh index 591790f990bd..a7abba9b26ad 100755 --- a/.buildkite/commands/build-for-testing.sh +++ b/.buildkite/commands/build-for-testing.sh @@ -12,7 +12,6 @@ if [[ "$APP" != "wordpress" && "$APP" != "jetpack" ]]; then exit 1 fi -echo "--- :beer: Installing Homebrew Dependencies" "$(dirname "${BASH_SOURCE[0]}")/install-swift-package-list.sh" "$(dirname "${BASH_SOURCE[0]}")/shared-set-up.sh" diff --git a/.buildkite/commands/install-swift-package-list.sh b/.buildkite/commands/install-swift-package-list.sh index 12bdc1b9b295..7c611fb938c3 100755 --- a/.buildkite/commands/install-swift-package-list.sh +++ b/.buildkite/commands/install-swift-package-list.sh @@ -1,5 +1,6 @@ #!/bin/bash -eu +echo "--- :beer::swift: Installing swift-package-list via Homebrew" brew tap FelixHerrmann/tap brew trust FelixHerrmann/tap brew install swift-package-list From a3b852425eea554ec21ed288fddd42ae6df2b662 Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jul 2026 14:56:12 +1000 Subject: [PATCH 09/10] Double quote to avoid word splitting in `build-for-testing.sh` --- .buildkite/commands/build-for-testing.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.buildkite/commands/build-for-testing.sh b/.buildkite/commands/build-for-testing.sh index a7abba9b26ad..2fda0beeb241 100755 --- a/.buildkite/commands/build-for-testing.sh +++ b/.buildkite/commands/build-for-testing.sh @@ -24,8 +24,8 @@ echo "--- :closed_lock_with_key: Installing Secrets" bundle exec fastlane run configure_apply echo "--- :hammer_and_wrench: Building" -bundle exec fastlane build_${APP}_for_testing +bundle exec fastlane "build_${APP}_for_testing" echo "--- :arrow_up: Upload Build Products" -tar -cf build-products-${APP}.tar DerivedData/Build/Products/ -upload_artifact build-products-${APP}.tar +tar -cf "build-products-${APP}.tar" DerivedData/Build/Products/ +upload_artifact "build-products-${APP}.tar" From c3a0048f3b645eaef220afa5a7f5c9ddb6f6cf1c Mon Sep 17 00:00:00 2001 From: Gio Lodi Date: Tue, 7 Jul 2026 15:09:47 +1000 Subject: [PATCH 10/10] Only run `brew trust` where available Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .buildkite/commands/install-swift-package-list.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.buildkite/commands/install-swift-package-list.sh b/.buildkite/commands/install-swift-package-list.sh index 7c611fb938c3..c88884d1f42e 100755 --- a/.buildkite/commands/install-swift-package-list.sh +++ b/.buildkite/commands/install-swift-package-list.sh @@ -2,5 +2,7 @@ echo "--- :beer::swift: Installing swift-package-list via Homebrew" brew tap FelixHerrmann/tap -brew trust FelixHerrmann/tap +if brew help trust >/dev/null 2>&1; then + brew trust FelixHerrmann/tap +fi brew install swift-package-list