在 Jenkins 上获取 Gradle 中的 Git 工作分支

Get the Git Working Branch in Gradle on Jenkins

我想在我的 Android 应用程序的版本名称中包含当前的 Git 分支。我将 here 中的这个片段构建到我的 build.gradle 中:

def getWorkingBranch() {
    // Triple double-quotes for the breaklines
    def workingBranch = """git --git-dir=${rootDir}/git
                               --work-tree=${rootDir}/..
                               rev-parse --abbrev-ref HEAD""".execute().text.trim()
    print "Working branch: " + workingBranch
    return workingBranch
}

该片段已按照文章第一条评论中的建议稍作改动。

当我在本地构建我的应用程序时,它工作正常,但当应用程序是使用 Jenkins 构建时,它工作正常。我还尝试了片段的原始变体,在这两种情况下 workingBranch 字符串都是空的。

Jenkins 似乎是它构建的分支的 'aware',它列出了

下的分支

Git Build Data / Built Branches

,所以应该可以

如果这仅适用于 testers/downstream,使用 Jenkins 的 Git environment variables 怎么样,例如$GIT_BRANCH?

在本地,当您构建时它不会显示 version/empty,但是当您在 Jenkins 上构建时它会在您的 'version' 字符串中显示正确的分支名称。

要避免本地构建生成空字符串,您可以使用上面的代码片段将分支设置为 GIT_BRANCH。不完美,但应该可以。