多分支管道的Git Push标签

时间:2018-08-31 20:52:25

标签: git jenkins jenkins-pipeline git-tag

我正在使用以下代码:

  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.

这是多分支詹金斯管道的某些已知限制吗?

1 个答案:

答案 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}")
            }
        }