2017-11-08 15 views
0

젠킨스에서 이미 사용 가능한 다중 작업의 경우 Groovy Scripting을 사용하여 새로운 위상 작업을 추가해야합니다. 나는 기존의 p25_deploy-1 작업을 추가하는 다음과 같은 코드를 작성했다.
이 코드는 다중 작업을 만들려고하고 있지만 위상 작업이 Jenkins UI에 매핑 된 것처럼 표시되지 않습니다. 내가 config.xml을 볼 수있는 것처럼, <killPhaseOnJobResultCondition> 태그를 제외하고 예상대로 제대로 생성되었습니다. 위상 작업이 제대로 매핑되지 않은 이유를 모르십니까?젠킨스의 멀티 작업에 새로운 위상 작업을 추가하는 Groovy

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에서이 작업을 수행하고 기존 작업을 수정하고 싶습니다.

인용문

답변

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; import hudson.tasks.Builder; 데프 jenkinsInstance = jenkins.model.Jenkins.instance

데프 templateJobName = 'profile_p25'

데프 templateJob = jenkinsInstance.getJob (templateJobName)

// MultiJob BuildPhases을 얻고 복제 각 PhaseJob

빌더 = templateJob.getBuilders();

builders.each {B -> 경우 (MultiJobBuilder instanceof는 b) {DEF PJ = b.getPhaseJobs()

hudson.model.Describable newphase = 새로운 PhaseJobsConfig (전개함에 [I], NULL, 사실, 널, 널, 거짓, 거짓 NULL, 0, 거짓 거짓 ""), 거짓 거짓 newphase.killPhaseOnJobResultCondition = 'NEVER' pj.add (newphase)}} templateJob.save()