0

ジェンキンですでに利用可能なマルチジョブについては、Groovy Scriptingを使用して新しいフェーズジョブを追加する必要があります。私はすでに存在するジョブp25_deploy-1を追加する次のようなコードを書いています。
このコードはマルチジョブを作成するために動作していますが、フェーズジョブはJenkins UIにマップされているようには表示されません。私がそれを見るかのように​​3210は、タグ<killPhaseOnJobResultCondition>を除き、期待通りに正しく作成されています。フェーズジョブが正しくマップされない理由がわかりませんか?Jenkinsのマルチジョブに新しいフェーズジョブを追加するためのスクリプト

import jenkins.model.* 
import hudson.model.* 
import com.tikal.jenkins.plugins.multijob.* 
import com.tikal.jenkins.plugins.multijob.PhaseJobsConfig.* 
import com.tikal.jenkins.plugins.multijob.PhaseJobsConfig.KillPhaseOnJobResultCondition.* 
import java.lang.String.* 
import hudson.model.Descriptor; 
import hudson.tasks.Builder; 

def jenkinsInstance = jenkins.model.Jenkins.instance 

def templateJobName = 'profile_p25' 

def templateJob = jenkinsInstance.getJob(templateJobName) 


// get MultiJob BuildPhases and clone each PhaseJob 
builders = templateJob.getBuilders(); 

builders.each { b -> 
if (b instanceof MultiJobBuilder){ 
def pj = b.getPhaseJobs() 

    hudson.model.Describable p1 = new PhaseJobsConfig("p25_deploy-1",null, 
     true,PhaseJobsConfig.KillPhaseOnJobResultCondition NEVER,null,false,false,null,0,false,true,null,false,false) 
    pj.add(p1) 
    } 
} 

    templateJob.save() 
    // update dependencies 
    jenkinsInstance.rebuildDependencyGraph() 

ご協力いただければ幸いです。多くの方法を試しましたが、スクリプトの問題を理解できませんでした。

私はDSLを使って作成することができますが、Groovy Scriptingでそれを行い、さらに既存のジョブを修正したいと考えました。

BLOCKQUOTE

答えて

0

イェーイ!私は私の質問の答えに戻る。非常に長い時間以来これを試したことがあります。最後にそれを作ることができます。私は解決策が本当にシンプルだが、それを解くことができないことを知っていた。

輸入jenkins.model。* 輸入hudson.model。* 輸入com.tikal.jenkins.plugins.multijob。* 輸入com.tikal.jenkins.plugins.multijob.PhaseJobsConfig。* インポートコム.tikal.jenkins.plugins.multijob.PhaseJobsConfig.KillPhaseOnJobResultCondition。* import java.lang.String。* import hudson.model.Descriptor;インポート hudson.tasks.Builder;

DEF jenkinsInstance = jenkins.model.Jenkins.instance

DEF templateJobName = 'profile_p25'

DEF templateJob = jenkinsInstance.getJob(templateJobName)

//マルチジョブBuildPhasesを取得し、各PhaseJobのクローンを作成ビルダー= templateJob.getBuilders();

builders.each {B - > IF(MultiJobBuilderのinstanceof B){DEF PJ = b.getPhaseJobs()

hudson.model.Describable newphase =新しい PhaseJobsConfig(が展開[i]は、ヌル、 )、真NULL、NULL、偽、偽、NULL、0、偽、偽、 ""、偽、偽 newphase.killPhaseOnJobResultCondition = 'NEVER' pj.add(newphase)}} templateJob.save()

関連する問題