如何通过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访问它。