分支远程运行触发器
每当 TeamCity 检测到构建配置的 VCS 根的特定分支中有变化时,分支远程运行触发器会自动启动一个新的个人构建。 完成的个人构建在 构建历史记录 中列出,但只对启动它们的用户可见。
目前,分支远程运行触发器仅支持 Git 和 Mercurial VCS。
对于非个人构建的分支,请查看 使用功能分支。 当为 VCS 根配置了分支规格时,分支远程运行触发器仅处理不符合规格且未被排除的分支。
触发器监视与特定模式匹配的分支名称。
默认模式包括:
对于 Git 仓库:
refs/heads/remote-run/*
对于 Mercurial 仓库:
remote-run/*
这些分支是常规的版本控制分支,TeamCity 不对它们进行管理(也就是说,如果您不再需要该分支,您需要使用常规的版本控制方法来删除该分支)。
默认情况下,TeamCity 会为在分支的最后一次提交中检测到的用户触发个人构建。 您也可以在分支的名称中指定一个 TeamCity 用户。 要做到这一点,请在模式中使用占位符 TEAMCITY_USERNAME
,并在分支的名称中使用您的 TeamCity 用户名。 例如,模式 remote-run/TEAMCITY_USERNAME/*
将匹配分支 remote-run/joe/my_feature
并为 TeamCity 用户 joe
启动个人构建(如果该用户存在)。
note
目前,没有用户界面可以显示触发器内部的情况,因此排查问题的唯一方法就是查看
teamcity-remote-run.log
。 要查看更详细的日志,请在Administration | Diagnostics页面上启用debug-vcs
日志预设。
要能够触发,构建分支应至少有一个新的提交与主分支进行比较。
% cd <your_local_git_repo>
% git branch
* master
% git checkout -b my_feature
Switched to a new branch 'my_feature'
//code, commit; code, commit
% git push origin +HEAD:remote-run/my_feature
在默认模式( refs/heads/remote-run/*
)下, git branch -r
命令将列出您的个人分支。 如果您想要隐藏它们,请将模式更改为 refs/remote-run/*
,并将您的更改推送到像 refs/remote-run/my_feature
这样的分支。 在这种情况下,您的分支未被上述命令列出,尽管您可以使用 git ls-remote <url_of_git_repository>
来查看它们。
% cd <your_local_hg_repo>
% hg branch
default
% hg branch remote-run/my_feature
marked working directory as branch remote-run/my_feature
//code, commit; code, commit
% hg push -b remote-run/my_feature --new-branch
如果您的构建配置有多个支持远程运行分支的 VCS 根,且您向所有这些 VCS 根推送更改,那么 TeamCity 将会为每一个 VCS 根启动一个包含更改的个人构建。
触发器设置中的 Build Customization 标签允许配置由此触发器启动的构建的自定义参数。 与 Run Custom Build 对话框类似,它让您可以覆盖 构建参数 的值,并选择是否在构建前清理 检出目录。
在此选项卡中,您可以自定义当前构建配置中使用的任何参数的值。 或者,您可以添加一个新的参数,它将仅在由此触发器启动的构建中可用。 如果当前构建对其他构建有快照依赖,这样一个参数也可以用来覆盖依赖构建配置的某个属性:使用这个 reverse.dep.<dependencyBuildID>.<property>
语法。
tip
如果您将此功能与 build step execution conditions 结合使用,效果会更好。 您只需向步骤添加一个基于参数的条件,然后配置两个触发器:一个将运行包含此步骤的构建(条件满足时),另一个则会运行不包含此步骤的构建。 一种常见的用例是在常规构建中运行有限的测试,但在夜间构建中,当服务器负载最低时,运行完整的测试集。
请注意,如果您在触发器中重新定义了构建参数,然后在 参数 中删除了原始参数,那么它的重新定义值将被转换为触发器自己的纯文本参数。 在定制安全值时,这一点至关重要,因为只有与 "Password" 类型 一起存储时,它们才会被隐藏,如果转化为纯文本,它们将变得可读。
TeamCity 允许以多种方式解决类似的任务,在某些情况下,仍然优先创建不同的构建配置。 例如,如果在同一配置中有太多自定义运行,那么 TeamCity 预测每次构建的确切持续时间可能会更加困难。 如果您需要触发带有大量不同参数的构建,我们建议您创建一个 构建配置模板,并将其用作各种配置的蓝图,每种配置都有其自己的参数。
感谢您的反馈!