如何在TeamCity构建步骤中选择分支?

时间:2015-12-04 11:38:04

标签: git teamcity

我正在尝试使用参数设置构建,此参数在少数构建步骤中使用,它描述了Jira票号,来自Jira。

现在问题是我需要用这个票号来改进这个构建到checkout分支,或者如果我没有这样的名称的分支 - 在master分支上运行build。

我无法使用“更改”选项卡作为其完全自动化的过程。 我也不能在构建步骤中使用git命令。

是否有可能在构建步骤的脚本中从VCS和setup checkout分支中获取构建步骤的所有分支列表?

使用TeamCity版本9.1.1。谢谢你,祝你有个愉快的一天。

使用git解决方案:

  • 设置依赖作业结帐规则以结帐代理
  • 在依赖构建中添加构建步骤:

    #!/usr/bin/env bash
    
    test_branch=`git branch -a | tr -d "remotes/origin/" | grep %default_branch%`
    
    if [ -z "$test_branch" ]; then
      test_branch="master"
      echo "Switching to branch: " $test_branch
      ruby -e "puts \"##teamcity[setParameter name='default_branch' value='$test_branch']\""
    else
      echo "Switching to branch: " $test_branch
      ruby -e "puts \"##teamcity[setParameter name='default_branch' value='%default_branch%']\""
    fi
    

我正在寻找允许我避免使用git的TC功能。只是为了检查我们是否在+:refs/heads/*中有这样的分支。

2 个答案:

答案 0 :(得分:1)

半解决方案(使用git):

  1. 在城市代理商处设置结帐。
  2. 在代理商上设置git。
  3. 使用发布的bash命令创建构建步骤。
  4. 使用参数触发构建。
  5. 根据我的理解,此解决方案的问题是,如果构建已在队列中,则无法将参数发送到VCS根目录。它只能在触发时才能设置。 同样在TeamCity的分支列中,不会显示任何个性化分支,只有< default>无论你跑什么。

    解决方案二:

    1. 创建参数reverse.dep.*.teamcity.build.branch
    2. 使用参数触发构建。
    3. 此参数将发送以检查构建链中的所有构建。 TeamCity将尝试使用此参数检出分支,如果它不存在,它将检出默认(主)分支。 对于所有相关构建,TeamCity中分支列的副作用将显示此参数。

      所以现在解决方案#2解决了我的问题。

答案 1 :(得分:0)

您可以查看此文档,其中介绍了如何正确配置VCS ROOT和作业以使用功能分支(针对您的用例的故障单分支): https://confluence.jetbrains.com/display/TCD9/Working+with+Feature+Branches