簡體   English   中英

Groovy 腳本將新階段作業添加到 Jenkins 中的多作業

[英]Groovy Script to add new phase job to multi-job in Jenkins

對於 jenkins 中已經可用的多任務,需要使用 Groovy Scripting 添加新的階段任務。 我編寫了以下 groovy 代碼,它添加了一個已經存在的作業 p25_deploy-1。
此代碼正在創建多作業,但階段作業未在 Jenkins UI 中顯示為映射。 好像我看到它config.xml ,它按預期正確創建,除了標記<killPhaseOnJobResultCondition> 不確定為什么階段作業沒有正確映射?

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 中完成,而且還要修改現有的工作。

塊引用

耶! 我回來了,回答了我的問題。 已經嘗試了很長時間了。 終於能夠做到了。 我知道解決方案會非常簡單,但無法弄清楚它的黑客。

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 newphase = new
        PhaseJobsConfig(deploys[i],null,
            true,null,null,false,false,null,0,false,false,"",false,false)
            newphase.killPhaseOnJobResultCondition = 'NEVER'
            pj.add(newphase)    
    }
}
templateJob.save()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM