3

github から jenkins ジョブを管理するために github-organization プラグインを使用していますが、Jenkins API がこれらのビルドを報告しないことがわかりました。

実際、API は組織全体を 1 つのジョブとしてリストします。

API を使用して特定のリポジトリとブランチを構築するにはどうすればよいですか?

明確にするために、私は内部に追加するグルーヴィーなコードを探していますJenkinsfile

#!groovy

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

問題は、Jenkins が組織全体を 1 つの仕事と見なしていることです。

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 は常にマスター上で実行されるため、以前のビルド ステップから情報を渡すのは難しい場合があることに注意してください。

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 に答える