【发布时间】:2026-02-07 09:00:01
【问题描述】:
我在 TeamCity 中有一个构建,我想在其中构建一个工件 zip 文件。
我可以使用Edit Configuration Settings => General Settings => Artifact Paths 来设置要压缩的文件和压缩文件名。
我想让名称更具描述性,TeamCity 允许我使用参数,例如:
out/mypackagedfiles/** => MyBuild_%build.number%.zip
会给我一个像MyBuild_46.zip这样的压缩文件。
我还想包括构建构建的分支。这也可用作 TeamCity 参数,但它包含正斜杠(例如 feature/my_great_feature)。因此,如果我在 Artifact Paths 配置中使用它,我会得到一个包含 zip 文件的目录:
out/mypackagedfiles/** => MyBuild_%build.number%_%vcsroot.branch%.zip
在名为MyBuild_46_feature 的目录中提供my_great_feature.zip。
我想做的是以某种方式从分支名称中删除/替换正斜杠以获取一个 zip 文件,例如 MyBuild_46_feature_my_great_feature.zip。
我不担心确切的格式 - 只要分支名称是可识别的。
关于可能存在的想法 - 但我还找不到:
- 创建一个新参数,该参数从
vcsroot.branch派生经过清理的分支名称 -
Artifact Paths配置中的某种字符串操作
== 编辑 ==
根据下面的 oryades 答案(类似于 linux bash 命令行),我将其转换为 PowerShell for Windows,如下所示:
- 设置工件以使用 %env.branch_name%(这还需要在“参数”选项卡中设置临时/虚拟值以运行构建)
- 使用运行器类型 = PowerShell 创建构建步骤
-
将脚本设置为源代码并粘贴以下内容:
$branch_name="%vcsroot.branch%".replace('/','_') echo "Sanitised branch for Artifact zip = " $branch_name echo "##teamcity[setParameter name='env.branch_name' value='$branch_name']"
请注意,TeamCity 允许您替换 %vcsroot.branch% - 这是在 PowerShell 运行之前发生的替换。感谢Team City and Power Shell 的提示
【问题讨论】: