Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,35 @@ steps:
make test-swift-package
plugins: *plugins

- label: ':xcode: Build XCFramework'
key: build-xcframework
depends_on: build-react
command: |
buildkite-agent artifact download dist.tar.gz .
tar -xzf dist.tar.gz
install_gems
bundle exec fastlane set_up_signing_release
make build-resources-xcframework
bundle exec fastlane xcframework_sign
./package_xcframework.sh
Comment on lines +74 to +80
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I admit this is quite confusing with a mash of Fastlane, make, and scripts. I'll tidy up in a follow up, my preference being to use make as the single entry point.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment on lines +73 to +80
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step downloads and unpacks dist.tar.gz (to ./dist), but it never copies those assets into ios/Sources/GutenbergKitResources/Gutenberg/ before running make build-resources-xcframework. Since make build will skip the copy step when dist/ already exists, the XCFramework build will use whatever resources are already in the repo checkout (potentially stale) rather than the freshly built dist from the build-react step. Add an explicit make copy-dist-ios (or adjust the Makefile logic) before building the XCFramework.

Copilot uses AI. Check for mistakes.
artifact_paths:
- '*.xcframework.zip'
- '*.xcframework.zip.checksum.txt'
plugins: *plugins

- label: ':s3: Publish XCFramework to S3'
# Eventually, we might want to gate this based on an env var
# to be set by the process that starts the pipeline
#
# if: build.env("NEW_VERSION") != null
depends_on: build-xcframework
command: |
buildkite-agent artifact download '*.xcframework.zip' .
buildkite-agent artifact download '*.xcframework.zip.checksum.txt' .
install_gems
bundle exec fastlane publish_to_s3 version:${NEW_VERSION:-$BUILDKITE_COMMIT}
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Android publishes every version but does not have the issue of having to update Package.swift to match the checksum generated by the build.

Given storage is cheap, it might be okay for us to publish the XCFramework on every build, too, just to continue exercising the infra and avoid surprises at release time.

Or, we could be frugal and only publish when we need. I'm leaning toward publishing one every build, though. Faster feedback. And we could add additional automation to easily push a commit with updated Package.swift so that any XCFramework in S3 can be tested in WordPress iOS in a few clicks.

plugins: *plugins
Comment on lines +86 to +97
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description/test plan says the S3 publish step should be skipped unless NEW_VERSION is set, but this step currently runs unconditionally and falls back to BUILDKITE_COMMIT (which will publish artifacts for every push and can also fail on rebuilds of the same commit due to if_exists: :fail). Add a Buildkite if: condition (or equivalent gating) and avoid publishing when NEW_VERSION is not provided.

Copilot uses AI. Check for mistakes.

- label: ':ios: Test iOS E2E'
depends_on: build-react
command: |
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ playground.xcworkspace
# Ruby tooling
vendor/bundle

# Fastlane
fastlane/report.xml

# Logs
logs
*.log
Expand Down
6 changes: 6 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gem 'fastlane', '~> 2.230'
gem 'fastlane-plugin-wpmreleasetoolkit', '~> 13.8'
Loading
Loading