[eas-build-job][build-tools] Replace eas-cli npm dist-tags with cli-versions.json - #4147
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4147 +/- ##
==========================================
+ Coverage 62.43% 62.46% +0.03%
==========================================
Files 1009 1009
Lines 45737 45771 +34
Branches 9622 9627 +5
==========================================
+ Hits 28550 28584 +34
Misses 15726 15726
Partials 1461 1461 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@claude review once |
There was a problem hiding this comment.
Code review is billed via overage credits. To resume reviews, an organization admin can raise the monthly limit at claude.ai/admin-settings/claude-code.
Once credits are available, comment @claude review on this pull request to trigger a review.
…ersions.json Add cli-versions.json as the source of truth for the staging/production eas-cli versions. eas-build-job gains fetchEasCliVersionsAsync, which reads the file from main on GitHub; build-tools uses it to build the eas-cli@<version> npx argument and falls back to the latest-eas-build* dist-tags on any failure. The release workflow now bumps cli-versions.json in the release commit and no longer posts the manual npm dist-tag reminder. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Set the initial cli-versions.json values to 21.5.0, the current version published as latest on npm. - Verify in the release workflow that eas-cli@latest on npm matches the version just published; fail the release if the publish did not take effect. - Bump only STAGING from the release workflow. PRODUCTION is now bumped by a separate, manually-triggered "Promote eas-cli to production" workflow, which verifies the version exists on npm before updating cli-versions.json. - Remove the obsolete move-eas-build-tag workflow (dist-tags are no longer the source of truth and it could not run from CI). - Validate STAGING and PRODUCTION as semver in the cli-versions.json schema. - Time out the cli-versions.json fetch after 10s via AbortController, surfaced as EasCliVersionsFetchTimeoutError. - Report cli-versions.json fetch failures to Sentry before falling back to the npm dist-tags, with a distinct message for the timeout failure mode. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0697859 to
e917d8b
Compare
|
⏩ The changelog entry check has been skipped since the "no changelog" label is present. |
🤖 AI code reviewDecision: Approve with comments Overall PR risk: Medium. The change modifies an existing shared path: EAS Build now resolves the 🟡 Warning (4)
This review is advisory — it never blocks a merge and never auto-approves. |
szdziedzic
left a comment
There was a problem hiding this comment.
LGTM overall! Thanks for crafting this! 🙏
Should we also update RELEASING.md?
Do we want to automatically kick system tests off as a part of release workflow and make this promote-eas-cli-production.yml flow automatically start once they pass as a follow up?

Why
Add
cli-versions.jsonas the source of truth for the staging/production eas-cli versions, to remove the dependency on NPM tags to determine the correct version used in workflow jobs.How
Adding new function
fetchEasCliVersionsAsyncin the eas-build-job package. This reads the file from main on GitHub; build-tools uses it to build the eas-cli@ npx argument and falls back to thelatest-eas-build*dist-tags on any failure. The release workflow now bumps cli-versions.json in the release commit and no longer posts the manual npm dist-tag reminder.Test Plan
New unit tests added.