Distribute Linux dev builds to AppsCDN#3363
Merged
Merged
Conversation
a08e2ef to
66cd908
Compare
2 tasks
ivan-ottinger
added a commit
that referenced
this pull request
May 13, 2026
## Related issues Reverts #3363. Restoring this once the upstream fix lands in the [`wordpress-mobile/release-toolkit`](https://github.com/wordpress-mobile/release-toolkit) plugin. ## How AI was used in this PR AI-assisted: diagnosed the post-merge failure from the Buildkite log, identified the gap in the fastlane plugin's platform allowlist, and drafted this revert. Author reviewed. ## Why we're reverting After #3363 merged, the next trunk build's `Distribute Dev Builds` step ([Buildkite #16073](https://buildkite.com/automattic/studio/builds/16073)) failed with: ``` Error setting value 'Linux - x64' for option 'platform' You passed invalid parameters to 'upload_build_to_apps_cdn'. Platform must be one of: Android, iOS, Mac - Silicon, Mac - Intel, Mac - Any, Windows - x86, Windows - x64, Windows - ARM64, Microsoft Store - x86, Microsoft Store - x64, Microsoft Store - ARM64 ``` The `upload_build_to_apps_cdn` fastlane action (from the [`wordpress-mobile/release-toolkit`](https://github.com/wordpress-mobile/release-toolkit) gem, pinned at `~> 14.2`) has a **client-side** allowlist baked into its `VALID_PLATFORMS` constant (`lib/fastlane/plugin/wpmreleasetoolkit/actions/common/upload_build_to_apps_cdn.rb:31-43`). That list doesn't include `'Linux - x64'` or `'Linux - ARM64'`, so the action rejects our call before it ever reaches WPCOM. The WPCOM-side allowlist updates (the enum + extension MIME types) are landed and correct — they handle the *server-side* validation. But the *client-side* validation in the fastlane plugin is a separate codebase that also needs to be updated. We missed that gap before merging. Impact while #3363 was on trunk: - Mac and Windows dev builds **did** upload to AppsCDN (they iterate first in the loop). - Linux upload raised, terminating the loop before the `buildkite_annotate` summary fired. - The `Distribute Dev Builds` step shows red despite Mac/Windows being in CDN — confusing for anyone watching trunk. - Every subsequent trunk merge would hit the same failure, blocking the visible distribution annotation indefinitely. Reverting restores the clean Mac/Windows distribution flow until the plugin gap is fixed upstream. ## Proposed Changes Reverts the two-file change from #3363: - `.buildkite/pipeline.yml`: drops `dev-linux` from `Distribute Dev Builds`'s `depends_on` and removes the `*.deb` artifact download. - `fastlane/Fastfile`: removes the `linux_deb_path` helper, the `release_tag.nil?` block adding Linux entries to `update_builds`, and the related comment. ## Next steps after this lands 1. Open a PR against [`wordpress-mobile/release-toolkit`](https://github.com/wordpress-mobile/release-toolkit) adding `'Linux - x64'` and `'Linux - ARM64'` to `VALID_PLATFORMS` in `upload_build_to_apps_cdn.rb`. Precedent: their PR #672 added `'Microsoft Store - x64'` and `'Windows - x64'` to the same array. 2. Wait for the plugin's next gem release. 3. Bump the `Gemfile` to that version. 4. Re-apply #3363's changes (cherry-pick or fresh PR). 5. Re-verify on the next trunk distribute. ## Testing Instructions 1. Open the next trunk build after this merges. 2. Confirm `Distribute Dev Builds` step succeeds and the `buildkite_annotate` summary lists Mac and Windows (and only those) in the "🔗 Build available for ..." message. ## Pre-merge Checklist - [ ] Have you checked for TypeScript, React or other console errors? - [x] Trunk's `Distribute Dev Builds` step succeeds again after this lands.
This was referenced May 13, 2026
Merged
ivan-ottinger
added a commit
that referenced
this pull request
May 15, 2026
## Related issues Re-applies #3363 after it was reverted in #3462. Blocked on the upstream fastlane-plugin gap landing — see [RSM-3058](https://linear.app/a8c/issue/RSM-3058/add-linux-to-upload-build-to-apps-cdn-platform-allowlist-in-release) and [wordpress-mobile/release-toolkit#720](wordpress-mobile/release-toolkit#720). ## How AI was used in this PR AI-assisted: re-applied the original change as a revert-of-revert commit, drafted this PR body explaining the dependency chain. Author reviewed. ## Why this PR exists The original #3363 wired Linux DEBs into the existing dev-distribution flow (fastlane + Buildkite). On merge it caused trunk's `Distribute Dev Builds` step to fail because the `upload_build_to_apps_cdn` fastlane action has a **client-side platform allowlist** that doesn't include Linux. We reverted in #3462 to restore trunk health. The upstream fix is in flight at [wordpress-mobile/release-toolkit#720](wordpress-mobile/release-toolkit#720), which adds `'Linux - x64'` and `'Linux - ARM64'` to the action's `VALID_PLATFORMS` constant. Once that PR merges and a new gem version is released, we can re-apply the original Studio-side change and ship Linux dev distribution. ## What this PR contains Pure re-apply of #3363 (revert-of-revert commit). Two files: - `.buildkite/pipeline.yml`: adds `- step: dev-linux` to `Distribute Dev Builds`'s `depends_on` and `buildkite-agent artifact download "*.deb" .` to its command block. - `fastlane/Fastfile`: adds the `linux_deb_path` helper and the `release_tag.nil?` block with the two Linux entries (`linux_x64_deb`, `linux_arm64_deb`). No changes to `Gemfile` / `Gemfile.lock` here — that bump comes as a separate, smaller PR landed **before** this one (see merge order below). ## Merge order (important) 1. [wordpress-mobile/release-toolkit#720](wordpress-mobile/release-toolkit#720) merges → release-toolkit team cuts a new gem release. 2. **Separate small PR** bumps Studio's `Gemfile.lock` to the new gem version (via `bundle update fastlane-plugin-wpmreleasetoolkit`). The `Gemfile` pessimistic constraint (`~> 14.2`) already accepts the new minor version, so only the lock file changes. 3. This PR is marked ready for review, CI runs against the bumped gem, reviewed, merged. 4. Next trunk build's `Distribute Dev Builds` should now succeed for all three platforms. Until step 2 lands, this PR's CI will keep hitting the same plugin-validation error as #3363 did. It stays draft until then. ## Out of scope - **Release pipeline Linux integration ([RSM-2587](https://linear.app/a8c/issue/RSM-2587/wire-linux-into-the-release-pipeline)).** A separate PR will wire Linux into `.buildkite/release-build-and-distribute.yml` and lift the `release_tag.nil?` gate from `Fastfile`. Conceptually expands the same Linux distribution work to release-time uploads, but it's a different pipeline file and a meaningfully different blast radius, so it deserves its own PR. ## Testing Instructions Once the gem bump PR lands and this is marked ready: 1. Push a commit (or let CI re-run on the existing commit) and confirm `Lint`, `Unit Tests`, `E2E Tests`, `Performance Metrics` all stay green. 2. After merge, watch the first trunk build's `Distribute Dev Builds` step. Should succeed and the log should contain CDN URLs for both Linux entries (`Linux - x64`, `Linux - ARM64`) alongside the existing Mac and Windows uploads. 3. Optionally `curl -IL` one of the returned Linux CDN URLs to confirm it serves the `.deb`. ## Pre-merge Checklist - [ ] Have you checked for TypeScript, React or other console errors? - [ ] Gemfile.lock bump PR is merged. - [ ] Trunk's `Distribute Dev Builds` step succeeds end-to-end after this lands and reports CDN URLs for both Linux entries. Co-authored-by: Rahul Gavande <rahul.gavande@automattic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issues
Part of RSM-1314 — Linux release prep.
Coordinated with WPCOM PR #214878 (Linux platform allowlist +
studio-app/updatesendpoint Linux response). Both should land together.How AI was used in this PR
AI-assisted: identified the required changes (artifact download in the Distribute step + new entries in
distribute_builds), drafted the implementation, and drafted this PR body. Author reviewed.Proposed Changes
Wires Linux dev builds into the existing
Distribute Dev Buildsflow..buildkite/pipeline.yml:Distribute Dev Buildsnow depends ondev-linuxand downloads*.debartifacts before invoking fastlane.fastlane/Fastfile: addslinux_x64_debandlinux_arm64_debentries toupdate_buildsindistribute_builds. A new helper,linux_deb_path(arch), resolves the version-embedded.debfilename (e.g.studio_1.8.2~dev16_amd64.deb) via glob, with a clear error if zero or multiple matches are found.Linux uses
install_type: 'Update'to match the URL convention the WPCOM updates endpoint emits for the polling path. On Linux the.debis the only artifact — it serves as both the update payload and the full installer — so a single entry inupdate_buildsis sufficient (uploaded for dev builds via the existingrelease_tag.nil?branch, and again for release builds via the combined hash).Testing Instructions
This PR cannot be exercised end-to-end until WPCOM #214878 merges. Until then, fastlane uploads with
platform: 'Linux - x64'/'Linux - ARM64'will be 422-rejected by AppsCDN.After both PRs merge:
Distribute Dev Builds, depends ondev-linux, downloads the.debartifacts, and uploads them via fastlane.Linux - x64,Linux - ARM64)..debof the expected architecture (dpkg-deb -Ion the downloaded file).Pre-merge Checklist
Distribute Dev Buildsstep completes successfully and reports CDN URLs for both Linux entries.