fix: Gateway 빌드와 마이그레이션 실행기를 분리

release build는 구성된 격리 builder로 보내고 Gateway DB migration은 runtime의 로컬 runner에서만 실행한다. 원격 build와 로컬 migration 명령 경계를 회귀 테스트로 고정한다.
This commit is contained in:
2026-08-22 10:28:16 +00:00
parent a3092bcfcc
commit 57c1d03ff6
3 changed files with 68 additions and 4 deletions
@@ -146,13 +146,13 @@ export class GatewayReleaseController {
constructor(
private readonly repository: GatewayReleaseRepository,
private readonly workspaceManager: GitWorkspaceManager,
private readonly buildRunner: BuildRunner,
private readonly migrationRunner: BuildRunner,
private readonly processManager: ProcessManager,
private readonly config: ReleaseControllerConfig,
private readonly now: () => Date = () => new Date(),
private readonly fetchImpl: typeof fetch = fetch
) {
this.releaseBuildRunner = createReleaseBuildRunner(config.releaseBuilderUrl, buildRunner, fetchImpl);
this.releaseBuildRunner = createReleaseBuildRunner(config.releaseBuilderUrl, migrationRunner, fetchImpl);
this.artifactManager = new FrontendArtifactManager(config.frontendArtifactRoot ?? '/srv/frontend-artifacts');
}
@@ -345,7 +345,7 @@ export class GatewayReleaseController {
: null;
await this.appendLog(operation.id, 'migration', 'Gateway database migration을 적용합니다.');
await this.assertOperationLease(operation.id);
const migration = await this.buildRunner.run(
const migration = await this.migrationRunner.run(
[buildGatewayMigrationCommand(workspace.root, this.config)],
this.buildProgress(operation.id, 'migration'),
{ signal }