2017-02-09 213 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變量訪問很多的屬性,包括分支信息。