TL; DR:显然,在Jenkins管道作业中,您可以轻松地向下游传递参数。我想知道的是,是否可以将它们传递给 上游 。
我们有三份工作;job_one
,job_two
和job_three
。它们通常仅需要一个阶段就可以单独运行,但是在越来越频繁的情况下,我们希望能够将所有三个阶段背靠背运行。
第一个和第二个依赖于您可以提前定义的参数,但是第三个和第二个依赖于从第二个作业生成的参数(该文件名的结构在job_two运行之前是未知的)。
我建立了umbrella
,每个工作都需要类似以下内容的东西。在这种情况下,PARAM1
将填充,因为伞以“带参数的构建”形式运行。
build job: 'job_one', parameters: [[$class: 'StringParameterValue', name: 'PARAM1', value: "$PARAM1"]]
一切都很好,然后我就可以使用PARAM1
了job_one
。
因为job_three
我需要参数filename
。这是在内部生成的job_two
,因此据我所知无法访问,因为job_three不知道job_two在做什么。
在理想的世界中,我只需要将job_two传递filename
给伞作业,然后将其反馈给job_three。因此,
如何将生成的filename
备份传递到伞式工作?
我正在描绘一个最终的脚本,像这样;
node('on-demand-t2small'){
stage ('Build 1') {
build job: 'job_one', parameters: [[$class: 'StringParameterValue', name: 'PARAM1', value: "$PARMA1"]]
}
stage ('Build 2') {
build job: 'job_two', parameters: [[$class: 'StringParameterValue', name: 'PARAM2', value: "$PARMA2"]]
//somehow get the filename parameter out of job_two here so that I can move it to job three...
}
stage ('Build 3') {
build job: 'job_three', parameters: [[$class: 'StringParameterValue', name: 'filename', value: "$filename"]]
} }
我认识到第一个问题是“为什么没有job_two触发job_three?我不能以这种方式设置系统,原因有两个:
我曾考虑过将参数设置为环境变量,但我认为这是特定于节点的,因此我不能保证两个作业都将在同一节点上运行,因此这似乎不是解决方案。
伞是一种用groovy编写的管道作业,如果重要的话,其他三个可能是管道作业或自由式作业。
在可能的情况下,我希望您能获得详细的答案,但对于Groovy,Jenkins和一般的编码人员,我仍然是新手。
它应该像这样简单:
stage ('Build 3') {
res = build job: 'job_three', parameters: [[$class: 'StringParameterValue', name: 'filename', value: "$filename"]]
echo "$res.buildVariables.filename"
}
假设您在job_three中做
env.filename = "col new file name"
问题内容: 我正在使用具有集成交付管道功能(https://jenkins.io/solutions/pipeline/)的Jenkins v2.1 来编排两个现有构建(构建和部署)。 在我的参数化构建中,我有3个用户参数设置,也需要在管道中选择该参数。 管道脚本如下: 除以外,此方法均正常运行。当我构建管道时,会引发以下错误: 如何解决此类型转换错误?甚至更好的是,有没有一种麻烦的方式可以将所有
问题内容: 我有一个名为 buildall 的管道作业,如下所示: 该 buildall 作业有25个参数。我想将所有 buildall 的参数传递给 job1 。有没有一种简单的方法可以代替手动指定每个参数呢? 在此问题中:向下游作业传递管道参数是一个子问题,但从未得到回答: 甚至更好的是,有没有一种麻烦的方法可以将所有管道参数传递给下游作业。 我有同样的问题。 问题答案: 以下似乎有效(尽管我
我使用的是Jenkins v2.1,它具有集成交付管道功能(https://jenkins.io/solutions/pipeline/)协调两个现有构建(构建和部署)。 在我的参数化构建中,我有3个用户参数设置,这些参数也需要在管道中选择。 管道脚本如下所示: 除了之外,这可以正常工作。当我构建管道时,会抛出以下错误: 如何解决此类型转换错误?或者更好的是,是否有一种不那么麻烦的方法,可以将所有
问题内容: 当前,我有一个具有不同参数的管道作业,其中此参数之一是Choice参数。这是该作业参数的config.xml输出: 现在,我可以通过传递字符串参数从管道调用此作业: 但是我无法为选择参数定义参数: 我尝试了以下方法: 但这失败并显示以下错误: 因此问题是:如何在调用其他管道作业时定义选择参数: 有人有这样的例子吗? 问题答案: 我看过一个使用以下语法的工作示例: 基本上,不要以特殊的方
问题内容: 我要完成的工作是从分支中签出代码,将其合并到分支,构建,运行测试,如果测试成功则推送到分支。 测试应在需要的单独工作中运行。 我当前的设置如下: Job 从中检出,将其合并并构建 作业会在“ 后期制作”步骤中 触发作业(需要预先创建) 如果成功,则在 发布构建操作中推送到分支 __ 我尝试使用 Copy Artifact Plugin, 但是问题在于,在 Post构建步骤中 触发时,我
我有一个 Jenkins Job DSL 种子作业,它调用了几个管道作业,例如 job1.groovy和job2.groovy是标准的Jenkinsfile样式管道。 我想在这些作业中传递一些常用的地图。这些内容可能因环境而异,例如目标服务器、凭据名称。 类似于: 我可以在我的种子作业中定义一个映射,然后在我的管道作业中作为映射进行传递和访问吗?