我正在使用github-organization插件来管理来自github的jenkins作业,但我发现Jenkins API不会报告这些构建。
事实上,API将整个组织列为单个作业。
如何使用API构建特定的存储库和分支?
要清楚,我正在寻找一些在Jenkinsfile
#!groovy
stage 'test-downstream'
node {
def job = build job: 'some-job'
}
现在,问题是Jenkins将整个组织视为一份工作!
如果我使用Jenkins API来检索作业,它将只返回组织,而不是其中的所有存储库和作业。
我怀疑这是因为这个插件的实现方式,我想我需要提供一些额外的参数,以便指定我想在组织内构建哪个存储库和分支....构建一个组织并没有太多感。
答案 0 :(得分:4)
问题很模糊,但我猜这个上下文中的“API”意味着触发构建的REST API。你可以使用例如
curl -X POST -u user:apitoken http://jenkins/job/yourorg/job/yourrepo/job/master/build
答案 1 :(得分:0)
以下代码通过System Groovy构建步骤触发作业。请注意,系统groovy总是在master上运行,因此从先前的构建步骤传递信息可能会很棘手。
import jenkins.model.*
import hudson.model.*
import java.util.concurrent.*
def run_job(job_name) {
def currentBuild = Thread.currentThread().executable
def jenkins = jenkins.model.Jenkins.getInstance();
def job = jenkins.getItemByFullName(job_name);
if (job == null)
throw new hudson.AbortException("Cannot find job:" + job_name);
def params =[
new StringParameterValue('PARAMETER1', "invoke 1 param1"),
new StringParameterValue('PARAMETER2', ",invoke 1 param2")
]
def paramsAction = new ParametersAction(params)
def cause = new hudson.model.Cause.UpstreamCause(currentBuild)
def causeAction = new hudson.model.CauseAction(cause)
def future_build = job.scheduleBuild2(0,causeAction,paramsAction);
def running_build = future_build.waitForStart()
return running_build
}
run_job("runner1")