TeamCity 2020.1 中的新功能
条件构建步骤
现在,您可以通过新的 execution conditions 对构建步骤进行粒度控制。 在运行构建时,只有当 所有 您配置的预设条件在当前运行中得到满足时,TeamCity 才会执行每一步。
在高级构建步骤设置中,点击 添加条件 并为 TeamCity 服务器或代理提供的任何构建参数指定一个逻辑条件。 您可以快速选择示例条件,例如:
只在默认分支中运行步骤
只在发布分支中运行步骤
跳过个人构建中的步骤
或者,创建一个自定义条件,TeamCity 将自动建议支持的参数和值。 各种逻辑条件和参数皆可获取。
开箱即用的 Kubernetes 支持
TeamCity 2020.1 默认捆绑了我们广泛使用的 Kubernetes Support 插件。
TeamCity 与 Kubernetes 的集成允许在您的 K8S 集群内运行云代理。 您可以选择如何启动构建代理:从特定镜像启动,从 Kubernetes 部署启动,或基于自定义 pod 模板启动。
阅读如何将 TeamCity 与 Kubernetes 集成在 我们的文档 中。
附带的集成将替换已安装的外部 Kubernetes 支持插件。 如果您之前在 TeamCity 的早期版本中使用由此插件提供的 Helm runner,请在升级到 2020.1 之前参考我们的 升级笔记。
调查历史
正如实践所显示,我们的 investigation tools 在 TeamCity 用户中得到了广泛接受。 他们有助于检查构建问题和失败的测试,并允许将其调查任务分配给团队中负责的成员。 为了回应您的反馈,我们已经让调查历史能在网页用户界面中被查阅。 这对于大型团队和项目最有帮助,因为并不容易确定谁以及何时更改或解决了调查。
要查看对调查应用的所有操作,请打开其上下文菜单,然后点击 Investigation History。
Azure DevOps 的拉取请求支持
现在,您的 TeamCity 构建可以检测本地和云端 Azure DevOps(2018 或更高版本)中的拉取请求。
要配置相应的 构建功能,请转到 Build Configuration Settings | Build Features,点击 Add build feature,并选择 Pull Requests。
请注意,在与 Azure DevOps 的情况中,TeamCity 检测到的是对合并分支的请求,而不是像其他 VCSs 那样直接对拉取请求本身。 每次构建都将在一个虚拟分支上启动,展示合并 PR 后的实际构建结果。 因此,构建将包含更改的提交和虚拟合并提交。
在 Jira Cloud 中显示 TeamCity 构建信息
TeamCity 与 Jira Cloud 的集成已得到扩展。 现在,TeamCity不仅可以快速访问在构建提交中提到的Jira任务,而且还可以实时向Jira Cloud报告构建信息。 这样,您可以直接在 Jira 中预览构建状态,无需检查 TeamCity 服务器本身。
参考 我们的文档以获取有关配置与 Jira Cloud 集成的详细信息。
在构建配置级别上的通知
TeamCity 可以使用外部渠道(如电子邮件)来通知注册用户关于各种构建事件。 以前,通知只被配置给每一个 TeamCity 用户或用户组。 现在,我们推出了 Notifications 构建功能,允许按构建配置设置通知,并提供与用户特定通知相同的规则集。
这种方法不需要引用特定的 TeamCity 用户,并且对于群组通知效果更佳。 目前,该功能支持通过电子邮件和 Slack 发送通知。
通过此功能,现在可以在 DSL 中描述通知,并通过创建 构建配置模板 为多个构建配置设置类似的通知。
内置的与 Slack 的集成
自此版本起,Slack 集成已经内置于 TeamCity 中。 它允许在私人信息中或通过 Slack 频道接收带有特定构建事件和详细信息的通知。
有两种通知选项可用:
在 Slack 中的一个 TeamCity 通知示例:
新浏览器通知程序
在我们 2020.1 的发布范围内,我们推出了新的 TeamCity Browser Notifier 扩展。 它会自动检测浏览器中的活动 TeamCity 会话,并根据您的自定义规则,发送关于构建状态和事件的实时通知。 此扩展适用于 Mozilla Firefox 、 Opera 以及 Google Chrome (包括所有基于 Chromium 的浏览器,如 Microsoft Edge)。
新的 Browser Notifier 旨在替换已被弃用的 Windows Tray Notifier,并自动使用为其配置的所有规则(如果有的话)。
在 我们的博客 中阅读更多关于 Notifier 实用功能的内容。
下载完整的代理及插件
您现在可以访问装有服务器当前启用的所有插件的完整 TeamCity 代理。 如果您使用脚本来创建代理映像(例如,在云中),那么这个选项是最方便的。
常规的 TeamCity 代理分发并不包含插件:代理在首次启动时下载它们。 完整的代理包含所有已启用的插件,并且自动与当前的 TeamCity 服务器状态保持同步。 这使得其分发存档的体积更大,但显著减少了首次代理运行的时间。 所有的实例将从一开始就与服务器同步,并且可以立即运行构建。
请注意,启动后,完全代理行为如同常规代理一样。 如果您修改了 TeamCity 服务器上的插件状态,所有活动的代理都需要重新启动以与服务器同步。
要下载完整的代理, 请访问 TeamCity 的 Agents 页面,打开 Install Build Agents 菜单,然后选择 Full ZIP file distribution。 您可以复制此存档的链接,并在自动化脚本中使用它;无需授权。
管理项目的安全值
此版本使处理项目令牌更为简便。
如果您为基于 DSL 的 TeamCity 项目生成令牌,这些令牌将保存在 VCS 中的项目的 DSL 中,而它们各自的安全值则存储在 TeamCity 系统设置中。 当您根据相同的 DSL 创建新的 TeamCity 项目时,您必须确保在这个新项目中也指定了与这些令牌相对应的安全值。
为了处理这个程序,TeamCity 现在会自动在其他项目中寻找项目令牌的 缺失的安全值。
在 项目设置 | 版本设置 | 令牌 标签页中,您可以手动输入所需的安全值。 如果 TeamCity 在您有权限编辑的其他项目中找到相同的令牌,您将有选择复制这些项目中使用的值的选项。
您也可以直接在此页面上通过点击 Scramble secure value 来添加新的令牌。
支持自定义加密密钥
TeamCity 将所有在项目配置文件中使用的安全值存储在一种打乱的形式中。 初始值存储在 TeamCity 数据目录中,其安全性主要取决于您的环境的安全性。 作为额外的安全层级,TeamCity 现在支持自定义加密密钥以保护安全值。 通过使用自定义加密而非默认的混淆策略,您可以将潜在恶意行为的风险降至最低。
关于这个新选项的更多信息,请参阅 我们的文档。
次级节点的改进
随着每次发布,我们离在辅助节点上提供完整价值的 TeamCity 服务器体验更近一步。 自2020.1版本以来,辅助节点支持以下功能:
新的职责:处理构建触发器。
在许多项目和构建配置的设置中,主服务器的大部分 CPU 都分配给了不断处理构建触发器的工作。 通过为一个或多个次要节点启用此责任,您可以将触发处理任务和必要的 CPU 负载分配到主节点和负责的次要节点之间。更多用户级别操作。
现在,次级节点允许更改用户设置,检查待处理的更改,执行各种与代理相关的操作等等。通过网页用户界面自动更新。
在次级节点上使用我们的 autoupdate,与主服务器体验类似。Agent | 云端标签。
您现在可以在辅助节点上直接监控云代理。
实验性用户界面的新功能
查看所有代理
All Agents 视图显示了关于代理最重要的信息。 对于大量的代理,此视图的运行速度更快。 它可以快速预览代理的状态,并且允许在一个单独的仪表板上并排管理它们。
在侧边栏中重新排序项目
实验性用户界面中最被广泛请求的功能之一,就是能够定制项目列表的能力,但这个功能却遗漏了。 在此版本中,我们根据您的请求,在实验性 UI 侧边栏中添加了这个功能。
要开始自定义项目的侧边栏,请在其右上角点击 。 您可以通过键盘或使用箭头UI按钮在列表中移动项目或构建配置。 您也可以直接在此配置窗口中将项目标记/取消标记为最爱。
Project Home 的改进
在试验性用户界面中引入的 Project Home 页面,在 2020.1 版本中增加了一些实用的功能,此页面首次在 TeamCity 2019.1 中推出。
(1) 当查看项目详细信息时,即使子项目的块已折叠,您也可以看到所有子项目的构建配置状态。 仅考虑默认分支中的构建。
(2) 您可以立即添加子项目或构建配置。
(3) 构建配置的上下文菜单现在提供对其设置部分的快速访问。
其他改进
Java 11 已与 TeamCity 服务器 Windows 安装程序和服务器 Docker 镜像一起捆绑,而不是 Java 8。
在第二次失败时的自动分配调查已优化(在 我们的文档 中了解更多信息)。
TeamCity 现在使用 BCrypt 算法来使用户密码存储更安全。
现在,项目设置 | 构建日程选项卡有了另一个过滤器选择:隐藏启用了"仅在有待处理更改时触发"选项的触发器。 这有助于快速找到所有禁用此选项的触发器,如果您需要调查构建的行为。
为了遵守建议的安全性和性能实践,现在的 TeamCity 代理 Docker 镜像:
以非root用户身份运行;
使用 Docker 卷来处理需要写入大量数据的目录。
针对在
test_names
字典表中有大量测试名的服务器,优化了内存使用。