Jenkins Pipeline 每个分支的环境变量配置
Jenkins Pipeline per branch environment variable configuration
我在我的 Jenkins 安装上设置了几个 Jenkins Pipeline 作业,所有作业都在存储库中有一个 Jenkinsfile
。
这些管道 运行 适用于所有分支,包含构建和部署分支所需的所有步骤。但是,不同的分支在构建和部署方面存在一些差异,我希望能够为不同的分支配置不同的环境变量。
Jenkins 是否可行,或者我是否需要重新评估我的方法或使用另一个 CI 系统?
配置作业时,您可以指定 Jenkins 从您所在的分支中获取脚本(Jenkins 文件)运行。这意味着从技术上讲,您可以调整每个分支上的脚本以在那里设置参数。或者您可以从相同的源代码控制位置获取脚本,但在每个分支中提交配置文件并让脚本在检出后读取该文件。
@rednax 如果您使用的是每个环境分支 git 策略,则答案有效。但是,如果您正在使用 git-flow(或您假设更改将传播到 master/production 的任何策略,可能没有人为干预),您将 运行 陷入头痛合并将覆盖 scripts/variables。
我们使用一组与环境名称匹配的文件夹:infrastructure/Jenkinsfile 包含通用步骤,infrastructure/test/Jenkinsfile 包含特定于测试环境的步骤(文件夹还包含 Dockerfiles 和 cloudformation 脚本).您可以通过级联包含或文件合并使它变得非常复杂,或者只是在每个文件夹中具有每个文件的几乎相同的副本。
我在我的 Jenkins 安装上设置了几个 Jenkins Pipeline 作业,所有作业都在存储库中有一个 Jenkinsfile
。
这些管道 运行 适用于所有分支,包含构建和部署分支所需的所有步骤。但是,不同的分支在构建和部署方面存在一些差异,我希望能够为不同的分支配置不同的环境变量。
Jenkins 是否可行,或者我是否需要重新评估我的方法或使用另一个 CI 系统?
配置作业时,您可以指定 Jenkins 从您所在的分支中获取脚本(Jenkins 文件)运行。这意味着从技术上讲,您可以调整每个分支上的脚本以在那里设置参数。或者您可以从相同的源代码控制位置获取脚本,但在每个分支中提交配置文件并让脚本在检出后读取该文件。
@rednax 如果您使用的是每个环境分支 git 策略,则答案有效。但是,如果您正在使用 git-flow(或您假设更改将传播到 master/production 的任何策略,可能没有人为干预),您将 运行 陷入头痛合并将覆盖 scripts/variables。
我们使用一组与环境名称匹配的文件夹:infrastructure/Jenkinsfile 包含通用步骤,infrastructure/test/Jenkinsfile 包含特定于测试环境的步骤(文件夹还包含 Dockerfiles 和 cloudformation 脚本).您可以通过级联包含或文件合并使它变得非常复杂,或者只是在每个文件夹中具有每个文件的几乎相同的副本。