版本控制系统标签
TeamCity 可以在您的版本控制系统中标记(自动或手动)特定构建的源代码。 应用的标签列表及其应用状态会显示在构建结果 的 更改 选项卡上。
自动 VCS 标签
您可以设置 TeamCity 根据构建状态自动为构建源标记标签。 标记并不是标准的 通知事件—— 它是在构建完成后在后台进行的,不会影响构建的状态。 然而,订阅了当前构建配置中的 关于构建失败的通知 的用户将被告知标签失败的情况。
标签功能是根据构建配置/模板配置的,作为一个 构建功能。 在添加此功能时,您需要指定要标签化的根以及标签化模式。 如果当前的构建配置中有配置了分支,您只可以对特定您选择的分支的构建进行标签化。
可以完全覆盖从模板继承的标签设置,并将不同的标签应用于不同的 VCS 根目录。
请注意,如果您修改了带标签的构建配置的 VCS 设置,它们将仅在以下新的构建中用于标签。
"移动" 标签(例如,对于不同构建使用相同名称的标签,例如 SNAPSHOT
)目前仅支持 CVS。
为了查看如何使用 Teamcity VCS 标签功能以自动创建标签的示例,请参考这个 外部帖子。
手动 VCS 标记
要手动标记源代码,导航至 Build Results 页面,点击 Actions,并从下拉菜单中选择 Label this build sources。
手动标签使用构建时实际的 VCS 设置。
Subversion 标签规则
要标记 Subversion VCS 根,需要设定标签规则以定义 SVN 仓库结构。
标签规则以如下格式的换行分隔规则进行指定:
存储库路径可以是相对的和绝对的(以 /
开始)。 绝对路径是从 SVN 仓库根(您在仓库中的最顶级目录)解析的,相对路径是从 TeamCity VCS 根解析的。
在创建标签时,位于 TrunkOrBranchRepositoryPath
下的源将被放入 tagDirectoryRepositoryPath / tagName
目录中,其中 tagName
是根据构建配置的标签模式定义的标签名称。
如果没有资源匹配 TrunkOrBranchRepositoryPath
,则不会创建标签。
tagDirectoryRepositoryPath
路径必须已经存在于代码库中。
如果 tagDirectoryRepositoryPath
目录中已经包含有当前标签名的子目录,那么标签化过程将会失败,且旧的标签目录不会被删除或受到影响。
例如,有一个带有URL svn://address/root/project
的 VCS 根,其中 svn://address/root
是仓库根,且该仓库具有以下结构:
在这种情况下,标签规则应该是:
在 Perforce 中的标签功能
自2021.2起,TeamCity开始创建自动标签,而不是静态标签。 自动标签作为变更列表的别名工作。 在标签的 Revision(修订)
字段中,TeamCity 会显示当前构建中签出的修订版本。 对于 查看
字段,它使用当前 VCS 根的所有路径关联的映射。
对于 Perforce 标签,TeamCity 仅支持包含规则,并忽略排除规则。
如果您更喜欢使用静态标签,您可以通过设置 teamcity.perforce.useStaticLabels=true
内部属性 来启用以前的行为。
标签规则示例
您可以在标签规则和标签模式中使用变量替换。 在不同配置中使用的 VCS 根目录中,查看一个标签规则示例:
这将要求您在构建配置设置中设置 % \projectName %
配置参数。
默认情况下,TeamCity 会将标签名追加到指定目标路径的末尾。 如果您希望拥有不同的目录结构,并将标签放置在目标路径的中间,您可以使用以下语法:
因此, % \%system.build.label%%
将会被替换为标签名(注意以双 %%
符号开头 —— 这非常重要)。