Git TeamCity在工件zip名称中显示分支

Git TeamCity在工件zip名称中显示分支,git,teamcity,branch,Git,Teamcity,Branch,我在TeamCity中有一个构建,我想在其中构建一个工件zip文件 我可以使用Edit Configuration Settings=>General Settings=>Artifact path设置要压缩的文件和压缩文件名 我希望名称更具描述性,TeamCity允许我使用参数,例如: out/mypackagedfiles/** => MyBuild_%build.number%.zip 将给我一个zip文件,如MyBuild\u 46.zip 我还想包括构建的分支。这也可用作Tea

我在TeamCity中有一个构建,我想在其中构建一个工件zip文件

我可以使用
Edit Configuration Settings=>General Settings=>Artifact path
设置要压缩的文件和压缩文件名

我希望名称更具描述性,TeamCity允许我使用参数,例如:

out/mypackagedfiles/** => MyBuild_%build.number%.zip
将给我一个zip文件,如
MyBuild\u 46.zip

我还想包括构建的分支。这也可用作TeamCity参数,但它包含正斜杠(例如,
功能/my_great_功能
)。因此,如果我在
工件路径
配置中使用它,我会得到一个包含zip文件的目录:

out/mypackagedfiles/** => MyBuild_%build.number%_%vcsroot.branch%.zip
它在名为
MyBuild\u 46\u feature
的目录中提供了
myu great\u feature.zip

我想做的是以某种方式删除/替换分支名称中的正斜杠,以获得一个zip文件,例如
MyBuild\u 46\u feature\u my\u great\u feature.zip

我不担心确切的格式-只要分支名称是可识别的

可能存在的想法-但我还找不到:

  • 创建一个新参数,该参数从
    vcsroot.branch
  • 工件路径
    配置中的某种字符串操作
==编辑==

根据下面的回答(看起来像linux bash命令行),我将其转换为Windows PowerShell,如下所示:

  • 设置工件以使用%env.branch\u name%(这还需要在参数选项卡中设置临时/伪值,以便运行生成)
  • 使用runner type=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运行之前发生的替换。感谢此技巧,您可以在构建过程中创建env变量,只需创建包含以下内容的构建步骤:

    branch_name=$(echo %vcsroot.branch% | sed 's/\//_/')
    echo "##teamcity[setParameter name='env.branch_name' value='$branch_name']"
    
    在下一个生成步骤中,可以使用%env.branch\u name%作为具有所需值的变量


    谢谢,这太棒了。在对上述原始问题进行编辑时,我将其转换为PowerShell版本,因为这更适合我。