当前位置: 首页 > 面试题库 >

在Jenkins管道中使用凭证签出SVN?

翟缪文
2023-03-14
问题内容

如何通过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)
    ...

我想念什么?


问题答案:

您可以将 代码片段生成器 用于 常规SCM 步骤。这将显示熟悉的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被正确替换。



 类似资料:
  • 问题内容: 尝试使用 这将失败,并显示身份验证错误。除了使用以外还有其他方法吗 withCredentials 在Jenkinsfile中签出标签 问题答案: 花完之后,几个小时就到了 在声明式管道中使用GitSCM的正确方法是 不像我在网络上的大多数地方都找到的

  • 问题内容: 我正在使用jenkins管道(声明式synthax),并且想将提交推送到远程存储库。 有什么办法可以使用git插件来做到这一点吗?这是我目前正在尝试的方法: 但这不起作用。我收到以下错误: 有人可以帮忙吗?虽然问题出在密码中的特殊字符,但我不确定。 问题答案: 我们终于弄清楚了。问题很简单,我们在密码中包含特殊字符,这些特殊字符会破坏网址。 这是工作代码:

  • 问题内容: 我想使用scp / ssh将一些文件上传到服务器。我发现我需要使用基于证书的身份验证,但是问题是如何?我真正想做的就是使用与git一起使用的相同种类的凭据- 存储在Jenkins中的密码ssh证书。但是,我无法解决该问题-代码段生成器对此没有明显的选择。 别人做什么?是否有未记录的功能可以做到这一点? 问题答案: 如果安装SSH代理插件,则可以使用管道步骤在ssh- agent处于活动

  • 我有一个Jenkins的管道作业,它使用中的秘密值: 秘密值作为存储在凭据管理器中,ID为。我通过引用凭据管理器中的秘密文本来参数化我的Jenkins管道作业: 我试图在Jenkinsfile中读取此值,如上所示,但得到以下输出: 它只打印凭据的ID,而不是值。我认为这可能是一种Jenkins的安全机制,但是当我尝试对Freestyle作业做类似的事情时,我得到了一个屏蔽输出()。 但是,如果我在

  • 问题内容: 我有一个Jenkins 多分支 管道作业,它在中使用秘密值: 机密值作为机密文本存储在Credentials Manager中,其ID为: 我正在尝试如上所述在Jenkinsfile中读取此值,但得到以下输出,该输出打印出我的机密值: 我还尝试像这样在管道中引用秘密文本: 但是然后在运行Jenkins作业时出现此错误: 我认为我需要将该凭证绑定到该工作,但是我看不到针对多分支管道工作(

  • 我已经设置了一个Jenkins声明管道作业,它从Git中提取Jenkins文件。我有一个在另一个节点上运行的阶段(由标签选择),但它也试图从Git中检出Jenkinsfile。 我怎样才能阻止这种行为?这个特定的从属服务器位于防火墙的另一端,我只能通过SSH访问它。