如何在 TeamCity 构建步骤中选择分支?
How to choose branches in TeamCity build step?
我正在尝试使用参数设置构建,这个参数在几个构建步骤中使用,它描述了 Jira 票号,并且来自 Jira。
现在的问题是我需要改进此构建以使用此票号检查分支,或者如果我没有具有此类名称的分支 - 运行 在 master 分支上构建。
我不能将 Changes 选项卡用作其完全自动化的过程。
我也不能在构建步骤中使用 git 命令。
是否可以在构建步骤中获取来自 VCS 的所有分支的列表并在构建步骤的脚本中设置结帐分支?
使用 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/*
.
中是否有这样的分支
您可以查看此文档,其中描述了如何正确配置 VCS ROOT 和作业以使用功能分支(您的用例的票证分支):
https://confluence.jetbrains.com/display/TCD9/Working+with+Feature+Branches
半解一(使用git):
- 在团队城市代理上设置结账。
- 在代理上设置 git。
- 使用有问题的 bash 命令创建构建步骤。
- 使用参数触发构建。
这个解决方案有问题,据我所知,如果构建已经在队列中,则该参数无法发送到 VCS root。它只能在触发时设置。
同样在 TeamCity 的分支列中,不会显示任何个性化分支,只有 任何你想要的 运行.
方案二:
- 创建参数
reverse.dep.*.teamcity.build.branch
- 使用参数触发构建。
此参数将发送构建链中所有构建的结帐。
TeamCity 将尝试使用此参数检出分支,如果它不存在,它将检出默认(主)分支。
作为副作用,TeamCity 中所有相关构建的分支列将显示此参数。
所以现在解决方案 #2 解决了我的问题。
我正在尝试使用参数设置构建,这个参数在几个构建步骤中使用,它描述了 Jira 票号,并且来自 Jira。
现在的问题是我需要改进此构建以使用此票号检查分支,或者如果我没有具有此类名称的分支 - 运行 在 master 分支上构建。
我不能将 Changes 选项卡用作其完全自动化的过程。
我也不能在构建步骤中使用 git 命令。
是否可以在构建步骤中获取来自 VCS 的所有分支的列表并在构建步骤的脚本中设置结帐分支?
使用 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/*
.
您可以查看此文档,其中描述了如何正确配置 VCS ROOT 和作业以使用功能分支(您的用例的票证分支): https://confluence.jetbrains.com/display/TCD9/Working+with+Feature+Branches
半解一(使用git):
- 在团队城市代理上设置结账。
- 在代理上设置 git。
- 使用有问题的 bash 命令创建构建步骤。
- 使用参数触发构建。
这个解决方案有问题,据我所知,如果构建已经在队列中,则该参数无法发送到 VCS root。它只能在触发时设置。
同样在 TeamCity 的分支列中,不会显示任何个性化分支,只有
方案二:
- 创建参数
reverse.dep.*.teamcity.build.branch
- 使用参数触发构建。
此参数将发送构建链中所有构建的结帐。 TeamCity 将尝试使用此参数检出分支,如果它不存在,它将检出默认(主)分支。 作为副作用,TeamCity 中所有相关构建的分支列将显示此参数。
所以现在解决方案 #2 解决了我的问题。