Block mismatched selective WebUI releases
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import replace
|
||||
from datetime import UTC, datetime
|
||||
from pathlib import Path
|
||||
import shlex
|
||||
|
||||
from .contracts import validate_contracts
|
||||
@@ -17,6 +19,7 @@ from .model import (
|
||||
SelectiveReleasePlan,
|
||||
ModuleContractSnapshot,
|
||||
)
|
||||
from .version_alignment import selected_release_webui_bundle_issues
|
||||
|
||||
|
||||
def build_selective_release_plan(
|
||||
@@ -34,6 +37,7 @@ def build_selective_release_plan(
|
||||
build_unit(repo, target_version=repo_versions.get(repo.spec.name) or target_version, contracts=contracts_by_repo.get(repo.spec.name))
|
||||
for repo in repositories
|
||||
)
|
||||
units = apply_release_webui_bundle_gate(units, workspace=Path(dashboard.workspace_root))
|
||||
compatibility = compatibility_issues(dashboard)
|
||||
steps = dry_run_steps(units=units, dashboard=dashboard, channel=channel)
|
||||
notes = release_notes(dashboard)
|
||||
@@ -49,6 +53,31 @@ def build_selective_release_plan(
|
||||
)
|
||||
|
||||
|
||||
def apply_release_webui_bundle_gate(
|
||||
units: tuple[ReleasePlanUnit, ...],
|
||||
*,
|
||||
workspace: Path,
|
||||
) -> tuple[ReleasePlanUnit, ...]:
|
||||
issues_by_repo: dict[str, list[str]] = {}
|
||||
for issue in selected_release_webui_bundle_issues(
|
||||
repo_versions={unit.repo: unit.target_version for unit in units},
|
||||
workspace=workspace,
|
||||
):
|
||||
issues_by_repo.setdefault(issue.repo, []).append(
|
||||
f"{issue.source}={issue.actual!r}, expected {issue.expected!r} ({issue.message})"
|
||||
)
|
||||
return tuple(
|
||||
replace(
|
||||
unit,
|
||||
status="blocked",
|
||||
blockers=(*unit.blockers, *issues_by_repo[unit.repo]),
|
||||
)
|
||||
if unit.repo in issues_by_repo
|
||||
else unit
|
||||
for unit in units
|
||||
)
|
||||
|
||||
|
||||
def selected_repositories(dashboard: ReleaseDashboard, *, selected_repos: tuple[str, ...]) -> tuple[RepositorySnapshot, ...]:
|
||||
if selected_repos:
|
||||
wanted = set(selected_repos)
|
||||
|
||||
Reference in New Issue
Block a user