2017-07-25 6 views
3

シナリオ:現在のジョブが受け取った入力パラメータに基づいてダウンストリームジョブ(ジョブAとジョブB ....) 。このようなことについてどのようにいくつかの入力パラメータに基づいてジーンキンで複数のダウンストリームジョブを動的にトリガーする方法

#!/usr/bin/env groovy 

pipeline { 
    agent { label 'docker' } 
    parameters { 
    string(name: 'myHotParam', defaultValue: '', description: 'What is your param, sir?') 
    } 
    stages { 
    stage('build') { 
     steps { 
     script { 
      if (params.myHotParam == 'buildEverything') { 
      build 'mydir/jobA' 
      build 'mydir/jobB' 
      } 
     } 
     } 
    } 
    } 
} 
+0

入力パラメータも何ですか? – Suresh

+0

入力するジョブ名(カンマ区切り)は、トリガされるべきものです。 –

+0

このパラメータを[Parameterized Trigger Plugin](https://wiki.jenkins.io/display/JENKINS/Parameterized+Trigger+Plugin) – Suresh

答えて

1
import hudson.model.* 

def values = ${configname}.split(',') 
def currentBuild = Thread.currentThread().executable 

println ${configname} 
println ${sourceBranch} 

values.eachWithIndex { item, index -> 
    println item 
    println index 

def job = hudson.model.Hudson.instance.getJob(item) 
def params = new StringParameterValue('upstream_job', ${sourceBranch}) 
def paramsAction = new ParametersAction(params) 
def cause = new hudson.model.Cause.UpstreamCause(currentBuild) 
def causeAction = new hudson.model.CauseAction(cause) 
hudson.model.Hudson.instance.queue.schedule(job, 0, causeAction, paramsAction) 
} 

1

このJenkinsfileはそれをしますか?私はアップストリームシステムからコンマ区切りのリストを取得していましたが、私は内部的にジョブである個々の文字列として分割しました。個々の文字列を渡して電話をかける。

+0

に渡すための道を指定しましたか?ありがとうございました。 –

関連する問題