如何从 TeamCity 获取 teamcity.build.branch

问题描述 投票:0回答:1

我需要检索 teamcity.build.branch 的值并将其用作 ANDROID 应用程序的 versionName。我尝试使用以下方法访问此参数:

    project.findProperty("teamcity.build.branch")
    
    if (hasProperty("teamcity")) {
        teamcity["teamcity.build.number"]
         or 
        teamcity["vcsroot.branch"]
    }
    
    System.getenv('teamcity.build.branch')

但是,这些方法都不适合我。

我尝试记录 System.getenv 和 project.properties 中的所有属性,但找不到“branch”属性。

在 TeamCity 属性选项卡中,我可以看到 teamcity.build.branch,因此该属性存在,但我找不到访问它的方法。

android gradle groovy teamcity
1个回答
0
投票

它不是环境变量(因此

System.getenv
无法获取它),也不是
system.
属性,因此它不会自动传递给构建运行程序。

您有多种选择:

  • 通过 CLI 将其传递给您的构建工具(我认为是 Gradle),如下所示:

      ... -Dteamcity.build.branch=%teamcity.build.branch%
    

    然后我想您将能够像您已经做的那样在构建脚本中处理它。

  • 将其设为环境变量,以便您的构建可以选择它。这也可以通过两种方式完成:

    • 在构建配置属性中,定义以
      env.
      开头的属性,例如
      env.APP_VERSION
      并将其设置为
      %teamcity.build.branch%
      或您使用的任何模式
    • 直接在运行构建的脚本中,例如,如下所示:
      APP_VERSION=%teamcity.build.branch% gradle ...
      

    在这些情况下,您可以使用类似

    System.getenv('APP_VERSION')
    之类的东西来使用它。

  • 如果您使用 Gradle 构建运行程序,则可以使用

    gradle.properties
    并按照下面的文档引用
    env.
    system.
    参数。您需要在构建配置中创建相应的属性,并将其设置为包含
    %teamcity.build.branch%
    的值。

TeamCity 文档的配置构建参数部分提供了有关此内容的更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.