TeamCity在工件邮政名称

时间:2017-03-21 09:22:44

标签: git teamcity branch

我在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 ,如下所示:

  1. 设置工件以使用%env.branch_name%(这还需要在“参数”选项卡中设置临时/虚拟值,以便运行构建)
  2. 使用runner type = PowerShell
  3. 创建构建步骤
  4. 将脚本设置为源代码并粘贴以下内容:

    $branch_name="%vcsroot.branch%".replace('/','_')
    echo "Sanitised branch for Artifact zip = " $branch_name
    echo "##teamcity[setParameter name='env.branch_name' value='$branch_name']"
    
  5. 请注意,TeamCity允许您替换%vcsroot.branch% - 这是在PowerShell运行之前发生的替换。感谢Team City and Power Shell获得此提示

1 个答案:

答案 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