3

我正在使用 github-organization 插件从 github 管理 jenkins 作业,但我发现 Jenkins API 不报告这些构建。

事实上,API 将整个组织列为一项工作。

如何使用 API 构建特定的存储库和分支?

需要明确的是,我正在寻找一些 groovy 代码添加到Jenkinsfile

#!groovy

stage 'test-downstream'
node {
    def job = build job: 'some-job'
}

现在,问题是 Jenkins 将整个组织视为一个单一的工作!

如果我使用 Jenkins API 来检索作业,它将只返回组织,而不是其中的所有存储库和作业。

我怀疑那是因为这个插件的实现方式,我想我需要提供一些额外的参数来指定我想在组织内部构建哪个存储库和分支......建立一个组织没有多大意义。

4

2 回答 2

4

这个问题很模糊,但我猜在这种情况下“API”是指触发构建的 REST API。您可以使用例如

curl -X POST -u user:apitoken http://jenkins/job/yourorg/job/yourrepo/job/master/build
于 2016-03-31T11:35:13.930 回答
1

以下代码通过 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")
于 2016-08-25T08:43:31.873 回答