簡體   English   中英

Jenkins使用groovy腳本在作業上設置了SCMCheckoutStrategy

[英]Jenkins set SCMCheckoutStrategy on jobs using groovy script

從TeamCity遷移到Jenkins,我在jenkins控制台上使用了一個時髦的腳本來設置我的所有工作。 我使用大多數必需的設置來設置作業“ template.example”,然后運行以下代碼:

void createJobs() {
    def jenkins = jenkins.model.Jenkins.getInstance()
    def template = jenkins.getItem("template.example")
    if (!template) {
        println("FATAL - template job not found")
        return
    }

    def projects = [ "projectname" : "svn://hostname/path" ]
    projects.each() { key, svn ->
        def jobid = "${key}.checkin"
        println "\nCreating job: ${jobid}"
        try {
            def job = jenkins.copy(template,jobid)
            job.scm = new hudson.scm.SubversionSCM(svn)
            job.save()
            println("Created job: ${jobid} ${svn}")
        } catch (Exception ex) {
            println("Failed to create job: ${jobid}\n    "+ex.toString())
        }
    }
}

我的問題是,我希望SCM結帳策略不是默認的“盡可能多地使用svn更新”。 “通過首先刪除未版本控制的文件來模擬干凈的結帳...”,並且不會從template.example項目中復制該內容。

我嘗試使用以下方法閱讀SCM策略

def strategies = jenkins.scm.SCMCheckoutStrategyDescriptor.all()
strategies.each() { k -> println("strategy: "+k.getDisplayName()

但這只會返回一個策略“默認”。 其他策略在哪里,以及如何在項目中設置所需的策略(其中有100多個,因此手動執行此操作不是一種選擇)。

我還需要以某種方式在每個項目上設置svn用戶名和密碼。

一種替代方法是修改復制的示例job.scm上的svnURL而不是替換它,這可能還具有保留配置的用戶名和密碼的優點。 但是,如何在代碼中做到這一點呢?

謝謝,愛德。

您要更改的SCM策略實際上作為hudson.scm.subversion.WorkspaceUpdater駐留在hudson.scm.SubversionSCM對象中。

代碼中的scm對象應具有setWorkspaceUpdater()方法,可用於設置所需的SCM策略。

SCM策略是WorkspaceUpdater:子類WorkspaceUpdater: http WorkspaceUpdater: //grepcode.com/search/usages? WorkspaceUpdater: repo1.maven.org$maven2@org.jvnet.hudson.plugins$subversion@2.0.0@hudson$scm$subversion@ WorkspaceUpdater&開始= 0&類型=類型&K = d

嘗試復制新代碼發布的版本時,自己遇到此問題。 瀏覽了許多metaClass信息,以找到設置此行為的正確方法。

暫無
暫無

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

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