TeamCity 2023.05 中的新功能
深色主题
在这个版本更新周期中,我们实现了最受欢迎的需求之一:TeamCity Dark Theme。 此外,您还可以选择 "系统主题" 选项,该选项会根据您当前的操作系统设置自动应用淡色或暗色主题。

互动代理终端
通过这次更新,您可以直接从 TeamCity 用户界面打开到代理机器的远程终端。 这些终端允许项目管理员维护本地和云代理,并解决问题。

有了这个新终端,我们从代理页面中移除了旧的 打开 SSM 终端 操作链接。
了解更多: 安装并启动 TeamCity 代理s。
多节点设置增强
轮询
版本 2023.05 引入了一种新的请求分发逻辑,可以更有效地在 TeamCity 节点之间分散负载,并在节点由于计划维护或意外故障转移而宕机时,最大限度地减少受负面影响的用户数量。
这种新逻辑是基于向具有 处理 UI 操作和负载均衡用户请求 责任的随机节点发送新请求。 在此初始抽取之后,TeamCity 记住了所选择的节点,并将后续请求委派给相同的节点。
了解更多: 轮询。
将 VCS 轮询责任分配给多个节点
在2023.05版本之前,"VCS repositories polling" 责任 (允许节点轮询仓库以获取新的提交并检测更改)只能在整个集群中的单个节点上使用。 从这个版本开始,您可以把这个责任分配给多个节点。 这个增强功能让您能够在节点之间均匀分配负载,并减少触发新建构建的延迟。

为了指定哪个节点应处理您当前的请求(例如,将新构建添加到构建队列中),请使用 TeamCity UI 右下角的节点选择器。 当前选定的节点在 节点配置 页面上用星形图标标记。
了解更多: VCS 仓库轮询。
禁用主节点职责
以前,当 TeamCity 集群没有承担这些职责的节点时, 主 TeamCity 节点 会自动重新获得 "处理由构建运行产生的数据"、 "VCS 仓库轮询" 和 "处理构建触发器" 的职责。 另外,当您将 "Main TeamCity node"的责任切换到另一个节点时,这个新节点会自动继承所有其他责任。
从 2023.05 版本开始,主节点不再自动接受 " missing " 责任。 这项变更让您对主节点有更多的控制权,使您能够减少它们的负载和 CPU / 内存消耗。 在 TeamCity UI 中,唯一不能禁用的主节点责任是"主 TeamCity 节点"(只有在另一个节点上启用此责任时,您才能取消选中此复选框)和"处理 UI 操作和负载均衡用户请求"。
从任何节点启动 TeamCity 备份和清理
您现在可以在任何承担 处理 UI 操作和负载均衡用户请求 责任的节点上 创建备份。
现在,任何承担此责任的节点都可以安排清理。 然而,清理始终在主节点上执行。 此项任务可以在辅助节点执行其常规任务时进行。
VCS 集成增强
通过 GitHub Apps 连接到 GitHub
从这个版本开始,TeamCity 可以通过使用 GitHub Apps 的连接与 GitHub 和 GitHub Enterprise 实例进行工作。 GitHub Apps 是向您的个人和组织仓库提供访问的最佳方式。 它具有精细的权限设置,授予您对应用程序可以访问的仓库更多的控制权,并且不需要保持专用的 "service" 用户来生成 OAuth 访问令牌。

GitHub App 连接使您可以查看 GitHub.com 和 GitHub Enterprise 仓库,设置 GitHub 用于通知 TeamCity 关于仓库更改的 webhooks,并启用相关的 认证模块。
了解更多: 配置连接。
忽略 GitHub 草稿拉取请求
从此版本开始,您可以通过在构建功能设置中勾选 忽略草稿 框,配置 拉取请求构建功能以忽略 GitHub 草稿拉取请求。 TeamCity 将忽略草稿状态的拉取请求,直到其状态发生变化。
默认情况下,“Pull Requests”构建功能会加载 GitHub 草稿拉取请求的信息,并在草稿拉取请求上运行构建。 构建页面显示了 "草稿" 状态和置于拉取请求号旁的灰色图标:

当 GitHub 中的草稿拉取请求的状态变为 "Ready for review" 时,构建页面将反映此更改:

为 VCS 根重新发行可刷新的令牌
如果通过 TeamCity connections 配置的 VCS 根访问托管在 Bitbucket Server、Bitbucket Cloud 或 GitLab 中的 Git 仓库,则该根设置的“Authentication Settings”部分现在会显示 获取新 按钮。 这个按钮可以让您立即用当前用户发放的新令牌替换 VCS Root 使用的可刷新令牌。

短期可刷新的令牌相比于密码或个人访问令牌提供了更高的安全性,因为 TeamCity 服务器会自动刷新它们,而不与代理共享任何相关数据。
了解更多: 可刷新的令牌。
与 Bitbucket Server 和 Data Center 的集成
除了支持 Bitbucket Cloud,TeamCity 现在也支持 Bitbucket Server 和 Data Center。 相应的选项在连接类型列表中以及 创建项目 页面上可用。

Podman 支持
从2023.05版本开始,您可以连接到镜像注册表,使用 Podman (而不是 Docker )在容器内运行构建步骤,以及推送 / 拉取镜像(通过 命令行 运行器)。

容器包装器 扩展(先前被称为 "Docker Wrapper")现在可以通过
docker pull或podman pull拉取镜像,具体取决于在构建代理上安装了哪种容器管理器。构建 Docker 注册表连接 功能现在可以使用 Podman 登录到容器注册表。
如果您使用 命令行 运行器来执行
podman ...命令,可以利用新的container.engine、podman.version和podman.osType参数来指定 代理需求 ,确保您的构建只能在安装了 Podman 的构建代理上运行。
了解更多: 将 TeamCity 与容器管理器集成。
HTTPS 访问增强
通过 Let's Encrypt 获取 HTTPS 证书
Let's Encrypt是一个非盈利的证书颁发机构(CA),它提供被所有现代浏览器信任的TLS证书。 从2020.05 版本开始,TeamCity 可以联系此 CA 以自动发行并设置有效证书。

由 Let's Encrypt 发布的证书会在到期前 30 天自动续期,并且同时覆盖您的 TeamCity 服务器域和(如果已配置) 制品隔离域。
了解更多: HTTPS 服务器设置。
指定 HTTPS 连接所需的加密协议
如果您的 TeamCity 服务器允许通过 HTTPS 访问,那么服务器目前与客户端通信的默认协议是 TLS 版本 1.2。 从 2023.05 版本开始,您可以指定可用的加密协议列表,或者强制 TeamCity 使用一个特定的协议。

了解更多: 指定可用的加密协议。
新的服务消息
通过服务消息发送 Slack 消息和电子邮件
TeamCity 服务消息 允许您通过在构建脚本中添加特殊消息来报告有关构建的各种信息。 现有的服务消息列表现已包括 ##teamcity[notification ...] 消息,该消息可发送电子邮件,发出 Slack 直接消息,并将更新内容发布到 Slack 频道。

内置的安全功能确保信息不会被发送到错误的收件人,并且不能包含指向未配置为受信任的外部网站资源的链接。
通过服务消息添加和移除构建标签
您现在可以发送 TeamCity 服务消息以添加和删除 构建标签。

要添加和删除标签,请发送以下消息:
了解更多: Service Messages。
AWS 相关更新
EC2 实例元数据服务 v2 支持
IMDSv2 是 Amazon EC2 实例元数据服务的新版本, 解决了许多 IMDSv1 的漏洞。
TeamCity 2023.05 支持 EC2 实例和 Amazon Machine Images (AMIs) ,这些都包括 "Optional" 和 "Required" 的 IMDSv2 设置。 TeamCity 会优先尝试使用 IMDSv2,但也支持较旧的 AMI。
EC2 启动模板定制
从这个版本开始,TeamCity 允许自定义 Amazon EC2 启动模板。 您现在可以使用相同的启动模板来运行在某些参数上仅有差异的各种实例。 勾选 自定义启动模板 框并根据需要修改启动模板的值。

了解更多: 为 Amazon EC2 设置 TeamCity。
两步验证增强
对关键设置的额外验证
从2023.05版本开始,通过二次验证的用户有一个小时的时间来执行与安全相关的操作:禁用2FA,更换用户密码和/或电子邮件,并生成访问令牌。 一旦此期限到期,用户必须重新确认他们的身份,并通过新的 2FA 验证才能继续进行这些操作。
这种新的行为为您的 TeamCity 服务器增加了额外的保护层。
了解更多: 关键设置保护。
强制特定用户组使用二次验证
如果全局二次身份验证模式为 "可选",您现在可以强制单个 用户组 使用 2FA。 为了做到这一点,添加 teamcity.2fa.mandatoryUserGroupKey 内部属性 并将其值设置为所需的组键。
了解更多: 对单个用户组强制执行 2FA。
REST API 更新
管理 SSH 密钥
从2023.05版本开始,您可以通过 REST API 对项目的 SSH 密钥执行全部操作:上传并生成新密钥,修改 VCS 认证设置,为加密密钥设置密码短语,以及浏览和删除已上传密钥。 为了实现这个,将所需的请求发送到 /app/rest/projects/<project_locator>/sshKeys 端点。
更多学习: SSH 密钥管理。
管理版本设置
我们的 REST API 现在允许您管理与 在 VCS 中存储项目设置 相关的设置。 您可以使用这个新的 API 来修改这些设置,检查更改,并从相关的 VCS 中加载 / 提交更改。 探索 /app/rest/projects/{locator}/versionedSettings/ 端点以查看可用的请求。
了解更多: 管理 VCS 设置。
管理用户角色
新的 /app/rest/roles 端点允许您获取、修改和删除现有的 角色 ,以及创建新的角色。
了解更多: 管理角色和权限。
管理服务器认证设置
您现在可以向 /app/rest/server/authSettings 端点发送 GET 和 PUT 请求来管理 服务器验证设置。
了解更多: 管理服务器身份验证设置。
.NET 8 支持
TeamCity 2023.05 现在支持 Microsoft 的 .NET 8.0 框架。 这意味着 TeamCity 代理能够正确识别代理机上已安装的相应 SDK,而且 .NET build runner 能成功构建针对 .NET 8.0 的项目。
Sakura UI 的改进
链"标签用于构建配置
构建配置页面现在会显示 "Chains" 标签页。 该页面允许您浏览链接到 Build Chain(构建链) 的 Sankey - 类构建图表。

以前,这个页面只在 Classic UI 中可用。
重排构建
您现在可以在 Sakura UI 中通过拖动来手动重新排列构建队列中的构建顺序。
改进的更改可见性
更新日志 选项卡现在可用于项目和构建配置。
显示图表 选项已在所有与更改相关的页面和选项卡上实现。 启用此选项后,变更将以与相关 VCS 根关联的提交图形显示。

构建结果页面上更新的参数选项卡
我们已对 参数 选项卡进行了全面改进,位于 构建结果页面 上。 您现在可以使用搜索框来查找所需的参数,仅查看在 自定义构建过程中添加/修改的参数,并隐藏 依赖构建报告的参数。
了解更多: 参数选项卡。
仅对失败的构建运行步骤
您现在可以为单个步骤选择 "仅在构建状态失败时" 执行策略。 这项政策允许您创建步骤,当构建成功完成时,这些步骤会被忽略,只有在构建失败时才会执行。

Kotlin DSL:自定义指标上的构建失败条件
您现在可以使用 Kotlin DSL 配置基于构建报告的 自定义统计值的构建失败条件。 您无需为此编辑 main-config.xml 文件,这意味着配置基于自定义指标的构建失败条件不再需要系统管理员权限。
以下是示例的 Kotlin DSL 代码:
我们正在努力改善通过 DSL 添加的自定义指标上的构建失败条件的 web UI 表示。
服务器健康状况
已归档项目的健康报告
您现在可以为已归档的项目生成 Server Health 报告。 为了实现这一点,请选择 <Archived Projects> 范围。

检查服务器状态的新端点
新增了两个您可以通过发送 GET 请求来检查的端点,以获取当前服务器状态:
如果服务器正在运行,即使它仍在初始化或处于 维护模式 中,
<服务器_URL>/healthCheck/healthy端点返回 "200"。如果服务器已完全初始化并准备好接受用户请求,那么
<服务器_URL>/健康检查/就绪端点将返回“200”。 如果服务器仍在初始化或等待数据升级,端点将返回 "503"。
其他
Notifications build feature 现在允许您输入多个收件人地址。
将
env.BUILD_URL添加到 预定义环境变量 的列表中。 这个变量返回到当前构建的链接。现在, SSH Keys 页面上显示了允许您生成新密钥的按钮。 在 TeamCity 服务器上生成密钥比在本地运行
ssh-keygen并手动上传密钥(相较之下)更快、更安全。添加了新的
teamcity-commit-status.log和teamcity-pull-requests.log日志文件 ,其中包含与 提交状态发布器 和 Pull Request 构建功能相关的信息。 每个日志都有一个相应的预设,允许 TeamCity 写入 DEBUG 级别的事件。TeamCity Enterprise用户现在可以点击 帮助 | 支持 快速导航到 teamcity-support.jetbrains.com上的新请求表单。

升级说明
在升级之前,我们强烈建议您阅读有关版本 2023.05 与 2022.10.x 之间重要变化的内容。
已修复的问题
路线图
参阅 TeamCity 路线图 ,了解未来的更新。
我们非常期待您的反馈
我们非常重视您的反馈,鼓励您分享您的想法和建议。 请查看此链接获取更多信息: 反馈。