[英]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脚本自动生成此管道作业? 我的意思是,如何在詹金斯本身生成上述管道?
要回答您的两个第一个问题:
Build
Maven作业中,您可以像使用任何变量一样仅使用$jobname
和$val1
。 顺便说一句,您可能想要确保变量名称足够清晰,这样您就不会对Maven作业中的变量用法有任何歧义。 至于第三个问题,我不确定您要问什么,请您提供更多信息,一些背景信息等吗?
一般来说,我看不出创建仅作为其他作业包装器的管道的意义(此处为Build and Deploy)。 您可能应该考虑:
像这样的东西:
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"
}
}
当然,这只是一个例子,但是您明白了这一点……
Build
Maven作业的末尾添加“ Trigger参数化的构建”来实现。 除非我在这里缺少任何内容,否则仅创建一个包装对您的Build / Deploy作业没有任何价值的包装似乎毫无意义...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.