From 3f5f0a3a4cd0bed7d7473c1c10032ff933e1e831 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Mon, 21 Sep 2026 08:19:10 -0400 Subject: [PATCH 1/7] ci: key pipeline steps by the make target they run Keys had drifted from the targets they invoke (`swift-test-swift-package` ran `make test-swift-simulator`), and four Android steps had no key at all. Keying each step by its make target makes the mapping mechanical. `build-react` keeps a descriptive key because that step does more than `make build`, and steps that run Gradle or scripts directly have no target to mirror. Co-Authored-By: Claude Opus 5 (1M context) --- .buildkite/pipeline.yml | 24 ++++++++++++++---------- .buildkite/publish-pr-xcframework.sh | 4 ++-- .buildkite/release.sh | 4 ++-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 8ccb77765..da6c325ec 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -94,6 +94,7 @@ steps: plugins: *plugins - label: ':android: Lint Android' + key: lint-android command: make lint-android agents: queue: android @@ -106,6 +107,7 @@ steps: queue: linter - label: ':android: Test Android Library' + key: test-android-library depends_on: build-react command: | buildkite-agent artifact download dist.tar.gz . @@ -116,7 +118,7 @@ steps: plugins: *plugins - label: ':swift: iOS Simulator Tests' - key: swift-test-swift-package + key: test-swift-simulator depends_on: build-react command: | buildkite-agent artifact download dist.tar.gz . @@ -125,7 +127,7 @@ steps: plugins: *plugins - label: ':swift: Library Tests' - key: swift-test-library + key: test-swift-host depends_on: build-react command: | buildkite-agent artifact download dist.tar.gz . @@ -134,10 +136,10 @@ steps: plugins: *plugins - label: ':xcode: Build XCFramework' - key: build-xcframework + key: build-resources-xcframework depends_on: - build-react - - swift-test-library + - test-swift-host command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -152,7 +154,7 @@ steps: plugins: *plugins - label: ':s3: Publish XCFramework to S3' - depends_on: build-xcframework + depends_on: build-resources-xcframework # This step only covers per-commit trunk uploads keyed by the commit # SHA. Releases are handled by `:rocket: Publish Swift release` (gated # on `NEW_VERSION`), and tag pushes from that step trigger a separate @@ -169,7 +171,7 @@ steps: plugins: *plugins - label: ':swift: :package: Publish PR XCFramework' - depends_on: build-xcframework + depends_on: build-resources-xcframework if: build.pull_request.id != null command: .buildkite/publish-pr-xcframework.sh plugins: *plugins @@ -177,14 +179,14 @@ steps: - label: ':rocket: Publish Swift release ${NEW_VERSION:-(Error: No version found!)}' depends_on: - validate-release - - build-xcframework - - swift-test-swift-package + - build-resources-xcframework + - test-swift-simulator - lint-js - lint-swift - check-wp-packages - test-js - test-web-e2e - - test-ios-e2e + - test-ios-app-e2e if: build.env("NEW_VERSION") != null && build.branch == "trunk" && build.pull_request.id == null # Pass NEW_VERSION as an argument: build-level env vars set when # triggering aren't exposed to job runtime shells on `queue: mac`, but @@ -194,7 +196,7 @@ steps: plugins: *plugins - label: ':ios: Test iOS E2E' - key: test-ios-e2e + key: test-ios-app-e2e depends_on: build-react command: | buildkite-agent artifact download dist.tar.gz . @@ -213,6 +215,7 @@ steps: plugins: *plugins - label: ':android: Test Android E2E' + key: test-android-app-e2e depends_on: build-react command: | buildkite-agent artifact download dist.tar.gz . @@ -233,6 +236,7 @@ steps: - 'android/app/build/outputs/connected_android_test_additional_output/**/*' - label: ':android: Test Android Library Instrumented' + key: test-android-library-e2e depends_on: build-react command: | buildkite-agent artifact download dist.tar.gz . diff --git a/.buildkite/publish-pr-xcframework.sh b/.buildkite/publish-pr-xcframework.sh index a25b03543..ad82d1b09 100755 --- a/.buildkite/publish-pr-xcframework.sh +++ b/.buildkite/publish-pr-xcframework.sh @@ -18,8 +18,8 @@ echo '--- :robot_face: Use bot for Git operations' source use-bot-for-git echo '--- :arrow_down: Downloading XCFramework artifacts' -buildkite-agent artifact download '*.xcframework.zip' . --step "build-xcframework" -buildkite-agent artifact download '*.xcframework.zip.checksum.txt' . --step "build-xcframework" +buildkite-agent artifact download '*.xcframework.zip' . --step "build-resources-xcframework" +buildkite-agent artifact download '*.xcframework.zip.checksum.txt' . --step "build-resources-xcframework" echo '--- :rubygems: Setting up Gems' install_gems diff --git a/.buildkite/release.sh b/.buildkite/release.sh index 9e65687e2..5d7630f2a 100755 --- a/.buildkite/release.sh +++ b/.buildkite/release.sh @@ -13,8 +13,8 @@ echo '--- :robot_face: Use bot for Git operations' source use-bot-for-git echo '--- :arrow_down: Downloading XCFramework artifacts' -buildkite-agent artifact download '*.xcframework.zip' . --step "build-xcframework" -buildkite-agent artifact download '*.xcframework.zip.checksum.txt' . --step "build-xcframework" +buildkite-agent artifact download '*.xcframework.zip' . --step "build-resources-xcframework" +buildkite-agent artifact download '*.xcframework.zip.checksum.txt' . --step "build-resources-xcframework" echo '--- :rubygems: Setting up Gems' install_gems From 698108e0977366bdfd3d303f5bee0b908a0bee4d Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Mon, 21 Sep 2026 08:21:55 -0400 Subject: [PATCH 2/7] ci: label pipeline steps by platform with verb-first titles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Emoji mixed platforms, languages, and tools (`:swift:`, `:xcode:`, `:rocket:`, `:eslint:`, `:npm:`, `:react:`), so the same codebase area appeared under several icons and GitHub's alphabetical check list scattered related steps. Each step now carries one platform emoji — `:javascript:` standing in for web, since there is no clean web glyph — and a verb-first, title-case label. Labels become GitHub check names, so six of the nine contexts the trunk ruleset requires change here and need a matching ruleset update. Co-Authored-By: Claude Opus 5 (1M context) --- .buildkite/pipeline.yml | 43 ++++++++++++++++++++++++----------------- bin/release.sh | 2 +- docs/releases.md | 4 ++-- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index da6c325ec..5504ce0bc 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -8,8 +8,15 @@ env: # The download is flaky from CI, so skip it -- see the Test Web E2E job. ELECTRON_SKIP_BINARY_DOWNLOAD: '1' +# Each step carries one emoji naming the platform it builds, tests, or ships — +# :javascript: for the web editor (there is no clean web glyph), :ios:, or +# :android: — and a verb-first, title-case label that stands on its own. +# Where a step runs a make target, key it by that target's name. +# +# Labels become GitHub check names, and the trunk ruleset requires several by +# name, so renaming a label needs a matching ruleset update. steps: - - label: ':react: Build React App' + - label: ':javascript: Build Web Bundle' key: build-react command: | # Fail fast if any step (including the backgrounded @@ -45,7 +52,7 @@ steps: - $CI_TOOLKIT_PLUGIN - $NVM_PLUGIN - - label: ':white_check_mark: Validate Swift release ${NEW_VERSION:-(no version)}' + - label: ':ios: Validate Swift Release ${NEW_VERSION:-(no version)}' key: validate-release if: build.env("NEW_VERSION") != null && build.branch == "trunk" && build.pull_request.id == null command: | @@ -53,12 +60,12 @@ steps: bundle exec fastlane validate "version:$NEW_VERSION" plugins: *plugins - - label: ':eslint: Lint React App' + - label: ':javascript: Lint JavaScript' key: lint-js command: make lint-web plugins: *plugins - - label: ':npm: Check @wordpress package versions' + - label: ':javascript: Check @wordpress Package Versions' key: check-wp-packages command: make check-wp-packages plugins: *plugins @@ -68,7 +75,7 @@ steps: command: make test-web-unit plugins: *plugins - - label: ':performing_arts: Test Web E2E' + - label: ':javascript: Test Web E2E' key: test-web-e2e depends_on: build-react command: | @@ -100,7 +107,7 @@ steps: queue: android plugins: *plugins - - label: ':swift: SwiftLint' + - label: ':ios: Lint Swift' key: lint-swift command: swiftlint agents: @@ -117,7 +124,7 @@ steps: queue: android plugins: *plugins - - label: ':swift: iOS Simulator Tests' + - label: ':ios: Test Swift Simulator' key: test-swift-simulator depends_on: build-react command: | @@ -126,7 +133,7 @@ steps: make test-ios-library-simulator plugins: *plugins - - label: ':swift: Library Tests' + - label: ':ios: Test Swift Host' key: test-swift-host depends_on: build-react command: | @@ -135,7 +142,7 @@ steps: make test-ios-library-host plugins: *plugins - - label: ':xcode: Build XCFramework' + - label: ':ios: Build XCFramework' key: build-resources-xcframework depends_on: - build-react @@ -153,12 +160,12 @@ steps: - '*.xcframework.zip.checksum.txt' plugins: *plugins - - label: ':s3: Publish XCFramework to S3' + - label: ':ios: Publish XCFramework to S3' depends_on: build-resources-xcframework # This step only covers per-commit trunk uploads keyed by the commit - # SHA. Releases are handled by `:rocket: Publish Swift release` (gated + # SHA. Releases are handled by `:ios: Publish Swift Release` (gated # on `NEW_VERSION`), and tag pushes from that step trigger a separate - # tag build whose iOS upload would just duplicate the rocket step's — + # tag build whose iOS upload would just duplicate the release step's — # the `build.tag == null` clause skips it. Android publish on tag # builds is still load-bearing (produces the `vX.Y.Z` Maven artifact) # and intentionally not gated here. @@ -170,13 +177,13 @@ steps: bundle exec fastlane publish_to_s3 version:$BUILDKITE_COMMIT plugins: *plugins - - label: ':swift: :package: Publish PR XCFramework' + - label: ':ios: Publish PR XCFramework' depends_on: build-resources-xcframework if: build.pull_request.id != null command: .buildkite/publish-pr-xcframework.sh plugins: *plugins - - label: ':rocket: Publish Swift release ${NEW_VERSION:-(Error: No version found!)}' + - label: ':ios: Publish Swift Release ${NEW_VERSION:-(Error: No version found!)}' depends_on: - validate-release - build-resources-xcframework @@ -195,7 +202,7 @@ steps: command: .buildkite/release.sh "$NEW_VERSION" plugins: *plugins - - label: ':ios: Test iOS E2E' + - label: ':ios: Test iOS App E2E' key: test-ios-app-e2e depends_on: build-react command: | @@ -214,7 +221,7 @@ steps: - 'build/ios-e2e.xcresult.zip' plugins: *plugins - - label: ':android: Test Android E2E' + - label: ':android: Test Android App E2E' key: test-android-app-e2e depends_on: build-react command: | @@ -235,7 +242,7 @@ steps: - 'android/app/build/outputs/buildkite-logs/**/*' - 'android/app/build/outputs/connected_android_test_additional_output/**/*' - - label: ':android: Test Android Library Instrumented' + - label: ':android: Test Android Library E2E' key: test-android-library-e2e depends_on: build-react command: | @@ -255,7 +262,7 @@ steps: - 'android/Gutenberg/build/outputs/buildkite-logs/**/*' - 'android/Gutenberg/build/outputs/connected_android_test_additional_output/**/*' - - label: ':wastebasket: Clean up `pr-build/*` branches for closed PRs' + - label: ':ios: Clean Up `pr-build/*` Branches for Closed PRs' if: build.branch == "trunk" command: .buildkite/cleanup-pr-build-branches.sh plugins: *plugins diff --git a/bin/release.sh b/bin/release.sh index 905afdea4..91e5c36d7 100755 --- a/bin/release.sh +++ b/bin/release.sh @@ -283,7 +283,7 @@ print_publish_instructions() { echo "'trunk' to whatever HEAD is at trigger time, and a concurrent merge" echo "would tag the wrong commit." echo - echo "The :rocket: 'Publish Swift release' step will build + sign the" + echo "The :ios: 'Publish Swift Release' step will build + sign the" echo "XCFramework, upload it to S3, and publish the GitHub Release —" echo "which also creates the $tag tag." } diff --git a/docs/releases.md b/docs/releases.md index e260e5ae9..f9e21dc5c 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -5,7 +5,7 @@ Every push to `trunk` publishes both platforms automatically: - **Android**: the `:android: Publish Android Library` step pushes a Maven artifact keyed by the commit (consumable via Git revision pins). -- **iOS**: the `:s3: Publish XCFramework to S3` step uploads the signed XCFramework under `gutenbergkit//`, and `Publish PR XCFramework` does the same on PR builds under a `pr-build/` snapshot branch. +- **iOS**: the `:ios: Publish XCFramework to S3` step uploads the signed XCFramework under `gutenbergkit//`, and `Publish PR XCFramework` does the same on PR builds under a `pr-build/` snapshot branch. A **tagged release** is a separate, manually-triggered publish flow on top of that: it produces a stable `vX.Y.Z` tag whose `Package.swift` points at the prebuilt XCFramework on CDN, plus a GitHub Release with the XCFramework attached. SPM consumers pin the tag; everything else can pin a commit/branch. @@ -60,7 +60,7 @@ Step 1 prints the SHA of the version-bump commit it just pushed. Trigger a new B Pinning the commit matters — if you leave it blank, Buildkite resolves `trunk` to HEAD at trigger time, and a concurrent merge would tag the wrong commit. -The build runs a `:white_check_mark: Validate Swift release` step early on (gated on `NEW_VERSION`) that fast-fails if the tag name is malformed, if the tag or GitHub Release already exists, or if no previous release tag can be resolved to generate notes against. It logs the tag the notes will be based on, so a wrong base surfaces before anything is published. After that, the `:rocket: Publish Swift release` step: +The build runs a `:ios: Validate Swift Release` step early on (gated on `NEW_VERSION`) that fast-fails if the tag name is malformed, if the tag or GitHub Release already exists, or if no previous release tag can be resolved to generate notes against. It logs the tag the notes will be based on, so a wrong base surfaces before anything is published. After that, the `:ios: Publish Swift Release` step: 1. Rewrites `Package.swift` to consume the binary target via `.release(version:, checksum:)` 1. Uploads the XCFramework to `s3://a8c-apps-public-artifacts/gutenbergkit/vX.Y.Z/` From 9c59912c44340472c7658f09dd1197401ab64e26 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Tue, 22 Sep 2026 07:35:01 -0400 Subject: [PATCH 3/7] ci: key the web bundle step by make build The step runs `make build` after its own prerequisites, so `build-react` broke the key-by-target rule and no longer matched the step's label. The rule now also covers the SwiftLint step, which mirrors `make lint-ios` with the same pinned version and config. Co-Authored-By: Claude Opus 5 (1M context) --- .buildkite/pipeline.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 5504ce0bc..eba55c973 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -11,13 +11,13 @@ env: # Each step carries one emoji naming the platform it builds, tests, or ships — # :javascript: for the web editor (there is no clean web glyph), :ios:, or # :android: — and a verb-first, title-case label that stands on its own. -# Where a step runs a make target, key it by that target's name. +# Where a step runs or mirrors a make target, key it by that target's name. # # Labels become GitHub check names, and the trunk ruleset requires several by # name, so renaming a label needs a matching ruleset update. steps: - label: ':javascript: Build Web Bundle' - key: build-react + key: build command: | # Fail fast if any step (including the backgrounded # `fetch-translations`, surfaced via `wait`) returns non-zero, @@ -77,7 +77,7 @@ steps: - label: ':javascript: Test Web E2E' key: test-web-e2e - depends_on: build-react + depends_on: build command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -88,7 +88,7 @@ steps: plugins: *plugins - label: ':android: Publish Android Library' - depends_on: build-react + depends_on: build command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -115,7 +115,7 @@ steps: - label: ':android: Test Android Library' key: test-android-library - depends_on: build-react + depends_on: build command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -126,7 +126,7 @@ steps: - label: ':ios: Test Swift Simulator' key: test-swift-simulator - depends_on: build-react + depends_on: build command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -135,7 +135,7 @@ steps: - label: ':ios: Test Swift Host' key: test-swift-host - depends_on: build-react + depends_on: build command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -145,7 +145,7 @@ steps: - label: ':ios: Build XCFramework' key: build-resources-xcframework depends_on: - - build-react + - build - test-swift-host command: | buildkite-agent artifact download dist.tar.gz . @@ -204,7 +204,7 @@ steps: - label: ':ios: Test iOS App E2E' key: test-ios-app-e2e - depends_on: build-react + depends_on: build command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -223,7 +223,7 @@ steps: - label: ':android: Test Android App E2E' key: test-android-app-e2e - depends_on: build-react + depends_on: build command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -244,7 +244,7 @@ steps: - label: ':android: Test Android Library E2E' key: test-android-library-e2e - depends_on: build-react + depends_on: build command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz From 0432c933ef584f8f3ceef1c2664c439a5bebe703 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Tue, 22 Sep 2026 07:36:16 -0400 Subject: [PATCH 4/7] ci: key pipeline steps by the platform-named make targets Keeps each key equal to the make target its step runs after the Makefile renames, including the XCFramework key the release scripts download artifacts by. Co-Authored-By: Claude Opus 5 (1M context) --- .buildkite/pipeline.yml | 30 ++++++++++++++-------------- .buildkite/publish-pr-xcframework.sh | 4 ++-- .buildkite/release.sh | 4 ++-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index eba55c973..052f8cc04 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -61,7 +61,7 @@ steps: plugins: *plugins - label: ':javascript: Lint JavaScript' - key: lint-js + key: lint-web command: make lint-web plugins: *plugins @@ -71,7 +71,7 @@ steps: plugins: *plugins - label: ':javascript: Test JavaScript' - key: test-js + key: test-web-unit command: make test-web-unit plugins: *plugins @@ -108,13 +108,13 @@ steps: plugins: *plugins - label: ':ios: Lint Swift' - key: lint-swift + key: lint-ios command: swiftlint agents: queue: linter - label: ':android: Test Android Library' - key: test-android-library + key: test-android-library-unit depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -125,7 +125,7 @@ steps: plugins: *plugins - label: ':ios: Test Swift Simulator' - key: test-swift-simulator + key: test-ios-library-simulator depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -134,7 +134,7 @@ steps: plugins: *plugins - label: ':ios: Test Swift Host' - key: test-swift-host + key: test-ios-library-host depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -143,10 +143,10 @@ steps: plugins: *plugins - label: ':ios: Build XCFramework' - key: build-resources-xcframework + key: build-ios-resources-xcframework depends_on: - build - - test-swift-host + - test-ios-library-host command: | buildkite-agent artifact download dist.tar.gz . tar -xzf dist.tar.gz @@ -161,7 +161,7 @@ steps: plugins: *plugins - label: ':ios: Publish XCFramework to S3' - depends_on: build-resources-xcframework + depends_on: build-ios-resources-xcframework # This step only covers per-commit trunk uploads keyed by the commit # SHA. Releases are handled by `:ios: Publish Swift Release` (gated # on `NEW_VERSION`), and tag pushes from that step trigger a separate @@ -178,7 +178,7 @@ steps: plugins: *plugins - label: ':ios: Publish PR XCFramework' - depends_on: build-resources-xcframework + depends_on: build-ios-resources-xcframework if: build.pull_request.id != null command: .buildkite/publish-pr-xcframework.sh plugins: *plugins @@ -186,12 +186,12 @@ steps: - label: ':ios: Publish Swift Release ${NEW_VERSION:-(Error: No version found!)}' depends_on: - validate-release - - build-resources-xcframework - - test-swift-simulator - - lint-js - - lint-swift + - build-ios-resources-xcframework + - test-ios-library-simulator + - lint-web + - lint-ios - check-wp-packages - - test-js + - test-web-unit - test-web-e2e - test-ios-app-e2e if: build.env("NEW_VERSION") != null && build.branch == "trunk" && build.pull_request.id == null diff --git a/.buildkite/publish-pr-xcframework.sh b/.buildkite/publish-pr-xcframework.sh index ad82d1b09..ba5fb8778 100755 --- a/.buildkite/publish-pr-xcframework.sh +++ b/.buildkite/publish-pr-xcframework.sh @@ -18,8 +18,8 @@ echo '--- :robot_face: Use bot for Git operations' source use-bot-for-git echo '--- :arrow_down: Downloading XCFramework artifacts' -buildkite-agent artifact download '*.xcframework.zip' . --step "build-resources-xcframework" -buildkite-agent artifact download '*.xcframework.zip.checksum.txt' . --step "build-resources-xcframework" +buildkite-agent artifact download '*.xcframework.zip' . --step "build-ios-resources-xcframework" +buildkite-agent artifact download '*.xcframework.zip.checksum.txt' . --step "build-ios-resources-xcframework" echo '--- :rubygems: Setting up Gems' install_gems diff --git a/.buildkite/release.sh b/.buildkite/release.sh index 5d7630f2a..6ea7113e4 100755 --- a/.buildkite/release.sh +++ b/.buildkite/release.sh @@ -13,8 +13,8 @@ echo '--- :robot_face: Use bot for Git operations' source use-bot-for-git echo '--- :arrow_down: Downloading XCFramework artifacts' -buildkite-agent artifact download '*.xcframework.zip' . --step "build-resources-xcframework" -buildkite-agent artifact download '*.xcframework.zip.checksum.txt' . --step "build-resources-xcframework" +buildkite-agent artifact download '*.xcframework.zip' . --step "build-ios-resources-xcframework" +buildkite-agent artifact download '*.xcframework.zip.checksum.txt' . --step "build-ios-resources-xcframework" echo '--- :rubygems: Setting up Gems' install_gems From 267a3ccacefa018e75790d11d809259a45c10292 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Tue, 22 Sep 2026 07:36:30 -0400 Subject: [PATCH 5/7] ci: label steps by the platform-named make targets Labels now match the renamed targets they run. This renames two more of the checks the trunk ruleset requires, Test JavaScript and Test Android Library, so eight of its nine required contexts now change. Co-Authored-By: Claude Opus 5 (1M context) --- .buildkite/pipeline.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 052f8cc04..33cb7704e 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -60,7 +60,7 @@ steps: bundle exec fastlane validate "version:$NEW_VERSION" plugins: *plugins - - label: ':javascript: Lint JavaScript' + - label: ':javascript: Lint Web' key: lint-web command: make lint-web plugins: *plugins @@ -70,7 +70,7 @@ steps: command: make check-wp-packages plugins: *plugins - - label: ':javascript: Test JavaScript' + - label: ':javascript: Test Web Unit' key: test-web-unit command: make test-web-unit plugins: *plugins @@ -107,13 +107,13 @@ steps: queue: android plugins: *plugins - - label: ':ios: Lint Swift' + - label: ':ios: Lint iOS' key: lint-ios command: swiftlint agents: queue: linter - - label: ':android: Test Android Library' + - label: ':android: Test Android Library Unit' key: test-android-library-unit depends_on: build command: | @@ -124,7 +124,7 @@ steps: queue: android plugins: *plugins - - label: ':ios: Test Swift Simulator' + - label: ':ios: Test iOS Library Simulator' key: test-ios-library-simulator depends_on: build command: | @@ -133,7 +133,7 @@ steps: make test-ios-library-simulator plugins: *plugins - - label: ':ios: Test Swift Host' + - label: ':ios: Test iOS Library Host' key: test-ios-library-host depends_on: build command: | From 56c8512312d6b6f776c802bde13ed238057e7ee0 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Tue, 22 Sep 2026 07:36:52 -0400 Subject: [PATCH 6/7] docs: name the renamed Android library E2E step in a test comment Co-Authored-By: Claude Opus 5 (1M context) --- .../gutenberg/preview/HtmlToBitmapRendererInstrumentedTest.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/Gutenberg/src/androidTest/java/org/wordpress/gutenberg/preview/HtmlToBitmapRendererInstrumentedTest.kt b/android/Gutenberg/src/androidTest/java/org/wordpress/gutenberg/preview/HtmlToBitmapRendererInstrumentedTest.kt index e310aeabd..53c00ef34 100644 --- a/android/Gutenberg/src/androidTest/java/org/wordpress/gutenberg/preview/HtmlToBitmapRendererInstrumentedTest.kt +++ b/android/Gutenberg/src/androidTest/java/org/wordpress/gutenberg/preview/HtmlToBitmapRendererInstrumentedTest.kt @@ -15,7 +15,7 @@ import java.io.File /** * Instrumented tests that exercise [HtmlToBitmapRenderer] against a real Android * [android.webkit.WebView]. Runs in CI via the `:android: Test Android Library - * Instrumented` step (`make test-android-library-e2e`); locally: + * E2E` step (`make test-android-library-e2e`); locally: * * ./gradlew :Gutenberg:connectedAndroidTest * From 424a6a58415239c4a9e8162db9b5df1d86b17b6c Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Fri, 9 Oct 2026 16:27:53 -0400 Subject: [PATCH 7/7] ci: report step checks under explicit commit status contexts Decouples GitHub check names from step labels, so emoji or wording tweaks no longer rename required checks. Pairs with Automattic/buildkite-ci#990, which disables the label-derived statuses. Co-Authored-By: Claude Opus 5.5 --- .buildkite/pipeline.yml | 66 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 33cb7704e..1639993b0 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -13,11 +13,16 @@ env: # :android: — and a verb-first, title-case label that stands on its own. # Where a step runs or mirrors a make target, key it by that target's name. # -# Labels become GitHub check names, and the trunk ruleset requires several by -# name, so renaming a label needs a matching ruleset update. +# +# Each step reports its GitHub check under an explicit `notify` context — the +# label minus its emoji — so label tweaks don't rename checks. The trunk ruleset +# requires several contexts by name, so changing one needs a ruleset update. steps: - label: ':javascript: Build Web Bundle' key: build + notify: + - github_commit_status: + context: 'Build Web Bundle' command: | # Fail fast if any step (including the backgrounded # `fetch-translations`, surfaced via `wait`) returns non-zero, @@ -54,6 +59,9 @@ steps: - label: ':ios: Validate Swift Release ${NEW_VERSION:-(no version)}' key: validate-release + notify: + - github_commit_status: + context: 'Validate Swift Release' if: build.env("NEW_VERSION") != null && build.branch == "trunk" && build.pull_request.id == null command: | install_gems @@ -62,21 +70,33 @@ steps: - label: ':javascript: Lint Web' key: lint-web + notify: + - github_commit_status: + context: 'Lint Web' command: make lint-web plugins: *plugins - label: ':javascript: Check @wordpress Package Versions' key: check-wp-packages + notify: + - github_commit_status: + context: 'Check @wordpress Package Versions' command: make check-wp-packages plugins: *plugins - label: ':javascript: Test Web Unit' key: test-web-unit + notify: + - github_commit_status: + context: 'Test Web Unit' command: make test-web-unit plugins: *plugins - label: ':javascript: Test Web E2E' key: test-web-e2e + notify: + - github_commit_status: + context: 'Test Web E2E' depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -88,6 +108,9 @@ steps: plugins: *plugins - label: ':android: Publish Android Library' + notify: + - github_commit_status: + context: 'Publish Android Library' depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -102,6 +125,9 @@ steps: - label: ':android: Lint Android' key: lint-android + notify: + - github_commit_status: + context: 'Lint Android' command: make lint-android agents: queue: android @@ -109,12 +135,18 @@ steps: - label: ':ios: Lint iOS' key: lint-ios + notify: + - github_commit_status: + context: 'Lint iOS' command: swiftlint agents: queue: linter - label: ':android: Test Android Library Unit' key: test-android-library-unit + notify: + - github_commit_status: + context: 'Test Android Library Unit' depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -126,6 +158,9 @@ steps: - label: ':ios: Test iOS Library Simulator' key: test-ios-library-simulator + notify: + - github_commit_status: + context: 'Test iOS Library Simulator' depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -135,6 +170,9 @@ steps: - label: ':ios: Test iOS Library Host' key: test-ios-library-host + notify: + - github_commit_status: + context: 'Test iOS Library Host' depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -144,6 +182,9 @@ steps: - label: ':ios: Build XCFramework' key: build-ios-resources-xcframework + notify: + - github_commit_status: + context: 'Build XCFramework' depends_on: - build - test-ios-library-host @@ -161,6 +202,9 @@ steps: plugins: *plugins - label: ':ios: Publish XCFramework to S3' + notify: + - github_commit_status: + context: 'Publish XCFramework to S3' depends_on: build-ios-resources-xcframework # This step only covers per-commit trunk uploads keyed by the commit # SHA. Releases are handled by `:ios: Publish Swift Release` (gated @@ -178,12 +222,18 @@ steps: plugins: *plugins - label: ':ios: Publish PR XCFramework' + notify: + - github_commit_status: + context: 'Publish PR XCFramework' depends_on: build-ios-resources-xcframework if: build.pull_request.id != null command: .buildkite/publish-pr-xcframework.sh plugins: *plugins - label: ':ios: Publish Swift Release ${NEW_VERSION:-(Error: No version found!)}' + notify: + - github_commit_status: + context: 'Publish Swift Release' depends_on: - validate-release - build-ios-resources-xcframework @@ -204,6 +254,9 @@ steps: - label: ':ios: Test iOS App E2E' key: test-ios-app-e2e + notify: + - github_commit_status: + context: 'Test iOS App E2E' depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -223,6 +276,9 @@ steps: - label: ':android: Test Android App E2E' key: test-android-app-e2e + notify: + - github_commit_status: + context: 'Test Android App E2E' depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -244,6 +300,9 @@ steps: - label: ':android: Test Android Library E2E' key: test-android-library-e2e + notify: + - github_commit_status: + context: 'Test Android Library E2E' depends_on: build command: | buildkite-agent artifact download dist.tar.gz . @@ -263,6 +322,9 @@ steps: - 'android/Gutenberg/build/outputs/connected_android_test_additional_output/**/*' - label: ':ios: Clean Up `pr-build/*` Branches for Closed PRs' + notify: + - github_commit_status: + context: 'Clean Up pr-build/* Branches for Closed PRs' if: build.branch == "trunk" command: .buildkite/cleanup-pr-build-branches.sh plugins: *plugins