繁体   English   中英

如何在詹金斯中将参数从管道作业传递到Maven作业

[英]How to pass parameters from a pipeline job to a maven job in Jenkins

我有一个管道作业和两个Maven作业,如下所示。

    node {
    def res
    stage('Build') {
        node('rhel6') {
            res = build job: "Build", parameters:
                                [
                                        string(name: 'jobname', value:'master'),
                                        string(name: 'val1', value: 'MyValue')
                                ]
        }
    }
    stage('Deploy') {
        node('rhel6') {
            build job: 'Deploy', parameters:
                    [
                            string(name: 'resName', value: "$res.buildVariables.filename")
                            string(name: 'firstVal', value: 'First_Argument')
                    ]
        }
    }
}

从管道定义中可以看到,我有一个管道作业,两个作业在管道阶段下运行。 “构建”作业需要两个字符串参数并进行构建。

部署作业从构建作业中获取一个输入并进行构建。

1)这是在詹金斯管道的阶段之间传递参数的正确方法吗? 我正在使用与此类似的方法。

2)如何将管道作业中的参数映射到实际作业中的参数? 例如:在上面的管道作业中,在“构建”阶段,我将jobname和val1作为参数。 这些参数如何在Build作业中映射到实际参数?

3)如何从作业dsl脚本自动生成此管道作业? 我的意思是,如何在詹金斯本身生成上述管道?

要回答您的两个第一个问题:

  1. 是的,这是传递参数的正确方法之一
  2. 您传递的参数只是在下游作业中解释为变量。 Build Maven作业中,您可以像使用任何变量一样仅使用$jobname$val1 顺便说一句,您可能想要确保变量名称足够清晰,这样您就不会对Maven作业中的变量用法有任何歧义。

至于第三个问题,我不确定您要问什么,请您提供更多信息,一些背景信息等吗?

一般来说,我看不出创建仅作为其他作业包装器的管道的意义(此处为Build and Deploy)。 您可能应该考虑:

  • 将您的Maven作业转换为管道Groovy代码,以便可以将其直接添加到当前的管道作业中。

像这样的东西:

node('rhel6') {
    def res
    stage('Build') {
        // Your build step here
        sh "${env.mvnHome}/bin/mvn install"
    }
    stage('Deploy') {
        // Your deploy step here
        sh "${env.mvnHome}/bin/mvn deploy"
    }
}

当然,这只是一个例子,但是您明白了这一点……

  • 链接两个Maven作业,而无需创建第三个作业。 您可以通过在Build Maven作业的末尾添加“ Trigger参数化的构建”来实现。

除非我在这里缺少任何内容,否则仅创建一个包装对您的Build / Deploy作业没有任何价值的包装似乎毫无意义...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM