Replies: 3 comments
-
|
Target end state:
|
Beta Was this translation helpful? Give feedback.
-
|
I'm doing That is a build-time normalization layer That is no longer “version sync CI” That is a build-time rewrite compiler for metadata
CI never lets tools see it in a live step So: X.Y.Z is just inert data, not an active version field It becomes: placeholder-only schema marker Not a runtime value CI version extraction must be single source My flow should be: pyproject.toml → ONLY source of truth No tag, no package.json, no csproj is authoritative anymore. I am now doing: BEFORE Tools read raw repo state immediately → risk of failure NOW CI sanitizes everything BEFORE any tool runs So the rule becomes: Tools only ever see a fully materialized, valid state. No build step runs before rewrite That includes:
Why Because it is no longer consumed by any tool. CI should fully own materialization, deterministic builds, no accidental drift, stricter pipeline ordering X.Y.Z will not fail because no tool sees it in execution time, everything is rewritten first |
Beta Was this translation helpful? Give feedback.
-
|
This discussion has been resolved. Single-source release architecture is now established:
See PR #233 for implementation details. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Right now I have version duplication across:
pyproject.tomlnode_version/package.jsonnode_version/package-lock.json_version.pyExplainThisRepo.csprojexplain_this_repo/_version.pygit tags
I currently have distributed version ownership, multiple files pretending to own the version, which creates multiple synchronized burden
So I edit random versions everywhere and pray it doesn't fail
And skipping to edit any version file manually totally fails the CI hard
My actual source of truth should become: single-source release architecture
one canonical version source
one release trigger
multiple synchronized distributions
pyproject.tomlEverything else should derive from it during CI.
Then:
package.jsonI will use:
or any placeholder.
CI rewrites it.
.csprojI will use:
CI rewrites it.
Then my release flow becomes:
My ideal release flow:
pyproject.toml_version.pyExplainThisRepo.csprojexplain_this_repo/_version.pynode_version/package.jsonnode_version/package-lock.json)Even better:
Instead of:
I derive directly from TOML:
Then validate:
tag == pyproject version
Hard fail if mismatch
That is stronger than trusting the tag blindly.
My actual CI architecture should become:
pyproject.toml= single source of truth & canonical version sourceONLY.
Everything else becomes derived state. Everything else is generated metadata. Everything else distribution layers around one core engine
Only CI writes versions outside
pyproject.tomlSo humans only touch
pyproject.tomlpyproject.tomlwill be the ONLY human-edited version sourceBeta Was this translation helpful? Give feedback.
All reactions