TeamCity 2019.1 中的新功能
新的 TeamCity 文档网站
我们已经重新修订了 TeamCity 2019.1 的文档,以创建更好的用户体验,并确保所有公司产品的文档在外观和感觉上保持一致。
主要的产品文档可以在 新的文档网站 上查阅。
插件开发帮助现已移至一个 独立位置 ,其源文件已经移至公开的 GitHub仓库 ,以便我们的社区可以对其进行贡献。
参见 以往版本的文档。
翻新的实验性 TeamCity 用户界面
新的 TeamCity 版本带来了重塑的用户界面,旨在提升您对该产品的使用体验。

新建侧边栏 :您现在可以轻松地从侧边栏访问并搜索所有项目和构建配置,将构建配置或整个项目标记为收藏,以便在侧边栏顶部查看。 新的更改,构建状态,新的测试和正在运行的构建:现在都可见。
重新设计的 项目主页 页面提供了一个仪表板式视图,展示您的构建配置。 每个配置都有自己的卡片,每个卡片最多可显示 14 个最新生成的直方图。 状态、构建时间以及队列中的时间也可用。 点击单个卡片会将您带到此构建配置的概览。
改进的 分支 选项卡:分支现在被划分为类别,您可以根据需要展开或折叠它们。 这有助于您方便地查看和浏览您的分支概览。

可展开的 构建行 :现在,TeamCity 可以在页面上显示更多关于构建的信息,如果您需要特定构建的详细信息,点击它会展开行以显示更多信息。
新界面处于 实验性 阶段,您可以通过屏幕右上角的图标切换到它。 在您的个人资料中还有一个新的设置,可以默认启用实验性 UI。 并非所有功能都被新界面所支持,因此在需要时,您可以方便地切换回经典的 TeamCity 风格。
GitLab 支持
TamCity 2019.1 支持 GitLab。 它允许创建与 connections 到 GitLab.com 和 GitLab CE/EE 的连接,这样您就可以在创建新项目或构建配置时轻松选择预定义的 GitLab 仓库。
为了在与 GitLab 连接中进行身份验证,请在 GitLab 中注册一个 OAuth application ,并具有 api 和 read_repository 范围,并生成一个秘密和一个应用 ID。
在添加新连接时,输入秘密和应用 ID,以及 GitLab 服务器 URL。

对 GitLab 合并请求的支持
我们还增加了对 GitLab merge requests 的支持,因此,您现在可以设置 TeamCity 自动在每个合并请求上运行构建,并在构建成功时自动批准。
支持 Bitbucket Server 的拉取请求
现在, Pull Requests 构建功能可以检测在 Bitbucket Server 中创建的拉取请求。
要添加一个 Bitbucket VCS 根,选择 Bitbucket Server 作为 VSC 托管类型 并配置连接参数:
身份验证类型:VCS root 凭据或用户名/密码
按目标 PR 分支进行过滤
Bitbucket Server 的基础 URL

TeamCity 多节点设置改进
为了提高 TeamCity 的可扩展性,我们正在研究设立一个集群的能力,其中主节点在其他节点中分配不同的责任,并且也处理如升级、许可证、诊断和服务器配置等任务。 这种多节点设置意味着所有的次级节点都是一样的并且可以以互换的方式执行所有的任务。
除了次级节点已经能够执行的任务外,在这个版本中,次级节点可以被分配"处理构建生命周期"的责任,这将释放主服务器执行与构建相关的任务,比如处理来自代理的构建消息,并且允许您显著增加代理的数量。
因此,可以启动一个单独的次级节点并分配给它几个责任,或者将这些责任分配给几个次级节点:
VCS 变更收集
正在处理构建运行
作为只读备份节点:在只读模式下提供用户界面
节点上的缓存配置文件
在多节点设置中,TeamCity 数据目录通过网络在次要节点之间共享。 当辅助节点启动时,它会读取存放在共享数据目录中的配置文件。 在大规模设置中,有成千上万的项目和构建配置,从网络存储下载大量文件可能需要很多时间。
在 TeamCity 2019.1 中,我们通过创建节点本地数据目录下的配置文件缓存,优化了此操作。 文件在第一次节点启动时被缓存,然后在运行时更新,这使得下次启动更快。
针对 Amazon 点击实例的改进
AWS Spot 队列请求
您现在可以配置 spot fleets (实例集合)来运行镜像,这可以通过始终仅使用足够的实例来降低成本。
要为 spot fleet 配置分配策略,请打开 AWS Management Console 并转到 EC2 | Spot 请求 | 请求 Spot 实例。 在这里,您可以选择策略,设置目标容量,添加标签等等。 请参考 Spot Fleet Requests 了解更多关于可用参数的信息。 当您完成后,将配置下载为 JSON 文件。 现在您可以将此配置添加到 TeamCity 中的 Amazon 镜像设置中。 在 'Source' 下拉列表中选择 'Spot Instance Fleet',在下面的文本区域中插入 JSON 配置,并保存新的镜像配置。

您可以在 代理 | 云 选项卡上监控所有正在运行的实例的状态。
其他改进
根据 EC2 服务如何管理实例,我们已将 spot instances 的 'Max price' 值设为可选,因此它们可以像按需实例一样被启动。
构建工件发布选项
构建工件可能包括分发包、日志文件、报告等,占用大量的存储空间。 当构建经常失败时,您可能希望将构件发布限制在成功的构建中,以节省磁盘空间。
在其他情况下,即使构建被中断,您也可能需要调查构件。
为了支持所有这些场景,我们在构建配置的常规设置中添加了两种新的构件发布选项。
现在,您可以选择何时发布制品:
即使构建失败 (默认):与 TeamCity 的前几个版本一样,如果所有前面的步骤都已完成,无论成功与否,构建的最后一步都会发布工件。 如果发出了 'stop' 命令,那么构件就不会被发布。
仅当构建状态成功时 (新 ):如果所有前面的步骤都成功完成,工件将在构建的最后一步发布。 TeamCity 在发布构件之前,会在服务器上检查当前的构建状态。
始终,即使发出了构建停止命令 (新 ):工件会为所有构建发布,即使是被中断的构建(例如,在发出“停止”命令后或在构建失败条件中指定的超时后)。
Go 语言支持
TeamCity 现在支持 Go 语言:
要构建 Go 项目:
确保在代理上安装了 Go 编译器。
向构建配置中添加 'Golang' 构建功能。
要在 TeamCity UI 中查看 Go 测试,请在 命令行 构建运行程序的脚本中添加 -json 标志运行它们: go test -json 或在构建配置中添加 env.GOFLAGS = -json 参数。

在不同步修订版本的情况下使用快照依赖
在 TeamCity 构建链中,所有通过快照依赖关联的构建都会使用源码的同步修订版,但在某些情况下,这可能并不理想。
在这个版本中,您可以通过 强制修订同步 选项禁用快照依赖中的修订同步,例如,在将较旧的构建推广为部署构建配置时。 构建将使用最新的部署脚本来运行。

为构建配置的 VCS 的分支过滤器
我们已经在构建配置的 版本控制设置中添加了一个分支过滤器,类似于构建触发器或测试详情中的过滤器。 在 TeamCity 的早期版本中,VCS 设置只允许在默认分支中禁用构建,但分支筛选提供了更灵活的方法。 要过滤分支,请使用在 配置分支 中描述的语法。
VCS 分支过滤器在任何其他分支过滤器之前应用,限制在自定义构建对话框中显示的分支,触发器可见的分支,以及来自快照依赖的更改。
退出所有会话
如果用户的密码被泄露,并且 TeamCity 服务器上启用了内置身份验证,更改用户密码并不意味着用户会从所有正在进行的会话中注销,这可能是一个潜在的安全风险。
现在,您的用户配置文件中有一个新选项, 退出所有会话 ,强制 TeamCity 使用户设置的所有会话失效,包括当前会话。 管理员帐户还有一个选项,可以强制用户退出所有会话。 也可以使用 管理 | 身份验证 页面上的相应选项注销所有用户。
基于令牌的身份验证
除了通过凭据进行基本身份验证外,TeamCity 现在还支持基于永久访问令牌的身份验证。 有了令牌,您无需在脚本中暴露用户登录名和密码。 令牌对于 REST API 身份验证也很有用。
您可以在 身份验证 页面的高级模式中启用/禁用基于令牌的身份验证模块:

用于 TeamCity-YouTrack 集成的永久身份验证令牌
如果您正在使用与 YouTrack 的 TeamCity 集成,您应当知道登录密码认证已被弃用,且很快将不再受到 YouTrack 的支持。
TeamCity-YouTrack 集成现在支持在 REST API 调用中使用基于令牌的授权。 建议您获取一个令牌,并在 项目设置 | 问题跟踪器 页面的连接设置中将其指定到您的问题跟踪器。
通过服务消息取消构建
当您需要从脚本取消构建时,例如,由于环境原因,构建无法正常进行,或应从子进程取消构建,可以通过 TeamCity REST API 传递构建 ID、服务器 URL 以及身份验证参数(用户名和密码)给脚本来实现。
现在,TeamCity 提供了一种更优雅的使用服务消息的方式来实现这一点,只需在构建脚本中添加一行,告诉 TeamCity 取消构建即可。 如果需要,您可以在取消后重新将构建添加到队列中:
阅读更多关于 TeamCity 服务消息 的内容。
更快的 agents 升级
以前,构建代理会在服务器升级后立即从服务器下载所有可用的工具,这可能会对服务器造成大量负载并大大降低服务器的运行速度。 为了减少代理请求对服务器的影响并加速代理的升级,代理现在仅在启动第一次请求这些工具的构建时才从服务器下载工具。 下载的工具被存储在代理上,因此构建不必再花时间重新下载它们。
为代理上的所有构建分配独立的 Maven 工件仓库
我们已更改了 Maven 的 本地工件仓库设置 选项,并增加了一项选项,用于为所有由代理运行的构建创建一个独立的仓库。
以下是发生的变化:
旧选项 | 新选项 | 描述 |
|---|---|---|
- | 按代理(默认) | 使用一个单独的仓库来存储由代理运行的所有构建所生成的工件,这些工件位于代理系统目录下。 |
已启用 '为此构建配置使用自有本地仓库' | 按构建配置 | 使用一个单独的仓库来存储由当前构建配置的所有构建生成的工件。 |
禁用了此构建配置的 '使用自有本地仓库'" | Maven 默认 | 使用默认的 Maven 仓库位置。 该仓库在机器上的所有构建配置和所有代理间共享。 |
其他改进
如果在构建配置中添加了“ Docker Registry Connections ”功能,TeamCity 服务器将自动为已安装的 Docker 添加代理需求,因此构建将仅在兼容的代理上运行。
从这个版本开始,TeamCity 支持 Visual Studio 2019 在相关的运行器中: Visual Studio(sln), MSBuild, Visual Studio Test, Inspections(ReSharper), Duplicates Finder(ReSharper)。
调查自动指派器获得了一个新选项,' 第二次失败',可防止用户对不稳定的测试/问题进行分配。 只有当故障连续发生两次时,才会指派用户进行调查。
基于构建功能设置代理要求的新 API。
前者 GitHub Pull Requests 插件变为 Pull Requests。
服务器启动性能已得到改善。
我的调查 页面现在显示当前正在运行的构建中的失败情况。
构建运行程序现在支持 .NET Framework 4.8。
已知问题
当您使用 .NET CLI 运行尝试通过某个 NuGet 命令传递凭据的构建时,您可能会收到以下错误之一。
如果安装了 .NET Core SDK 2.x,但其版本早于 2.1.400:
"无法加载文件或程序集“System.Runtime,版本=\<version\>,文化=中性,PublicKeyToken=\<key\>”或其依赖项。 系统找不到指定的文件。"如果您的服务器上仅安装了 .NET Core SDK 3.0:
"如果代理上仅安装了 dotnet 版本 3.0,则在路径 \<path\> 未找到插件。"
为解决这些问题,我们建议您额外安装 .NET Core SDK 1.x 和 / 或 2.1.400 或更高版本以外的当前 SDK 版本。
如果您使用 Docker 镜像和 Windows Server 2019 进行进程隔离,构建代理可能无法启动。 要解决此问题,请对 Docker/Podman 容器使用
hyper-v隔离:docker run --isolation=hyperv ... # or podman run --isolation=hyperv ...