【发布时间】:2016-08-29 07:05:06
【问题描述】:
我已经分离了相当小的 Jenkins 工作。
现在我需要配置另一个作业,根据用户参数的选择(可能通过复选框选择?)将执行其中的一些。
我想从 Powershell 或 Bash 或 Groovy 脚本启动它们。有可能吗?
【问题讨论】:
标签: bash powershell jenkins groovy
我已经分离了相当小的 Jenkins 工作。
现在我需要配置另一个作业,根据用户参数的选择(可能通过复选框选择?)将执行其中的一些。
我想从 Powershell 或 Bash 或 Groovy 脚本启动它们。有可能吗?
【问题讨论】:
标签: bash powershell jenkins groovy
如果您在 Postbuild/管道步骤中使用 Groovy,则可以通过 Jenkins API 启动该作业。
例如,类似这样的无参数构建:
import hudson.model.*
Jenkins.instance.getItem("My Job").scheduleBuild(5)
对于参数化构建,类似这样:
import hudson.model.*
Jenkins.instance.getItem("My Job").scheduleBuild( 5, new Cause.UpstreamCause( currentBuild ), new ParametersAction([ new StringParameterValue( "My Parameter Name", "My Parameter Value" ) ]));
您也可以使用Jenkins Rest API 来完成其他操作。例如,通过点击以下网址:
无参数:
curl -X POST JENKINS_URL/job/JOB_NAME/build
参数化:
curl -X POST JENKINS_URL/job/JOB_NAME/buildWithParameters?MyParameterName=MyParameterValue
【讨论】:
样本:
import hudson.model.*
def actions=[]
def plist=[ ];
["ok":"ok","label":"master"].each {k,v->
plist << new hudson.model.StringParameterValue(k,"$v","");
}
actions.add(new hudson.model.ParametersAction(plist));
def future = Jenkins.instance.getItemByFullName("samples/testPipeline").scheduleBuild2(0,actions as hudson.model.Action[] );
future.get().getLog()
【讨论】: