fix(release): allow controller protocol self-upgrade

This commit is contained in:
2026-08-11 00:01:47 +00:00
parent 6bf8340a8a
commit 0c8185cfa9
5 changed files with 32 additions and 6 deletions
+3 -1
View File
@@ -86,4 +86,6 @@ rollback하려면 새 schema와의 하위 호환성을 릴리스 전에 확인
`release-manifest.json``controllerProtocol`이 올라간 릴리스는 controller를
먼저 self-upgrade해야 합니다. Protocol 2는 `GatewayReleaseLog` 진행 로그 저장을
요구합니다. 구형 controller로 새 Gateway만 배포하면 관리자 화면과 controller의
기능이 어긋날 수 있으므로, manifest protocol 검사를 우회하지 마세요.
기능이 어긋날 수 있으므로, 일반 배포의 manifest protocol 검사를 우회하지
마세요. Self-upgrade CLI만 다음 protocol을 허용하며 schema head와 component는
동일하게 검증합니다.
+4 -1
View File
@@ -65,7 +65,10 @@ export const upgradeReleaseController = async (options: {
}): Promise<{ commitSha: string; workspace: string }> => {
const commitSha = await options.workspaceManager.resolveCommit(options.sourceMode, options.sourceRef);
const workspace = await options.workspaceManager.prepare(commitSha);
const manifest = await readReleaseManifest(workspace.root);
// The target controller, rather than this bootstrap CLI, owns the target
// controller protocol. Keep all manifest/schema/component checks while
// allowing this explicit self-upgrade boundary to cross protocol versions.
const manifest = await readReleaseManifest(workspace.root, { allowControllerUpgrade: true });
assertReleaseComponents(manifest, ['release-controller']);
const build = await options.buildRunner.run(
buildReleaseControllerCommands(workspace.root, workspace.needsInstall, options.config)