如何在作业中设置Jenkins构建参数并传递到下一个管道阶段

如何在作业中设置Jenkins构建参数并传递到下一个管道阶段,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我们正在使用一个Jenkins构建管道,该管道调用许多Jenkins作业。我试图弄清楚如何将变量设置为Jenkins作业的一部分(理论上,每次运行都可以将该变量设置为唯一的)。第一个问题是,我不确定如何将这样一个变量设置为第一个作业的一部分。其次,我不确定如何通过Groovy脚本从管道上的作业中提取该变量 例如: node { stage 'First Job' //I want to set a parameter as part of the build steps in thi

我们正在使用一个Jenkins构建管道,该管道调用许多Jenkins作业。我试图弄清楚如何将变量设置为Jenkins作业的一部分(理论上,每次运行都可以将该变量设置为唯一的)。第一个问题是,我不确定如何将这样一个变量设置为第一个作业的一部分。其次,我不确定如何通过Groovy脚本从管道上的作业中提取该变量

例如:

node {
   stage 'First Job'
   //I want to set a parameter as part of the build steps in this job
   build 'first-job'
   stage 'Second Job'
   //I want the variable set in the first job passed in here
   build job: 'second-job', parameters: [string(name: 'FOO', value: myParam)
}

我认为你不能轻易做到这一点,因为这不是真正的管道哲学

使用旧的自由式项目,您将链接您的工作,例如:

Main job -> First job -> Second job
…每次将构建参数从上游作业传递到下游作业

然而,philosphy则完全不同,它的目标是将所有复杂的工作流作为一个单一的管道来处理。为了保持干净,可以加载函数,传递和获取变量变得非常简单

例如:

node {
   def functions = load 'functions.groovy'

   stage 'First part'
   def outputParamOfPart1 = functions.function1(yourParameter)

   stage 'Second part'
   def outputParamOfPart2 = functions.function2(outputParamOfPart1)
}
等等。我认为你真的应该重新考虑你对待不同工作的方式。如果您确实需要将作业保持为单独的作业,而不是某些管道的函数,则始终可以查看Jenkins全局属性。

您可以从“第一个作业”获取参数,而不是传递到“第二个作业”。看看我的例子