【问题标题】:${GIT_BRANCH} not recognized by JenkinsJenkins 无法识别 ${GIT_BRANCH}
【发布时间】:2017-02-09 12:42:59
【问题描述】:

我有一个使用变量 ${GIT_BRANCH} 的 Jenkins 作业,它工作正常。

我尝试使用 Jenkins 管道而不是 Job。

我有以下脚本:

node {

   checkout([$class: 'GitSCM', branch: [[name: '*feature/myProject*']], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'jgit', submoduleCfg: [], userRemoteConfigs: [[creadentialsId: 'XXXX', url: 'git@myrepo.com/myProject.git']]])

   echo "${GIT_BRANCH}"  
}

为此,我得到:

groovy.lang.MissingPropertyException: No such property: GIT_BRANCH for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java: 63)

如果我将最后一行更改为:

echo "${env.GIT_BRANCH}"

我得到同样的错误。

我不明白,为什么我使用管道时无法识别变量,但其他情况下可以识别?

【问题讨论】:

标签: git jenkins groovy jenkins-pipeline


【解决方案1】:

这似乎是管道中的一个已知错误,我已经看到它工作,更新发生它停止工作,我厌倦了它并开始自己设置它。

def branch = sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()

【讨论】:

  • 此命令有时会返回 HEAD 而不是分支名称。
  • 正如@omeka 评论的那样,这会在我的测试中返回 HEAD。
【解决方案2】:

您可以定义一个 scm 变量并将其附加到您的结帐中,例如:

scm: ... 
checkout scm: scm

然后您可以从scm 变量中访问很多属性,包括分支信息。

【讨论】:

  • 哪个属性给出了分支名称?
猜你喜欢
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
相关资源
最近更新 更多