尝试使用
checkout scm: [$class: 'GitSCM',
userRemoteConfigs: [[url: '${repoURL}']],
branches: [[name: 'refs/tags/${tag-version}']]],poll: false
此操作因身份验证错误而失败。除了使用
之外还有什么办法吗?withCredentials
在Jenkins文件中签出标签
答案 0 :(得分:8)
花了几个小时后来到这里
在声明性管道中使用GitSCM的正确方法是
checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: repoURL, credentialsId: credential]], branches: [[name: tag-version]]],poll: false
不像我在网络的大多数地方找到的那样
checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: repoURL], [credentialsId: credential]], branches: [[name: tag-version]]],poll: false
答案 1 :(得分:1)
可能不相关,但变量表达式只用双引号字符串扩展,而不是单引号字符串。
答案 2 :(得分:0)
我希望它能像普通分支一样工作,你试过没有'refs / tags /'前缀吗?
答案 3 :(得分:0)
身份验证错误与标记无关 - 似乎有两个不同的问题。
您应该在credentialId
部分添加userRemoteConfigs
,因此:
checkout scm: [$class: 'GitSCM',
userRemoteConfigs: [[url: '${repoURL}'], [credentialsId: '${credential}']],
branches: [[name: '${tag-version}']]],poll: false
此外,您可以对变量使用以下格式:
checkout scm: [$class: 'GitSCM',
userRemoteConfigs: [[url: repoURL], [credentialsId: credential]],
branches: [[name: tag-version]]],poll: false
答案 4 :(得分:0)
我还必须引用凭证ID
stage('checkout') {
steps {
checkout([$class: 'GitSCM', branches: [[name: tagVersion]],
userRemoteConfigs: [[url: 'ssh://git@repo',
credentialsId: 'my-user-id']]
])
}
}
通知
“ my-user-id”是您在凭据页面上找到的条目的ID。
但这不是不是,您在gui的下拉选择框中看到的标题。
答案 5 :(得分:0)
如果不希望弄乱密码学的语法,我一直在使用这种解决方案来切换到专用标记或分支,尤其是当它是一个作业参数并且不清楚给定值是分支还是分支时。标签:
git(
credentialsId: '<your-cred-id>',
url: "<your-repo-url>"
)
sh(script:"""
git checkout \$(git rev-parse --verify ${GIVEN_BRANCH_OR_TAG})
""")
结果将处于分离头模式,但在大多数情况下,这都不是问题。