如何在构建配置的自定义脚本中获取teamcity.build.branch的第一个字符?

时间:2017-05-23 15:38:59

标签: github teamcity

我正在使用团队城市和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将“%%”中的所有内容视为参考参数,我们必须在构建配置中添加这些参数。

有没有人在这些用例中工作过?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果您想将%传递给TeamCity,则应escape将其%与其他%联系起来,即%%必须为%%,{ {1}}它必须是%%%%

答案 1 :(得分:0)

您正在将所有不同的分支构建塞进一个配置中,然后使用bat文件来触发构建的内容......听起来很复杂,也是TeamCity中VSC触发器的一个很好的选择。我可以采用一种合适的方法:

  1. 创建一个构建配置,然后为所需的分支名称创建一个VCS触发器以触发构建。
  2. 将该配置复制N次,为您要构建的每个分支复制一次,然后重新配置VSC触发器以获得正确的分支名称。
  3. 如果您想继续做您正在做的事情,请使用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"
    }