【问题标题】:How to read parameters from a file within a Jenkins pipeline job如何从 Jenkins 管道作业中的文件中读取参数
【发布时间】: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


【解决方案1】:

您可以为所有分支使用一个 Jenkinsfile,并添加一个 init 阶段以根据分支名称设置您的变量,使用 BRANCH_NAME 环境变量:

stage ('Init') {
    steps {
        script {
            switch(env.BRANCH_NAME) {
                case 'dev':
                    serviceAccountName = 'dev@def.com'
                    break
                case 'uat':
                    serviceAccountName = 'uat@def.com'
                    break
                case 'master':
                    serviceAccountName = 'master@def.com'
                    break
                default:
                    error('Unexpected branch name')
            }
        }
    }
}

如果要使用属性文件,可以使用 readFile 语法或使用 YAML 并使用 readYaml,这样可以更轻松地解析检索到的值。

例子:

dev.yml 文件可能如下所示:

service-account-name: abc@def.com

然后在您的管道中使用readYaml

def devData = readYaml file: 'dev.yml' 
def serviceAccountName = devData.service-account-name

有关 Jenkins 提供的所有环境变量,请参见页面 https://your.jenkins.host:port/env-vars.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多