2017-02-09 176 views
1

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

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

我有以下脚本:

node { 

    checkout([$class: 'GitSCM', branch: [[name: '*feature/myProject*']], doGenerateSubmoduleConfigurations: false, extensions: [], gitTool: 'jgit', submoduleCfg: [], userRemoteConfigs: [[creadentialsId: 'XXXX', url: '[email protected]/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}"

我得到的同样的错误。

我不明白,为什么当我使用管道时该变量未被识别,但是否被识别?

+0

他们目前不在管道工作中。参见[JENKINS-35230](https://issues.jenkins-ci.org/browse/JENKINS-35230)。 – mkobit

回答

0

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

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

此命令有时返回HEAD而不是分支名称。 – ExuLeGeek

+0

由@omeka评论,这将返回我的测试HEAD。 – pat

0

你可以定义一个变量SCM并将其附加到您的结帐如:

scm: ... 
checkout scm: scm 

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