我在TeamCity中有一个构建,我想构建一个工件zip文件。
我可以使用Edit Configuration Settings => General Settings => Artifact Paths
设置要压缩的文件和zip文件名。
我想让名称更具描述性,TeamCity允许我使用参数,例如:
out/mypackagedfiles/** => MyBuild_%build.number%.zip
会给我一个像MyBuild_46.zip
这样的zip文件。
我还希望包含构建构建的分支。这也可以作为TeamCity参数使用,但它包含正斜杠(例如feature/my_great_feature
)。因此,如果我在Artifact Paths
配置中使用它,我会得到一个包含zip文件的目录:
out/mypackagedfiles/** => MyBuild_%build.number%_%vcsroot.branch%.zip
在名为my_great_feature.zip
的目录中提供MyBuild_46_feature
。
我想做的是以某种方式删除/替换分支名称中的正斜杠以获取一个zip文件,例如MyBuild_46_feature_my_great_feature.zip
。
我不担心确切的格式 - 只要分支名称是可识别的。
可能存在的想法 - 但我还无法找到:
vcsroot.branch
Artifact Paths
配置==编辑==
根据下面的oryades答案(看起来像 linux bash 命令行),我将其转换为 PowerShell for Windows ,如下所示:
将脚本设置为源代码并粘贴以下内容:
$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获得此提示
答案 0 :(得分:5)
您可以在构建期间创建env变量,只需使用以下内容创建构建步骤:
branch_name=$(echo %vcsroot.branch% | sed 's/\//_/')
echo "##teamcity[setParameter name='env.branch_name' value='$branch_name']"
在下一个构建步骤中,您可以使用%env.branch_name%作为具有所需值的变量。
https://confluence.jetbrains.com/display/TCD10/Build+Script+Interaction+with+TeamCity