【问题标题】:Jenkins Pipeline per branch environment variable configurationJenkins Pipeline 每个分支环境变量配置
【发布时间】:2019-04-18 09:16:58
【问题描述】:

我在我的 Jenkins 安装上设置了几个 Jenkins Pipeline 作业,所有这些作业都在存储库中使用 Jenkinsfile

这些管道针对所有分支运行,并包含构建和部署分支所需的所有步骤。但是,不同的分支在构建和部署方面存在一些差异,我希望能够为不同的分支配置不同的环境变量。

Jenkins 可以做到这一点,还是我需要重新评估我的方法或使用其他 CI 系统?

【问题讨论】:

标签: jenkins continuous-integration jenkins-pipeline continuous-deployment


【解决方案1】:

@rednax 如果您使用的是每个环境的分支 git 策略,则答案有效。但是,如果您使用 git-flow(或任何您认为更改将被传播到主/生产的策略,可能无需人工干预),您将遇到合并将覆盖脚本/变量的问题。

我们使用一组与环境名称匹配的文件夹:infrastructure/Jenkinsfile 包含通用步骤,infrastructure/test/Jenkinsfile 包含特定于测试环境的步骤(文件夹还包含 Dockerfile 和 cloudformation 脚本)。您可以通过级联包含或文件合并使这变得非常复杂,或者只是在每个文件夹中拥有几乎相同的每个文件的副本。

【讨论】:

    【解决方案2】:

    在配置作业时,您可以指定 Jenkins 从您正在运行的分支中获取脚本(Jenkins 文件)。这意味着从技术上讲,您可以调整每个分支上的脚本以在那里设置参数。或者您可以从相同的源代码控制位置获取脚本,但在每个分支中提交一个配置文件,并让脚本在签出后读取该文件。

    【讨论】:

    • 这可能适用于一小部分环境变量,但请在源代码控制中包含敏感(危险,即密码)环境变量的警告
    • 我认为这是理所当然的,没有理由将任何凭据存储在管道或其他文件中 Jenkins 为您提供了一种安全存储凭据然后在管道中使用它们的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多