2016-04-27 100 views
9

Bir Jenkins pipeline groovy komut dosyasıyla kullanıcı kimlik bilgileri gerektiren bir Subversion deposunu nasıl kontrol edebilirim? Yerleşik olduğu svn komuta kimlik desteklemediği anlaşılıyor, bu yüzden böyle bir kod çalıştı:Jenkins boru hattındaki kimlik bilgileri ile SVN Checkout?

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" 
    } 
} 

Ama bu

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) 
    ... 

ben eksik ile başarısız?

cevap

19

Sen Genel SCM adım için Pasaj Generator kullanabilirsiniz. Bu, tanıdık Subversion yapılandırma seçeneklerini görüntüler ve kimlik bilgilerini her zamanki gibi parametre olarak alır.

Pasaj Jeneratör Parametreniz seçimleri biraz çirkin temsilini üretmek ve şuna benzer olacaktır: değişken $ SVN_BRANCH doğru ikame alır, böylece uzaktan bölüm çift tırnak kullanır

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']]) 

Bildirimi .

+0

Hrm .. Bu işe yarayacak gibi görünüyor, ama $ SVN_BRANCH (bir yapı parametresidir) genişlemiyor, bu yüzden henüz çalışmaya çalışmadım. Bunu anladığımda // – naught101

+0

Tamam, 'remote:' https://trac.nci.org.au/svn/cable/branches/ '+ SVN_BRANCH' kullandığımda bu işe yarar. Teşekkürler! – naught101

+3

Yazının sonunda bahsettiğim gibi, Groovy için dizgideki değişkeni genişletmek için "çift tırnak" kullanmanız gerekir. – OltzU