fix: use Tekton proxy for env reuse downloads

This commit is contained in:
Codex Agent
2026-06-13 02:11:14 +08:00
committed by root
parent 25e1125bab
commit 56581a4373
3 changed files with 60 additions and 2 deletions
+29
View File
@@ -909,6 +909,7 @@ function normalizeEnvReuseRecipe(recipe) {
}
function normalizeDownloadStack(value) {
value = effectiveDownloadStackConfig(value, process.env);
assert.ok(value && typeof value === "object", "envRecipe.downloadStack must be configured in deploy/deploy.yaml");
const normalized = {
httpProxy: normalizeOptionalHttpUrl(value.httpProxy),
@@ -927,6 +928,34 @@ function normalizeDownloadStack(value) {
return normalized;
}
function effectiveDownloadStackConfig(value, env = process.env) {
if (!value || typeof value !== "object" || !usesK8sNativeDownloadProxy(env)) return value;
const httpProxy = textEnv(env.HTTP_PROXY) || textEnv(env.http_proxy) || value.httpProxy;
const httpsProxy = textEnv(env.HTTPS_PROXY) || textEnv(env.https_proxy) || httpProxy || value.httpsProxy;
const noProxy = noProxyFromEnv(env) || value.noProxy;
return {
...value,
httpProxy,
httpsProxy,
noProxy
};
}
function usesK8sNativeDownloadProxy(env = process.env) {
return env.HWLAB_DEV_REGISTRY_K8S_NATIVE === "1" || Boolean(textEnv(env.HWLAB_TEKTON_PIPELINERUN));
}
function noProxyFromEnv(env = process.env) {
const text = textEnv(env.NO_PROXY) || textEnv(env.no_proxy);
if (!text) return null;
return text.split(",").map((item) => item.trim()).filter(Boolean);
}
function textEnv(value) {
const text = String(value ?? "").trim();
return text || null;
}
function normalizeOptionalHttpUrl(value) {
const text = String(value ?? "").trim();
if (!text) return null;
+6 -1
View File
@@ -2678,7 +2678,12 @@ function planArtifactsTask({ serviceIds = defaultServiceIds } = {}) {
steps: [{
name: "plan",
image: ciToolsRunnerImage,
env: [{ name: "HWLAB_SELECTED_SERVICES", value: "$(params.services)" }, ...proxyEnv()],
env: [
{ name: "HWLAB_SELECTED_SERVICES", value: "$(params.services)" },
{ name: "HWLAB_DEV_REGISTRY_K8S_NATIVE", value: "1" },
{ name: "HWLAB_TEKTON_PIPELINERUN", value: "$(context.pipelineRun.name)" },
...proxyEnv()
],
script: planArtifactsScript()
}]
},
+25 -1
View File
@@ -365,7 +365,7 @@ function envReuseRecipeForLaneConfig(laneConfig, lane = "v02") {
}
function normalizeDownloadStack(value, lane) {
const configured = value && typeof value === "object" ? value : null;
const configured = effectiveDownloadStackConfig(value, process.env);
if (!configured) throw new Error(`deploy.lanes.${lane}.envRecipe.downloadStack is required`);
const httpProxy = normalizeOptionalHttpUrl(configured.httpProxy, `deploy.lanes.${lane}.envRecipe.downloadStack.httpProxy`);
const httpsProxy = normalizeOptionalHttpUrl(configured.httpsProxy, `deploy.lanes.${lane}.envRecipe.downloadStack.httpsProxy`);
@@ -389,6 +389,30 @@ function normalizeDownloadStack(value, lane) {
};
}
function effectiveDownloadStackConfig(value, env = process.env) {
const configured = value && typeof value === "object" ? value : null;
if (!configured || !usesK8sNativeDownloadProxy(env)) return configured;
const httpProxy = normalizeDeclarationString(env.HTTP_PROXY) || normalizeDeclarationString(env.http_proxy) || configured.httpProxy;
const httpsProxy = normalizeDeclarationString(env.HTTPS_PROXY) || normalizeDeclarationString(env.https_proxy) || httpProxy || configured.httpsProxy;
const noProxy = noProxyFromEnv(env) || configured.noProxy;
return {
...configured,
httpProxy,
httpsProxy,
noProxy
};
}
function usesK8sNativeDownloadProxy(env = process.env) {
return env.HWLAB_DEV_REGISTRY_K8S_NATIVE === "1" || Boolean(normalizeDeclarationString(env.HWLAB_TEKTON_PIPELINERUN));
}
function noProxyFromEnv(env = process.env) {
const text = normalizeDeclarationString(env.NO_PROXY) || normalizeDeclarationString(env.no_proxy);
if (!text) return null;
return text.split(",").map((item) => item.trim()).filter(Boolean);
}
function normalizeOptionalHttpUrl(value, label) {
const text = normalizeDeclarationString(value);
if (!text) return null;