我正在使用以下代码:
sshagent(['creds_ssh'])
{
sh("""
git tag -l
git tag -a ${tagNm} -m "git tag ${tagNm}"
git push origin ${tagNm}
""")
}
这非常适合常规管道作业。提交后,它将标记提交并推送标记。但是,对多分支管道使用相同的代码会失败并出现错误
fatal: Failed to resolve 'HEAD' as a valid ref.
这是多分支詹金斯管道的某些已知限制吗?
答案 0 :(得分:0)
我确实想出了一种方法,可以在Jenkinsfile中为多分支管道推送git标签。
如果您在多分支管道中使用GitHub作为选项,则不能使用sshagent,因为URL限于HTTPS。
这意味着我们需要使用HTTPS URL与管道中的git进行交互。
我们需要您的GitHub用户名和密码作为Jenkins credentia。完成后,您可以引用该凭证。
我在管道文件中将env.VERSION设置得更高。
steps {
withCredentials([usernamePassword(credentialsId: 'your-github-username-and-password-cred-id', usernameVariable: 'ACCESS_TOKEN_USERNAME', passwordVariable: 'ACCESS_TOKEN_PASSWORD')]) {
sh('git checkout master')
sh("git pull https://${ACCESS_TOKEN_USERNAME}:${ACCESS_TOKEN_PASSWORD}@github.com/repo_url.git master")
sh("git tag ${env.VERSION}")
sh("git push https://${ACCESS_TOKEN_USERNAME}:${ACCESS_TOKEN_PASSWORD}@github.com/repo_url.git ${env.VERSION}")
}
}