jenkins - 一起使用 withEnv 和 withCredentials

标签 jenkins jenkins-pipeline jenkins-groovy

假设您有一个场景,您有一个用户名和密码凭证,您希望将其用作填充(事实上的)标准 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
  }
}

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

关于如何安全地设置 http_proxy 有什么想法吗?

最佳答案

试试这个:

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

关于jenkins - 一起使用 withEnv 和 withCredentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66570693/

相关文章:

jenkins - 如何在 withCredentials 中获取用户范围的凭据(个人凭据)

java - 将 war 文件从 Jenkins 部署到弹性 beanstalk 时部署失败

jenkins-pipeline - 来自 AWS ECR 的 Jenkins 管道 Docker 代理

Jenkins如何创建管道手动步骤

jenkins - 访问主动选择 react 引用参数内的全局映射变量

.net - .net 应用程序的 Jenkins 部署

testing - 如何从命令行安装 jenkins 插件?

git - 如何将当前分支中的 GIT 标记读取到变量中?

jenkins - 在管道开始时循环环境指令内的环境变量列表

jenkins - 将参数中的变量插入到 Jenkins 的参数化构建中