TeamCity的是没能获得到位桶标签

问题描述:

我有一个剧本的build.gradle:TeamCity的是没能获得到位桶标签

buildscript { 
    repositories { 
     //some repo 

     dependencies { 
      classpath "com.palantir.gradle.gitversion:gradle-git-version:0.8.0" 
     } 
    } 
} 

apply plugin: 'com.palantir.git-version' 
version contructSemVer() 

def contructSemVer() { 
    try { 
     def details = versionDetails() 
     def semVer = details.lastTag + "-" + details.branchName + "." + details.gitHash 
    } 
    catch (ignored) { 
     return null; 
    } 
} 

gradle-git-version插件文档here,我建立一个semVer字符串的版本。然后,我用0.1.0在分支test-gradle上标记我的BitBucket。

当打电话gradle properties | findstr version本地在我的IntelliJ,我得到了正确的输出:version: 0.1.0-test-gradle.52cb23e4a0

但是,在运行上的TeamCity同样的事情时,第一semVer部分(details.lastTag)丢失,给我的版本是-test-gradle.52cb23e4a0似乎TeamCity无法拾取BitBucket标签,但可以拾取分支名称和最新提交SHA。

TeamCity中有没有我想念的设置?谢谢你,让我知道,如果你需要更多的细节

+0

我想这取决于你的TeamCity设置,很难说没有看到他们脱落多灯。我想这个标签在你构建的克隆上不可用,因此不能被该插件看到。 – Vampire

+0

在'Edit VCS Root'设置中,我选中了'Use tags as branches'框。同样在'分支规范'中,我把'+:refs/heads/*'放在所有分支上。此外,标签在TeamCity构建的** test-gradle **分支上可见。 – hydradon

+0

我对Git和TeamCity没有任何经验,但对于我的复选框的描述意味着您可以在该输入字段中使用标记参考,而不是标记是制作分支或不一定是它们在代理上获取。 – Vampire

在不同的TeamCity设置一些更多的尝试后,我尝试另一种方法来获取最新的Git标签

def contructSemVer() { 
    try { 
     def details = versionDetails() 
     def semVer = getVersionFromTag() + "-" + details.branchName + "." + details.gitHash 
    } 
    catch (ignored) { 
     return null; 
    } 
} 

def getVersionFromTag() { 
    def stdout = new ByteArrayOutputStream() 
    exec { 
     commandLine 'git', 'describe', '--abbrev=0' 
     standardOutput = stdout 
    } 
    return stdout.toString().trim() 
} 

因此,而不是使用details.lastTag的,我使用我自己的方法来检索它。它现在在TeamCity build中正确显示。

也感谢@Vampire对许多TeamCity的设置