Repository navigation
Environments that differ in more than values (taking on existing systems) - #90
Merged
Merged
Conversation
driver.xml environments (empty = every environment), filtered in Overrides.apply; drivers/<d>.name overrides (renameDriver, toTreeNames, Secrets.withNames); keepOnImport for import-live and the web pull (--mark-new-drivers); EnvironmentCompare + vault.compare-envs (values, drift, case-only apart); driver.set environments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Primary) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…objects filtered per environment; docs on feeds Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ly-in Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…'); servers cause; server lists in the compare Verified live: edir3 vs edir2 — two job differences (servers) until edir2's servers were mapped in the page, then 'the same configuration'; a scoped dry-run plan to edir2 shows no differences. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eral objects Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… as values Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, known.accept/forget Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er-unmapped validation Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s, no drift A deploy never deletes an environment's own copy of an object the tree keeps for other environments, and the known-state gate doesn't count it (or an excluded driver) as drift. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.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.
Why
Taking on an existing system means production and QA trees that have grown apart:
Design and decisions D1–D6:
docs/existing-environments.md.What
environments/plannedon drivers (driver.xml), jobs, role-based entitlement policies and templates.Overrides.applyleaves out what an environment doesn't get, so compare, plan, deploy and the gate all follow it.driver.set environments|planned, andenvironments.setfor several objects at once.drivers/<d>.name, applied throughDriverSet.renameDriver, which rewrites the DN, the artifacts' owner and the links. Imports map names back withtoTreeNames, and secrets answer to either name (Secrets.withNames).servers.<tree server's name> = <env server DN>..preferpicks whose settings it takes.Servers.foldPrimaryturns a mapped primary's settings into the base the deploy writes.ServerMap.toTreemaps back on import.server-unmapped.=..job.<job>.schedule|disabled|trace-*.--driver-server): manual start on that server, disabled everywhere else, after waiting for replication.vault.compare-envs(EnvironmentCompare):overrides/<env>.known.json, withknown.accept/known.forget, matched by fingerprint.keepOnImportkeeps the tree's drivers and objects that an environment doesn't get, and--mark-new-driversmarks drivers new to the tree as that environment's.Checked
bin/ci-portable.sh(71).DriverEnvironmentsTest(11 tests) andServerMapTest(5);PlanTestcovers the runs-on choice.Version 0.49.0 on the branch; release when merged.
🤖 Generated with Claude Code