Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
7332964
Add GutenbergKitResources target
mokagio Feb 9, 2026
9e26d95
Migrate `package` to `internal` access
mokagio Feb 9, 2026
cbb366d
Use GutenbergKitResources for asset access
mokagio Feb 9, 2026
b928a23
Remove Gutenberg resources from GutenbergKit target
mokagio Feb 9, 2026
6f5cd7b
Add build_xcframework.sh and Makefile targets
mokagio Feb 9, 2026
f527e1d
Update CI pipeline for local resource builds
mokagio Feb 9, 2026
b010604
Add Fastlane release automation
mokagio Feb 9, 2026
bec2550
Remove tracked built JS assets from Git
mokagio Feb 9, 2026
c847845
Use stronger shebang
mokagio Feb 10, 2026
a48f2fe
Fix CI: expose resources product, skip signing
mokagio Feb 10, 2026
f9a7ed7
Use -destination instead of -sdk in xcodebuild
mokagio Feb 10, 2026
ea5780e
Use GutenbergKitTests scheme for test action
mokagio Feb 10, 2026
be98603
Fix XCFramework build for Xcode 26
mokagio Feb 11, 2026
46d666f
Simplify CI pipeline config
mokagio Feb 11, 2026
6052b98
Read GITHUB_TOKEN only from env
mokagio Feb 11, 2026
25ad376
Avoid shell interpolation in Fastfile sh call
mokagio Feb 11, 2026
e223fa9
Remove section header comments from Fastfile
mokagio Feb 11, 2026
5d4b5ae
Use XCODEBUILD_CMD macro in test-swift-package
mokagio Feb 11, 2026
9b3a47c
Use GutenbergKitTests scheme for test target
mokagio Feb 11, 2026
fa64d04
Fix test scheme: use GutenbergKit-Package
mokagio Feb 11, 2026
af9ecd9
Use OS=latest for simulator destination
mokagio Feb 11, 2026
55cffbb
Preserve `.gitkeep` during JS build copy
mokagio Feb 12, 2026
12f8625
Increase `URLCache` clear delay to fix flaky test
mokagio Feb 12, 2026
7ec3efa
Remove useless comment
mokagio Feb 12, 2026
b6351de
Use XCODEBUILD_CMD macro in test-swift-package
mokagio Feb 12, 2026
ff312e5
Align Fastlane on v-prefixed tags
mokagio Feb 13, 2026
be6c3cf
Add tag-triggered S3 publish step to CI
mokagio Feb 13, 2026
0735fb6
Escape `$` in pipeline interpolation
mokagio Feb 19, 2026
d8b578a
Use `:xcode:` emoji for XCFramework
mokagio Mar 3, 2026
922cbbc
Add `install_gems` to S3 publish step
mokagio Mar 3, 2026
0519f23
Track Gemfile.lock (?!)
mokagio Mar 3, 2026
629afc6
Install gems at the start
mokagio Mar 3, 2026
c25d6b3
Add Bundler settings and rebundle
mokagio Mar 3, 2026
afb078a
Use full commit sha in XCFramework ZIP
mokagio Mar 3, 2026
769104f
Rename resources dir to fix codesign
mokagio Mar 3, 2026
9d10b90
Track `GutenbergKit/Gutenberg/assets` deletion from automation
mokagio Mar 4, 2026
9faf342
Fix S3 key to match Package.swift URL
mokagio Mar 4, 2026
f433dee
Guard version lanes against empty strings
mokagio Mar 4, 2026
a34c0f6
Extract `required_version!` helper
mokagio Mar 4, 2026
a750758
Move S3 publish to a dedicated script
mokagio Mar 4, 2026
91e3d1d
Update xcframework coordinates
mokagio Mar 4, 2026
3f0ed64
Add CFBundleExecutable to framework plist
mokagio Mar 4, 2026
6e11b25
Update xcframework coord to version with Info.plist fix
mokagio Mar 4, 2026
3fc854d
Link XCFramework .o into a dylib
mokagio Mar 5, 2026
6ef0dcc
Update xcframework revision in `Package.swift`
mokagio Mar 5, 2026
0a56c19
Copy dist into GutenbergKitResources for E2E
mokagio Mar 5, 2026
4ab8263
Stop copying dist into GutenbergKit/Gutenberg
mokagio Mar 5, 2026
776f79e
Extract copy-dist-ios and copy-dist-android
mokagio Mar 5, 2026
db62103
Add DependencyMode enum to Package.swift
mokagio Mar 10, 2026
a5b855e
Default resourcesMode to .local, drop env var
mokagio Mar 10, 2026
d281fcc
Add CI-driven release pipeline step
mokagio Mar 10, 2026
33b4d8d
TEMP: Point release-on-ci at feature branch
mokagio Mar 10, 2026
defdaa8
Use BUILDKITE_API_ACCESS_TOKEN
mokagio Mar 10, 2026
15075b5
Remove xcframework signing step
mokagio Mar 10, 2026
690a76f
Source use-bot-for-git in release script
mokagio Mar 11, 2026
8070810
Remove obsolete GutenbergKit gitignore entries
mokagio Mar 11, 2026
0184d1b
Delete additional GutenbergKit/Gutenberg/assets
mokagio Mar 11, 2026
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
17 changes: 16 additions & 1 deletion .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,13 @@ steps:
plugins: *plugins

- label: ':swift: Test Swift Package'
command: swift test
command: make test-swift-package REFRESH_L10N=1 REFRESH_JS_BUILD=1
Copy link
Member

Choose a reason for hiding this comment

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

After #320, we now cache the JavaScript build as an artifact to improve speed and mitigate 429 errors for translation downloads. Can we reuse that artifact for this job?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

plugins: *plugins

- label: ':xcode: Build XCFramework'
command: make build-resources-xcframework
artifact_paths:
- '*.xcframework.zip*'
plugins: *plugins

- label: ':ios: Test iOS E2E'
Expand All @@ -64,3 +70,12 @@ steps:
tar -xzf dist.tar.gz
make test-ios-e2e
plugins: *plugins

- label: ':rocket: Release $NEW_VERSION'
if: build.env("NEW_VERSION") != null
depends_on: build-react
command: |
buildkite-agent artifact download dist.tar.gz .
tar -xzf dist.tar.gz
.buildkite/release.sh $NEW_VERSION
plugins: *plugins
22 changes: 22 additions & 0 deletions .buildkite/release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash

set -euo pipefail

version="$1"

if [[ -z "$version" ]]; then
echo "Error: version argument is required"
exit 1
fi

echo "--- :robot_face: Use bot for Git operations"
source use-bot-for-git

echo "--- :rubygems: Installing gems"
install_gems

echo "--- :xcode: Building XCFramework"
make build-resources-xcframework REFRESH_L10N=1 REFRESH_JS_BUILD=1
Copy link
Member

Choose a reason for hiding this comment

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

Similar to my comment on the Buildkite configuration, should/can we reuse the JavaScript build artifact?

Copy link
Member

Choose a reason for hiding this comment

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

Struggling to understand how these XCFramework releases coincide/integrate with GutenbergKit releases.

The existing release script for the latter bumps the version for inclusion in the JavaScript, so that accurate version numbers are reported in exceptions. Should the XCFramework and GutenbergKit versions align? Maybe that is only required for tagged GutenbergKit releases, and XCFramework releases for Git commits can simply use the last tagged version string?

I had Claude capture the issue and potential solution in its own words below as well. I'm remain uncertain as to the current state, plan, or appropriate solution.

WDYT?

Additionally, the JS assets baked into the XCFramework will carry whatever version is in package.json at the time of the build — currently 0.14.0-alpha.0 on trunk. This version propagates to crash report tags (gutenberg_kit_version in exception-parser.js) and the generated GutenbergKitVersion.swift/.kt files (used in User-Agent strings).

Since package.json is never bumped to $version before the build runs, the XCFramework artifact will report a stale version at runtime even though the git tag and S3 path use the correct release version.

I think this needs an npm --no-git-tag-version version "$version" before the make call, so the version flows through the same package.jsongenerate-version.js → Vite build pipeline that the local release script (bin/release.sh) already uses.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for this @dcalhoun . To be honest, I'm still unsure about how to proceed, too. So far, I've just tried to mimic the wordpress-rs behavior to have CI track the checksum and revision in the Package.swift upon "releasing".

You bring up a good point regarding the version bump. It's frustrating that there's no way to do a version bump and Package.swift update atomically.

I'll have to think about this...


echo "--- :rocket: Publishing release $version"
bundle exec fastlane release "version:$version"
4 changes: 4 additions & 0 deletions .bundle/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
BUNDLE_PATH: "vendor/bundle"
BUNDLE_SPECIFIC_PLATFORM: "false"
BUNDLE_FORCE_RUBY_PLATFORM: "true"
15 changes: 10 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,16 @@ xcuserdata
timeline.xctimeline
playground.xcworkspace


## Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/

.build/
.swiftpm

# Ruby tooling
vendor/bundle

# Logs
logs
*.log
Expand Down Expand Up @@ -189,9 +190,13 @@ local.properties
/android/Gutenberg/src/main/assets/assets
/android/Gutenberg/src/main/assets/index.html

# Disabled removing these files until this is published like Android in CI.
# /ios/Sources/GutenbergKit/Gutenberg/assets
# /ios/Sources/GutenbergKit/Gutenberg/index.html
/ios/Sources/GutenbergKitResources/Gutenberg/assets
/ios/Sources/GutenbergKitResources/Gutenberg/index.html

# XCFramework build output
*.xcframework
*.xcframework.zip
*.xcframework.zip.checksum.txt

# Translation files
src/translations/*
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