TeamCity 无法获取 BitBucket 标签

TeamCity is not able to get BitBucket tag

我有一个 build.gradle 脚本:

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 字符串。然后我在分支 test-gradle 上用 0.1.0 标记了我的 BitBucket。

在我的 IntelliJ 上本地调用 gradle properties | findstr version 后,我得到了正确的输出:version: 0.1.0-test-gradle.52cb23e4a0

但是,在TeamCity上运行同样的东西时,semVer的第一部分(details.lastTag)不见了,我得到的版本是-test-gradle.52cb23e4a0好像TeamCity 无法获取 BitBucket 标签,但可以获取分支名称和最新提交 SHA。

TeamCity 中是否有我遗漏的任何设置?谢谢,如果您需要更多详细信息,请告诉我

在尝试不同的 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 构建中正确显示。

还要感谢@Vampire 对许多 TeamCity 设置进行了大量阐述