2016-03-30 9 views
2

githubからjenkinsジョブを管理するためにgithub-organizationプラグインを使用していますが、Jenkins APIがこれらのビルドを報告しないことがわかりました。github-organizationで管理されている特定のjenkinsビルドをプログラムでトリガする方法は?

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

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

は明確にするために、私は今Jenkinsfile

#!groovy 

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

の内側に追加するために、いくつかのグルーヴィーなコードを探しています、問題はジェンキンスは、単一のジョブとして、組織全体を見ているということです!

Jenkins APIを使用してジョブを取得すると、その組織のみが返され、その内部のすべてのリポジトリおよびジョブは返されません。

私は、このプラグインが実装された方法で、私は組織内でビルドしたいリポジトリとブランチを指定するためにいくつかのパラメータを追加する必要があると考えています。多くのセンス。

+1

あなたは明確にすることができ、あなたは(https://github.com/jenkinsci/github-organization-folder-plugin)[githubの組織フォルダ-プラグイン]を、これを使用しており、手動でそれらのいずれかをトリガーしますJenkinsfileによって作成されたジョブまた、既に作成されたジョブのジョブ名で[url](https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API)を介してトリガするように動作している場合は試してみましたか?その後、Jenkinsfile Pipelineによるジョブネーミング規則について知る必要があります。 –

+0

悲しいことに、 'acme/job/foo/job/master'をジョブ名として使ってみましたが、' acme/job/foo/job/master found'というパラメータ化されたジョブはありませんでした。ジョブ。 – sorin

+1

http:// に公開されているものを確認してください:/api/xml' –

答えて

4

質問はあいまいですが、このコンテキストでは「API」はビルドをトリガーするREST APIを意味しています。あなたは一例

curl -X POST -u user:apitoken http://jenkins/job/yourorg/job/yourrepo/job/master/build 
+0

これは本当に理想的ではありませんが、私がグルーヴィーを見つけることができない場合にはうまくいくかもしれません。 Jenkinsfileの実行がすでにJenkinsのAPIにアクセスしていたとき、ここからAPIトークンの問題に対処する必要はありません。 – sorin

+0

おそらくあなたは何か全く違うものを求めているでしょう。これは単に以下のものの複製です:http://stackoverflow.com/questions/36306883/how-can-i-trigger-another-job-from-a-jenkins-pipeline-ジェンキンスファイル –

0

システムの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") 
関連する問題