【发布时间】:2022-01-04 00:27:18
【问题描述】:
我有一个管道,它运行在三个不同的分支上(dev/uat/master)。每个分支的一些参数都会发生变化,因此它们会针对每个环境进行硬编码,从而产生三个 Jenkinsfiles(每个环境一个)。
我的第二个解决方案是根据环境使用三个不同的属性文件。单个 Jenkins 作业将触发 Jenkins 作业,但基于分支名称(我将从 GitHub webhook 触发器中获取)。
我的Jenkinsfile 有一个环境变量,其赋值如下所示:
myJenkinsJob.jenkinsfile
serviceAccountName = sh(returnStdout: true, script: "awk -F= '{$1 ~ /serviceAccountName/ ; gsub($1"=","") ; print}' dev.properties").trim()
dev.properties 文件如下所示:
serviceAccountName=abc@def.com
这将评估为属性文件中提到的值。 serviceAccountName=abc@def.com.
有没有人有更好/更简单的选择?一些插件可以读取文件中传递的参数,而无需通过所有sh命令在环境/参数块中进行分配?
【问题讨论】:
-
Re "每个分支的某些参数会发生变化,因此它们会针对每个环境进行硬编码,从而产生三个 jenkinsfile"。这真的意味着你永远不会将一个分支合并到另一个分支吗?
-
嗨 Gerald,我们确实合并了分支。我在每个分支中有三个文件,它们的名称类似于 myJenkinsJob_dev.jenkinsfile、myJenkinsJob_uat.jenkinsfile、myJenkinsJob_prod.jenkinsfile。我们按该顺序将功能分支合并到 dev 到 uat 到 prod。
标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy