Validate candidate migration baseline during release
This commit is contained in:
@@ -59,9 +59,11 @@ Core next, and the meta tag last. This is a dependency guarantee for a
|
|||||||
single-capacity Actions runner: the developer package cannot run before its
|
single-capacity Actions runner: the developer package cannot run before its
|
||||||
exact Core and module versions have entered the queue.
|
exact Core and module versions have entered the queue.
|
||||||
|
|
||||||
The same release entry point records the reviewed current Alembic heads under
|
The same release entry point first validates the migration graph, then records
|
||||||
the target release version and reruns the strict migration audit before it
|
the reviewed current Alembic heads under the target release version and reruns
|
||||||
changes package versions, commits, or tags. A failed baseline check therefore
|
the strict migration audit before it changes package versions, commits, or
|
||||||
|
tags. The default preflight intentionally does not require those heads to exist
|
||||||
|
in the previous release baseline. A failed candidate-baseline check therefore
|
||||||
cannot produce a protected package release.
|
cannot produce a protected package release.
|
||||||
|
|
||||||
It builds one wheel and, where applicable, one npm tarball. The workflow records
|
It builds one wheel and, where applicable, one npm tarball. The workflow records
|
||||||
|
|||||||
@@ -51,6 +51,16 @@ class ReleaseEntrypointGateTests(unittest.TestCase):
|
|||||||
self.assertLess(module_push, core_push)
|
self.assertLess(module_push, core_push)
|
||||||
self.assertLess(core_push, support_push)
|
self.assertLess(core_push, support_push)
|
||||||
|
|
||||||
|
def test_default_migration_preflight_accepts_new_release_heads(self) -> None:
|
||||||
|
script = (META_ROOT / "tools" / "release" / "push-release-tag.sh").read_text()
|
||||||
|
audit_function = script[
|
||||||
|
script.index("run_migration_release_audit()") :
|
||||||
|
script.index("record_migration_release_baseline()")
|
||||||
|
]
|
||||||
|
|
||||||
|
self.assertNotIn("--strict-if-baseline", audit_function)
|
||||||
|
self.assertIn('command+=("--strict")', audit_function)
|
||||||
|
|
||||||
def test_source_catalog_generator_enforces_explicit_repo_versions(self) -> None:
|
def test_source_catalog_generator_enforces_explicit_repo_versions(self) -> None:
|
||||||
script = (META_ROOT / "tools" / "release" / "generate-release-catalog.py").read_text()
|
script = (META_ROOT / "tools" / "release" / "generate-release-catalog.py").read_text()
|
||||||
|
|
||||||
|
|||||||
@@ -533,7 +533,8 @@ run_migration_release_audit() {
|
|||||||
command+=("--strict")
|
command+=("--strict")
|
||||||
;;
|
;;
|
||||||
auto)
|
auto)
|
||||||
command+=("--strict-if-baseline")
|
# A coordinated release creates a new baseline after confirmation. The
|
||||||
|
# preflight validates the graph; strictness applies to that new baseline.
|
||||||
;;
|
;;
|
||||||
warn)
|
warn)
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user