【问题标题】:TeamCity build.counter parameter in build.xmlbuild.xml 中的 TeamCity build.counter 参数
【发布时间】:2014-07-01 10:42:52
【问题描述】:

似乎 TeamCity 参数 ${build.counter} 在我们的 ant build.xml 中没有解析。我们有:

<replaceregexp 
        file="AndroidManifest.xml"
        match='android:versionCode="(.*)"'
        replace='android:versionCode="${build.counter}"'
/>

这会引发错误:

不允许使用字符串类型(在 'versionCode' 处,值为 '${build.counter}')

看起来它正在将参数“${build.counter}”作为文字字符串。

使用另一个 TeamCity 整数参数代替 ${build.counter},例如 ${teamcity.build.id},可以正常工作。

有人知道为什么会这样吗?

更新

感谢 Biswajit_86 的回答。这里也是我的related discussion with JetBrains:

【问题讨论】:

  • 你确定这个属性完全解析了吗​​?尝试在此步骤之前添加&lt;echo&gt;${build.counter}&lt;/echo&gt;。一个随机的挑剔:您的正则表达式替换不使用捕获组引用,因此您的匹配模式不需要括号。
  • @CAustin - 你是对的!这给了我“步骤 2/2] echo ${build.counter}”。那么为什么当其他属性解析时这个属性不解析呢?
  • 老实说,我对 TeamCity 一无所知。这就是你所有财产的来源,对吧?看起来保存这些属性的文件格式错误,好像它包含build.counter=Step 2/2] echo ${build.counter} 或类似的东西。
  • 那是您的 echo 线路生成的日志。 TeamCity 在运行时生成这些属性。
  • 对 Jetbrains 提出了很好的要求,我赞成。

标签: android ant teamcity teamcity-8.0


【解决方案1】:

您的构建文件根本不知道 build.counter 的值。他们只能读取系统属性,但 build.counter 是一个配置参数。

为此,请声明一个名为 system.BUILD.COUNTER 的系统参数,其值为 %build.counter% 并将其传递给您的目标。如果您将 abnt build.xml 更改为 ${BUILD.COUNTER},它将正常工作

构建参数部分 system.BUILD.COUNTER %build.counter%

构建xml文件

<replaceregexp 
        file="AndroidManifest.xml"
        match='android:versionCode="(.*)"'
        replace='android:versionCode="${BUILD.COUNTER}"'
/>

【讨论】:

  • 这看起来很有趣,但是其他的像 teamcity.build.id 和 build.number 呢。他们在 build.xml 中解决得很好。它们和 build.counter 有区别吗?
  • 你有使用build.id的例子吗? build.number 由 teamcity 发布为系统属性和环境变量
【解决方案2】:

Ant 不会直接读取 teamctiy 变量。您需要在您的 ant 项目中创建一个类似的 build.counter 属性,例如:

<property name="build.conuter" value=""/>

并从 Teamcity 构建步骤传递其值,例如:

【讨论】:

  • 我们不需要定义属性 build.counter ,因为它将设置为空字符串,以后不会更改
  • 它的值需要从 Teamcity 在 Additional Ant 命令行参数中传递,这将覆盖默认的空白值。
  • true,但我认为var ant-contrib 任务需要提供哪些属性。另外,如果不使用 ant 命令行,则可以将其设置为带有 env 变量的附加自定义变量,该变量可以在 build.xml 中使用 ${env.BUILD_COUNTER} 检索
  • 我的意思是重置不存在
猜你喜欢
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多