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

如何使用TeamCity REST API动态遍历快照依赖作业参数

动态获取TeamCity快照依赖作业的方案

可用的TeamCity REST API接口

TeamCity提供了直接获取当前构建快照依赖的REST接口,完全可以实现你的需求:

获取当前构建的快照依赖列表

在Build A的构建步骤中,调用以下接口即可获取所有快照依赖的构建信息:

  • 接口路径:/app/rest/builds/id:{currentBuildId}/snapshot-dependencies
  • 其中{currentBuildId}直接用TeamCity内置参数%teamcity.build.id%替换,无需手动指定。

示例curl请求(在CentOS7构建步骤中执行):

curl -u "%teamcity.auth.userId%:%teamcity.auth.password%" "%teamcity.serverUrl%/app/rest/builds/id:%teamcity.build.id%/snapshot-dependencies"

请求默认返回XML格式,添加-H "Accept: application/json"可以获取JSON格式结果,方便脚本解析。

解析依赖列表并动态构造参数

拿到依赖列表后,用脚本解析提取作业名称,再动态构造%dep.{jobName}.param%格式的参数引用。

示例bash脚本(需安装jq处理JSON):

# 获取JSON格式的依赖列表
DEPENDENCIES=$(curl -u "%teamcity.auth.userId%:%teamcity.auth.password%" -H "Accept: application/json" "%teamcity.serverUrl%/app/rest/builds/id:%teamcity.build.id%/snapshot-dependencies")

# 遍历每个依赖作业的名称
for JOB_NAME in $(echo "$DEPENDENCIES" | jq -r '.build[] | .buildType.name'); do
    # 构造参数名并获取对应值
    PARAM_REF="%dep.$JOB_NAME.param%"
    # 这里可根据业务需求处理参数值,比如存入变量、执行逻辑等
    echo "依赖作业[$JOB_NAME]的参数值:$PARAM_REF"
done

如果用XML格式解析,可使用xmllint工具提取节点内容,示例片段:

# 获取XML格式的依赖列表
DEPENDENCIES=$(curl -u "%teamcity.auth.userId%:%teamcity.auth.password%" "%teamcity.serverUrl%/app/rest/builds/id:%teamcity.build.id%/snapshot-dependencies")

# 提取所有依赖作业名称
JOB_NAMES=$(echo "$DEPENDENCIES" | xmllint --xpath '//build/buildType/@name' - | grep -oP 'name="\K[^"]+')

for JOB_NAME in $JOB_NAMES; do
    PARAM_REF="%dep.$JOB_NAME.param%"
    echo "依赖作业[$JOB_NAME]的参数值:$PARAM_REF"
done

关键注意事项

  • 确保执行脚本的构建代理已安装curl、jq(或xmllint)工具,CentOS7下可通过yum install curl jq libxml2安装。
  • 构建服务账号需具备View build configuration权限,否则API请求会返回权限错误。
  • TeamCity内置的%teamcity.auth.userId%和%teamcity.auth.password%会自动填充认证信息,无需硬编码账号密码,避免安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:35:18