Merge pull request #161 from pikasTech/fix/codequeue-direct-docker-proxy
fix: proxy Code Queue direct Docker publish
This commit is contained in:
@@ -160,6 +160,9 @@ assertCondition(ciSource.includes('options.transport === "direct-docker"'), "ci
|
||||
assertCondition(ciSource.includes('options.transport === "auto" && options.serviceId === "code-queue"'), "auto transport should select direct-docker for Code Queue artifacts");
|
||||
assertCondition(ciSource.includes("dependsOnLocalUnideskDatabase: false"), "direct-docker publish must not depend on local unidesk-database dispatch");
|
||||
assertCondition(ciSource.includes("CODE_QUEUE_BASE_IMAGE=unidesk-code-queue:d601"), "direct-docker Code Queue publish must use the warmed D601 base image");
|
||||
assertCondition(ciSource.includes("directDockerBuildNetworkArgs"), "direct-docker Code Queue publish must own scoped build network args");
|
||||
assertCondition(ciSource.includes('"--network"') && ciSource.includes('"host"'), "direct-docker Code Queue publish must use host networking for the D601 provider proxy");
|
||||
assertCondition(ciSource.includes("providerGatewayWsEgressProxyUrl") && ciSource.includes("HTTP_PROXY") && ciSource.includes("HTTPS_PROXY"), "direct-docker Code Queue publish must pass scoped provider-gateway proxy build args");
|
||||
assertCondition(ciSource.includes("code-queue-base-image-missing"), "direct-docker Code Queue publish should fail fast when the warmed base image is missing");
|
||||
assertCondition(ciSource.includes("no deploy apply, no rollout, no Code Queue restart, no active task mutation"), "direct-docker publish boundary should forbid runtime mutation");
|
||||
assertCondition(ciSource.includes("repo-owned Docker artifact publish without backend-core/database dispatch"), "ci help should describe the repo-owned direct-docker delivery path");
|
||||
@@ -173,5 +176,6 @@ process.stdout.write(`${JSON.stringify({
|
||||
"prod Code Queue boundary forbids self-deploy, prod mutation, interrupt and cancel actions",
|
||||
"artifact-registry dev dry-run is non-mutating while prod remains unsupported",
|
||||
"ci publish-user-service exposes direct-docker Code Queue artifact publish without local database dispatch",
|
||||
"direct-docker Code Queue artifact publish uses scoped provider-gateway build proxy args",
|
||||
],
|
||||
}, null, 2)}\n`);
|
||||
|
||||
@@ -1524,6 +1524,39 @@ function buildContextForService(serviceId: string, dockerfile: string): string {
|
||||
return serviceId === "claudeqq" ? posixPath.dirname(dockerfile) : ".";
|
||||
}
|
||||
|
||||
function directDockerBuildNetworkArgs(serviceId: string): string[] {
|
||||
if (serviceId !== "code-queue") return [];
|
||||
const noProxy = [
|
||||
"localhost",
|
||||
"127.0.0.1",
|
||||
"::1",
|
||||
"host.docker.internal",
|
||||
"d601-tcp-egress-gateway",
|
||||
"d601-tcp-egress-gateway.unidesk",
|
||||
"d601-tcp-egress-gateway.unidesk.svc",
|
||||
"d601-tcp-egress-gateway.unidesk.svc.cluster.local",
|
||||
"backend-core",
|
||||
"oa-event-flow",
|
||||
"database",
|
||||
].join(",");
|
||||
return [
|
||||
"--network",
|
||||
"host",
|
||||
"--build-arg",
|
||||
`HTTP_PROXY=${providerGatewayWsEgressProxyUrl}`,
|
||||
"--build-arg",
|
||||
`HTTPS_PROXY=${providerGatewayWsEgressProxyUrl}`,
|
||||
"--build-arg",
|
||||
`http_proxy=${providerGatewayWsEgressProxyUrl}`,
|
||||
"--build-arg",
|
||||
`https_proxy=${providerGatewayWsEgressProxyUrl}`,
|
||||
"--build-arg",
|
||||
`NO_PROXY=${noProxy}`,
|
||||
"--build-arg",
|
||||
`no_proxy=${noProxy}`,
|
||||
];
|
||||
}
|
||||
|
||||
function directDockerSourceGitMode(repoUrl: string): "local-unidesk-worktree" | "git-archive" {
|
||||
return repoUrl === "https://github.com/pikasTech/unidesk" ? "local-unidesk-worktree" : "git-archive";
|
||||
}
|
||||
@@ -1575,6 +1608,7 @@ async function publishUserServiceArtifactDirectDocker(options: CiPublishUserServ
|
||||
const planned = artifactSummaryDefaults(context);
|
||||
const localImage = `${options.imageRepository}:${options.commit}`;
|
||||
const buildContext = buildContextForService(options.serviceId, options.dockerfile);
|
||||
const networkArgs = directDockerBuildNetworkArgs(options.serviceId);
|
||||
const baseArgs = options.serviceId === "code-queue" && runCommand(["docker", "image", "inspect", "unidesk-code-queue:d601"], repoRoot, { timeoutMs: 30_000 }).exitCode === 0
|
||||
? ["--build-arg", "CODE_QUEUE_BASE_IMAGE=unidesk-code-queue:d601"]
|
||||
: [];
|
||||
@@ -1614,6 +1648,7 @@ async function publishUserServiceArtifactDirectDocker(options: CiPublishUserServ
|
||||
`unidesk.ai/source-commit=${options.commit}`,
|
||||
"--label",
|
||||
`unidesk.ai/dockerfile=${options.dockerfile}`,
|
||||
...networkArgs,
|
||||
...baseArgs,
|
||||
"-t",
|
||||
localImage,
|
||||
|
||||
Reference in New Issue
Block a user