2016-04-27 40 views
9

如何通過Jenkins管道groovy腳本檢出需要用戶憑證的Subversion存儲庫?看來,內置svn命令不支持的憑據,所以我想這樣的代碼:在Jenkins管道中籤出具有憑據的SVN?

node { 
    stage 'checkout' 
    withCredentials([[$class: 'UsernamePasswordMultiBinding', 
         credentialsId: '34761a89-1402-47d7-96e2-aec22ffdc50b', 
         usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) { 
     sh "svn co https://trac.nci.org.au/svn/cable/branches/$SVN_BRANCH --username $USERNAME --password $PASSWORD cable_branch" 
    } 
} 

但這種失敗

groovy.lang.MissingPropertyException: No such property: USERNAME for class: groovy.lang.Binding 
    at groovy.lang.Binding.getVariable(Binding.java:63) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:224) 
    at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:221) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:23) 
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:17) 
    at WorkflowScript.run(WorkflowScript:5) 
    at ___cps.transform___(Native Method) 
    ... 

我缺少什麼?

回答

19

您可以使用Snippet Generator for General SCM step。這將顯示熟悉的Subversion配置選項,並像往常一樣將憑據作爲參數。

的片段發生器會產生你的參數選擇的一點點醜表示,看起來是這樣的:

checkout([$class: 'SubversionSCM', 
      additionalCredentials: [], 
      excludedCommitMessages: '', 
      excludedRegions: '', 
      excludedRevprop: '', 
      excludedUsers: '', 
      filterChangelog: false, 
      ignoreDirPropChanges: false, 
      includedRegions: '', 
      locations: [[credentialsId: '34761a89-1402-47d7-96e2-aec22ffdc50b', 
         depthOption: 'infinity', 
         ignoreExternalsOption: true, 
         local: 'cable_branch', 
         remote: "https://trac.nci.org.au/svn/cable/branches/$SVN_BRANCH"]], 
      workspaceUpdater: [$class: 'UpdateUpdater']]) 

注意,遠程部分使用雙引號,所以變量$ SVN_BRANCH被正確地取代。

+0

Hrm ..這看起來像它會工作,但$ SVN_BRANCH(這是一個構建參數)不擴展,所以我還沒有設法讓它工作。一旦我弄清楚了// – naught101

+0

好的,當我使用'remote:'https://trac.nci.org.au/svn/cable/branches/'+ SVN_BRANCH'時,這是有效的。謝謝! – naught101

+3

正如我在文章末尾提到的,您需要使用Groovy的「雙引號」來擴展字符串內部的變量。 – OltzU