我正在使用团队城市和git。我试图在构建的分支名称的基础上采取不同的行动被触发。构建将从检入更改的分支触发。
我有分支名称,如US12345,F12345,DE12345,我想对这些不同的版本执行不同的测试。
为此,我添加了一个命令行步骤并尝试运行自定义脚本(Windwos批处理脚本)。这是脚本:
@ECHO OFF
echo "BRANCH Name: %teamcity.build.branch%"
SET BranchName="%teamcity.build.branch%"
if /I %%BranchName:~0,1%%==F (echo Working on a feature branch && <take action 1>)
if /I %%BranchName:~0,2%%==US (echo Working on a story branch && <take action 2>)
if /I %%BranchName:~0,2%%==DE (echo Working on a defect branch && <take action 3>)
if /I %%BranchName:~0,2%%==QA (echo Working on a QA1 branch && <take action 4>)
在上面的脚本中,首先我将当前分支名称的值赋给变量“BranchName”。
然后在第一个if条件中,我取出该变量的第一个字符并检查该字符是否等于F.如果这是真的那么我想执行一些设置为任务。
在第二个if条件中,我取出“BranchName”的前两个字符并检查它是否等于US?如果是,那么我会执行另一组不同的操作。
我想以第三和第四种方式做同样的事情。
现在的问题是,我无法在自定义脚本中获取变量的前几个字符,因为teamcity将“%%”中的所有内容视为参考参数,我们必须在构建配置中添加这些参数。
有没有人在这些用例中工作过?任何帮助将不胜感激。
答案 0 :(得分:0)
如果您想将%
传递给TeamCity,则应escape将其%
与其他%
联系起来,即%%
必须为%%
,{ {1}}它必须是%%%%
答案 1 :(得分:0)
您正在将所有不同的分支构建塞进一个配置中,然后使用bat文件来触发构建的内容......听起来很复杂,也是TeamCity中VSC触发器的一个很好的选择。我可以采用一种合适的方法:
如果您想继续做您正在做的事情,请使用PoSh而不是BAT脚本。添加PowerShell步骤,将脚本更改为“源代码”并在“脚本源”下输入:
$branch = "%teamcity.build.branch%"
if ($branch.StartsWith('F')) {
echo "Working on a feature branch $branch"
}
elseif ($branch.StartsWith('US')) {
echo "Working on a feature branch $branch"
}
elseif ($branch.StartsWith('DE')) {
echo "Working on a feature branch $branch"
}
elseif ($branch.StartsWith('QA')) {
echo "Working on a feature branch $branch"
}