Upload nightly full installers and wire up fastlane tests#3626
Merged
mokagio merged 6 commits intoMay 27, 2026
Merged
Conversation
Encodes the rule that Nightly full installers are restricted to logged-in Automatticians (so the planned `/nightly` CDN link only resolves for internal users), while updates and all Beta/Production builds stay external. The helper is unused for now; the Fastfile change that calls it lands in the next commit so the move and the behavior change stay reviewable separately. Tests run with bare `ruby fastlane/test/studio_apps_cdn_upload_test.rb` (Minitest is stdlib). Related to AINFRA-2434. --- Generated with the help of Claude Code, https://claude.ai/code Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Trunk Buildkite builds already produce DMG/EXE/APPX installers; the `distribute_builds` lane was only uploading the auto-updater payloads (`.app.zip`, `.nupkg`). As a result the planned `/nightly` CDN link had nothing installable to resolve to. Uploading full installers on every build (not only when `release_tag` is set) unblocks AINFRA-2434. Visibility is decided via `StudioAppsCdnUpload.visibility_for`, so nightly full installs are Internal (Automatticians only) while updates stay External (the in-app auto-updater is unauthenticated and would otherwise stop seeing nightly updates). Related to AINFRA-2434. --- Generated with the help of Claude Code, https://claude.ai/code Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
App-validation jobs (lint/unit/e2e) treat `fastlane/**` and Gemfile-ish paths as non-code and skip on fastlane-only PRs — sensible for them, but it leaves the helper tests under `fastlane/test/` unprotected. Adds a `fastlane` job type that is the inverse of the existing skip rules: it runs only when at least one changed file is fastlane/ or Ruby setup related, via `pr_changed_files --any-match`. The new pipeline step sits next to Lint, on the Mac queue, and shells out to `bash` so it doesn't need the script's exec bit. Related to AINFRA-2434. --- Generated with the help of Claude Code, https://claude.ai/code Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates Studio’s distribution pipeline to publish nightly full installers (DMG/EXE/APPX) to the Apps CDN, with visibility rules that keep nightly installers internal while preserving external visibility for update payloads. It also adds a dedicated CI step to run the existing Fastlane helper Minitest suite when Fastlane/Ruby-related files change.
Changes:
- Add a
StudioAppsCdnUpload.visibility_forhelper to encode Apps CDN visibility rules (nightly full installers internal; everything else external). - Update the Fastlane
distribute_buildsflow to upload full installers on nightly builds and apply the computed visibility per artifact. - Add a Buildkite step + command script to run
fastlane/test/*_test.rb, gated by a newfastlanejob-type inshould-skip-job.sh.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
fastlane/lib/studio_apps_cdn_upload.rb |
Adds a single-purpose helper to determine Apps CDN visibility for a build artifact. |
fastlane/test/studio_apps_cdn_upload_test.rb |
Adds Minitest coverage for the new visibility helper. |
fastlane/Fastfile |
Uploads nightly full installers (in addition to update payloads) and wires visibility via the helper. |
.buildkite/pipeline.yml |
Introduces a “Fastlane Helper Tests” pipeline step. |
.buildkite/commands/should-skip-job.sh |
Adds fastlane job type and related file-match patterns for gating. |
.buildkite/commands/run-fastlane-tests.sh |
Runs Fastlane helper Minitest files, respecting the skip logic. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
mokagio
commented
May 27, 2026
mokagio
commented
May 27, 2026
mokagio
commented
May 27, 2026
Co-authored-by: Gio Lodi <giovanni.lodi42@gmail.com>
twstokes
approved these changes
May 27, 2026
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
/nightly. Until that lands, the new uploads are silently created but the URL still 404s — this PR is safe to merge before or after.How AI was used in this PR
Claude (Opus 4.7) wrote the changes after a back-and-forth on visibility semantics and CI gating.
Reviewed and iterated on by the author.
Proposed Changes
trunknow uploads full installers (DMG/EXE/APPX) to the Apps CDN.visibility: 'internal'(Automatticians only); update binaries stayexternalso the unauthenticated Electron/Squirrel auto-updater keeps working — see PR #3623.fastlane Helper TestsCI step.Testing Instructions
ruby fastlane/test/*_test.rb— all 35 cases pass.trunkverification (after merge): inspect the nexttrunkBuildkite "Distribute Dev Builds" step — the🔗 Build available for …annotation should now list DMG/EXE/APPX entries alongside the existing Update entries, and the Mac/Silicon DMGs should appear on appscdn.wordpress.com as Nightly + Internal posts.Pre-merge Checklist