web-dev-qa-db-ja.com

Jenkinsパイプラインの資格情報でSVNをチェックアウトしますか?

Jenkinsパイプラインgroovyスクリプトを介して、ユーザー資格情報を必要とするSubversionリポジトリをチェックアウトするにはどうすればよいですか?組み込みの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)
    ...

私は何が欠けていますか?

14
naught101

スニペットジェネレータGeneral SCMステップに使用できます。これにより、おなじみのSubversion設定オプションが表示され、通常どおりパラメーターとして資格情報が使用されます。

Snippet Generatorは、パラメーター選択の少しい表現を生成し、次のようになります。

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

remoteセクションでは二重引用符が使用されているため、変数$ SVN_BRANCHが正しく置換されることに注意してください。

30
OltzU

OltzUの答えにスクリーンショットを追加するだけです。

ステップ1:

enter image description here

ステップ2:

enter image description here

3
Robin Qiu