简体   繁体   English

使用 Jenkins 管道中的凭据签出 SVN?

[英]Checkout SVN with credentials in Jenkins pipeline?

How can I check out a Subversion repository that requires user credentials, via a Jenkins pipeline groovy script?如何通过 Jenkins 管道 groovy 脚本检出需要用户凭据的 Subversion 存储库? It appears that the built-in svn command doesn't support credentials, so I tried code like this:似乎内置的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"
    }
}

But this fails with但这失败了

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

What am I missing?我错过了什么?

You can use the Snippet Generator for General SCM step.您可以将代码段生成器用于一般 SCM步骤。 This displays the familiar Subversion configuration options, and takes credentials as parameter as usual.这将显示熟悉的 Subversion 配置选项,并像往常一样将凭据作为参数。

The Snippet Generator will produce a tad ugly representation of your parameter selections and looks something like this: 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']])

Notice that the remote section uses double quotes, so that the variable $SVN_BRANCH gets substituted correctly.请注意,远程部分使用双引号,以便正确替换变量 $SVN_BRANCH。

Just adding some screen shots for OltzU's answer:只需为 OltzU 的回答添加一些屏幕截图:

Step 1:第 1 步:

在此处输入图片说明

Step 2:第 2 步:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM