feat(nevermore-cli): pin and promote base place versions in deploy config#734
Merged
Conversation
Deploys that use a basePlace always downloaded the latest published version of that place, so a broken Studio edit to a base place shipped on the next deploy even when the code hadn't changed. Add an optional basePlace.version pin to deploy.nevermore.json. When set, the deploy downloads exactly that version instead of the latest, making deploys reproducible. Omitting it keeps the previous latest-pull behavior, so existing configs are unaffected. Add `nevermore deploy version upgrade [target]` to bump the pins: it resolves each basePlace's current latest published version via the Open Cloud Assets API (reusing the legacy-asset:manage scope), prints an old -> new table, and writes the new versions back to the config after a confirmation prompt. Supports --dryrun and --yes, and scopes to a single target when named. Base places shared across targets are resolved once.
…n targets Promoting a validated build usually means shipping the exact base-place versions a demo/staging target was verified against, not re-pinning to whatever is newest. Add `nevermore deploy version promote <from> <to>`, which copies basePlace version pins from one target onto another (e.g. production-demo -> production). Places are matched by base place id rather than name, so the same source content lines up even when targets name their places differently. Destination places with no matching pin are left untouched and reported, and an inconsistent source (one base place pinned to two versions) is rejected. It's a pure edit of deploy.nevermore.json with no network calls, gated behind the same --dryrun / confirmation flow as `version upgrade`.
Owner
Author
|
🚀 PR was released in |
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.
Deploys that use a basePlace previously always pulled the latest published version of that place, so a broken Studio edit to a base place would ship on the next deploy even when the code hadn't changed. You can now pin a base place to a specific version in deploy.nevermore.json (add "version" inside basePlace), and deploys download exactly that version; omitting it keeps the old latest-pull behavior, so existing configs are unaffected.
Two new commands manage the pins:
nevermore deploy version upgrade [target]bumps every basePlace to its current latest published version (via the Open Cloud Assets API, reusing the legacy-asset:manage scope), andnevermore deploy version promote <from> <to>copies the pins from one target onto another (e.g. production-demo to production), matching places by base place id so content lines up even when targets name their places differently. Both print an old to new table, gate writes behind --dryrun and a confirmation prompt, and were verified end-to-end against the egg-hunt-2026 config.📦 Published PR as canary version:
Canary Versions✨ Test out this PR locally via:
npm install @quenty/nevermore-cli@4.38.0-canary.734.29546444548.0 # or yarn add @quenty/nevermore-cli@4.38.0-canary.734.29546444548.0