从 Jenkins 而不是从 Jenkinsfile 设置 Jenkins 管道的范围环境变量

从 Jenkins 而不是从 Jenkinsfile 设置 Jenkins 管道的范围环境变量

是否有某种方法可以将非敏感数据存储在 Jenkins 的构建配置范围内,以便可以从管道脚本中读取?

我们正在迁移到新的 Octopus Deploy 服务器,我们的 Jenkinsfile 如下所示:

pipeline {
  environment {
    OCTOPUS_CLI_SERVER = "https://octopus.example.com"
    OCTOPUS_CLI_API_KEY = credentials("Octopus_Deploy_ApiKey")
  }
  // ...
}

我可以通过 Jenkins 凭证管理器集中更新 API 密钥,但由于 URL 是硬编码的,因此我必须OCTOPUS_CLI_SERVER在每个分支中编辑并提交更改。只要我要更改它,我就想知道是否有比硬编码新值更好的方法。

可以将 Octopus 服务器 URL 存储在凭证管理器中并以相同的方式访问它,但随后其值将从日志中删除,这可能会很烦人。理想情况下,我所寻找的内容可能对多个项目有不同的值。例如,项目 A 和项目 B 都可能读取名为“PUBLIC_DOMAIN”的变量,但一个会得到“a.example.com”,另一个会得到“b.example.com”。

我提到 Octopus Deploy 是因为它恰好是我们正在进行的改变,但这个问题可能适用于从 Jenkins 管道访问的任何数据,这并不是 Octopus Deploy 特有的。

答案1

实现这一点的方法几乎是无限的。以下是我想到的三种方法:

  • 你可以使用Jenkins Pipeline 共享库将配置值存储在中心位置。

  • 您可以将值存储在远程文件或存储库中,并让管道从远程文件或存储库中的文件中读取该值。

  • 您可以让管道通过 HTTP REST API 从另一台服务器获取值。

相关内容