You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TeamCity中让A获取B的构建编号且不触发B构建

解决TeamCity中构建配置A引用B的构建编号且不触发B重构的问题

快照依赖之所以不适用,是因为它本质是基于版本控制的快照关联,默认会检查依赖项的变更并触发构建,不符合你“不触发B重构、仅用B最新构建编号”的需求。下面是几个可行的方案:

方案1:使用工件依赖(Artifact Dependency)

这是最直接的官方方案,无需额外脚本:

  • 打开构建配置A的设置,进入Dependencies标签页
  • 添加新的Artifact Dependency,选择构建配置B
  • 在"Build to use"选项中选择Latest successful build(也可根据需求选Latest finished等)
  • 关键操作:在"Options"区域,取消勾选Trigger a build on dependency,确保A构建时不会触发B的新构建
  • 配置完成后,A的构建参数中会自动注入B的构建编号,你可以在构建步骤中直接使用变量%dep.<B的构建配置ID>.build.number%(将<B的构建配置ID>替换为实际值,比如B的ID是MyProject_B,就用%dep.MyProject_B.build.number%)

方案2:通过TeamCity REST API获取B的最新构建编号

如果需要更灵活的控制,可在A的构建步骤中调用API获取:

  • 在A的脚本步骤(如Shell/PowerShell)中添加请求命令,示例(Shell):
    B_BUILD_NUMBER=$(curl -u %system.teamcity.auth.userId%:%system.teamcity.auth.password% "http://<你的TeamCity服务器地址>/app/rest/builds/buildType:<B的构建配置ID>,status:SUCCESS,count:1" | grep -oP '(?<=<number>).*?(?=</number>)')
    echo "##teamcity[setParameter name='b.build.number' value='$B_BUILD_NUMBER']"
    
  • 上述命令会获取B最新成功构建的编号,并用TeamCity服务消息将其设置为A的构建参数,后续步骤直接用%b.build.number%即可
  • 注意:确保构建代理能访问TeamCity服务器,且内置的%system.teamcity.auth.userId%和%system.teamcity.auth.password%有足够权限读取构建信息

方案3:配置依赖属性传递

如果已使用工件依赖,可显式配置属性传递让变量更直观:

  • 在A的工件依赖设置中,找到Properties and environment variables区域
  • 添加新属性,名称填b.build.number,值填%dep.<B的构建配置ID>.build.number%
  • 完成后A的构建参数中会生成这个自定义变量,后续步骤直接调用即可

内容的提问来源于stack exchange,提问作者Milad Sadeghi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:05:11