fix: refresh provider gateway build context

This commit is contained in:
Codex
2026-05-16 17:04:54 +00:00
parent ba0b949766
commit 5af2fa00c4
3 changed files with 36 additions and 2 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@unidesk/provider-gateway",
"version": "0.2.20",
"version": "0.2.21",
"private": true,
"type": "module",
"scripts": {
+33 -1
View File
@@ -1552,8 +1552,13 @@ function candidateGatewayName(taskId: string): string {
function upgradePlan(taskId: string): Record<string, JsonValue> {
const workspace = config.upgradeWorkspacePath;
const workspaceRoot = workspace.replace(/\/+$/, "");
const sleepMs = 300_000;
const validationTimeoutMs = 180_000;
const compactBuildContextCandidates = Array.from(new Set([
`${workspaceRoot}/.state/provider-${config.providerId}-build-context`,
`${workspaceRoot}/.state/provider-${safeProviderSlug(config.providerId)}-build-context`,
]));
const composeBaseCommand = [
"docker",
"compose",
@@ -1595,9 +1600,31 @@ function upgradePlan(taskId: string): Record<string, JsonValue> {
const validationNeedleOk = `"ok":true`;
const validationAttempts = Math.max(1, Math.ceil(validationTimeoutMs / 2000));
const targetGatewayMetadata = readTargetGatewayMetadata(workspace);
const compactBuildContextRefreshScript = [
`provider_src=${shellQuote(`${workspaceRoot}/src/components/provider-gateway`)}`,
`shared_src=${shellQuote(`${workspaceRoot}/src/components/shared`)}`,
`for compact_context in ${compactBuildContextCandidates.map(shellQuote).join(" ")}; do`,
` if [ -d "$compact_context" ]; then`,
` echo "refreshing provider-gateway build context: $compact_context"`,
` mkdir -p "$compact_context/src/components/provider-gateway" "$compact_context/src/components/shared"`,
` rm -rf "$compact_context/src/components/provider-gateway/src" "$compact_context/src/components/provider-gateway/scripts" "$compact_context/src/components/shared/src"`,
` cp -a "$provider_src/package.json" "$compact_context/src/components/provider-gateway/package.json"`,
` [ ! -f "$provider_src/tsconfig.json" ] || cp -a "$provider_src/tsconfig.json" "$compact_context/src/components/provider-gateway/tsconfig.json"`,
` [ ! -f "$provider_src/Dockerfile" ] || cp -a "$provider_src/Dockerfile" "$compact_context/src/components/provider-gateway/Dockerfile"`,
` [ -f "$compact_context/Dockerfile" ] || cp -a "$provider_src/Dockerfile" "$compact_context/Dockerfile"`,
` cp -a "$provider_src/src" "$compact_context/src/components/provider-gateway/src"`,
` cp -a "$provider_src/scripts" "$compact_context/src/components/provider-gateway/scripts"`,
` cp -a "$shared_src/package.json" "$compact_context/src/components/shared/package.json"`,
` [ ! -f "$shared_src/tsconfig.json" ] || cp -a "$shared_src/tsconfig.json" "$compact_context/src/components/shared/tsconfig.json"`,
` cp -a "$shared_src/src" "$compact_context/src/components/shared/src"`,
` date -u +%Y-%m-%dT%H:%M:%SZ > "$compact_context/.unidesk-build-context-refreshed-at"`,
` fi`,
`done`,
].join("\n");
const script = [
"set -eu",
`cd ${shellQuote(workspace)}`,
compactBuildContextRefreshScript,
`old_ids=$(${listServiceContainersCommand.map(shellQuote).join(" ")})`,
`first_old=""`,
`for old_id in $old_ids; do first_old="$old_id"; break; done`,
@@ -1669,6 +1696,8 @@ function upgradePlan(taskId: string): Record<string, JsonValue> {
"/var/run/docker.sock:/var/run/docker.sock",
"-v",
`${config.upgradeHostProjectRoot}:${workspace}:ro`,
"-v",
`${config.upgradeHostProjectRoot.replace(/\/+$/, "")}/.state:${workspaceRoot}/.state`,
"-w",
workspace,
config.upgradeRunnerImage,
@@ -1714,7 +1743,8 @@ function upgradePlan(taskId: string): Record<string, JsonValue> {
candidateUsesOldContainerEnvironment: true,
candidateUsesHostPidNamespace: true,
startupSelfHealsRestartPolicy: true,
dockerStatusReportsRestartPolicyAndPidMode: true,
dockerStatusReportsRestartPolicyAndPidMode: true,
refreshesCompactBuildContextBeforeBuild: true,
removeScope: {
projectLabel: config.upgradeComposeProject,
serviceLabel: config.upgradeService,
@@ -1723,6 +1753,8 @@ function upgradePlan(taskId: string): Record<string, JsonValue> {
namedVolumesPreserved: true,
},
dockerRunCommand,
compactBuildContextCandidates,
workspaceStateMount: `${config.upgradeHostProjectRoot.replace(/\/+$/, "")}/.state:${workspaceRoot}/.state`,
};
}