首页 > 解决方案 > 一起使用 withEnv 和 withCredentials

问题描述

假设您有一个场景,您有一个用户名和密码凭证,您希望将其用作填充(事实上的)标准http_proxy环境变量的一部分。第一次尝试是这样的:

withCredentials([usernameColonPassword(credentialsId:'proxy-credentials', variable:'PROXY_CREDENTIALS')]) {
  def proxyUrl = "https://${env.PROXY_CREDENTIALS}@proxy-endpoint.com:3128"
  withEnv(["http_proxy=${proxyUrl}"]) {
    // Do stuff
  }
}

然而,虽然这有效,但 Jenkins 将其标记为不安全。这也不起作用:

withCredentials([usernameColonPassword(credentialsId:'proxy-credentials', variable:'PROXY_CREDENTIALS')]) {
  withEnv(['http_proxy=https://${PROXY_CREDENTIALS}@proxy-endpoint.com:3128']) {
    // Do stuff
  }
}

这是因为 a 中没有“shell 扩展” withEnv,因此http_proxy被设置为其中包含文字${PROXY_CREDENTIALS},这不是我们想要的。

关于如何安全设置的任何想法http_proxy

标签: jenkinsjenkins-pipelinejenkins-groovy

解决方案


尝试这个 :

withCredentials([usernameColonPassword(credentialsId:'proxy-credentials', variable:'PROXY_CREDENTIALS')]) {
  withEnv(["http_proxy=https://$PROXY_CREDENTIALS@proxy-endpoint.com:3128"]) {
    // Do stuff
  }
}

推荐阅读