2017-10-11 68 views
1

我有一個劇本的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

回答

0

在不同的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的設置