2016-04-27 12 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

スニペットジェネレータ一般SCMステップに使用できます。これは使い慣れたSubversionの設定オプションを表示し、いつものように資格情報をパラメータとして受け取ります。

スニペットジェネレータは、あなたのパラメータの選択の少し醜い表現を生成し、このようなものに見えるでしょう:変数$ SVN_BRANCHが正しく置換されますようにリモートセクションでは、二重引用符を使用していることを

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

はお知らせ。

+0

Hrm ..これはうまくいくように見えますが、$ SVN_BRANCH(ビルドパラメータ)は展開されないので、まだ動作していません。一度私はそれを把握// – naught101

+0

私は 'リモート: 'https://trac.nci.org.au/svn/cable/branches/' + SVN_BRANCH'を使用すると、これは動作します。ありがとう! – naught101

+3

投稿の最後で述べたように、Groovyがstring内の変数を展開するには二重引用符を使用する必要があります。 – OltzU

関連する問題