我正在使用Jenkins创建构建管道,并且需要在管道中触发部署步骤。这意味着手动过程(构建自动进行,定时,然后在部署阶段停止,等待手动授权)。
我还需要使用前一步骤中的参数触发部署步骤。
因此,使用'参数化插件',我可以在作业之间传递参数。我可以触发自动OR手动触发的下游作业(不确定这是否是标准功能,或者某些插件添加了手动版本)。
然而,我找不到任何触发手动参数化作业的方法。
有谁知道这样做的方法?我可以使用另一个插件吗?
我需要参数的原因是我创建了一个通用部署作业,需要传入模块名称和maven版本进行部署。我可以为每个模块创建特定的部署作业,但这将非常痛苦。
我也一直在考虑以下问题,但这似乎是一个不错的选择:
这种方法存在各种问题
答案 0 :(得分:7)
build-pipeline-plugin的当前生产版本(1.4.2)允许它 - 使用参数指定手动下游作业,这些参数显示在管道上并可以从那里启动。 旧版本无法做到。
答案 1 :(得分:2)
查看构建管道插件:https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin。
您可以指定要自动触发或手动触发的作业。
此外,如果您需要在作业之间传递参数,则需要下载 Groovy插件:https://wiki.jenkins-ci.org/display/JENKINS/Groovy+plugin
为了传递参数,我们可以在构建开始时需要执行系统Groovy脚本的作业之间进行SVN修订。这是一个添加SVN_UPSTREAM参数的示例,可供任何下游作业使用。 注意:我注意到创建一个也有系统groovy脚本的下游作业时出现问题。它似乎吹走了对创建的原始参数的任何引用。
import hudson.model.*
def build = Thread.currentThread().executable;
build.addAction(new ParametersAction(new StringParameterValue("SVN_UPSTREAM", build.getEnvVars()['SVN_REVISION'])));
println "SVN_UPSTREAM:" + build.getEnvVars()['SVN_UPSTREAM'];
答案 2 :(得分:2)
有一种解决方法:
手动提升上游作业的特定构建后,它将启动下游作业的构建。 但下游工作不会出现在管道上。
答案 3 :(得分:1)
Build Pipeline Plugin可以执行此操作,但在撰写本文时,不是在任何已发布的版本中。我从main(当时的版本392)构建了插件,其中包含patch中提到的this issue,它对我有用。
安装完成后,您可以在第一个作业中使用名为“构建其他项目(手动步骤)”的构建后操作,并在那里配置要传递给第二个(手动触发)管道作业的参数。
答案 4 :(得分:0)
在我看来,没有可能实现目标
当您启动管道传递时,管道插件仅检查第一个作业的参数 - >然后显示(或不显示)initParam屏幕
但是当下一步(例如部署)是手动的并且它需要参数时,则忽略initParam屏幕 查看问题https://issues.jenkins-ci.org/browse/JENKINS-32336