Merge pull request #1120 from pikasTech/fix/d601-v03-env-download-proxy
修复 D601 v0.3 env-reuse 下载代理
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
}]
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user