TeamCity 2023.11 中的新功能
矩阵构建
在 TeamCity 中,您可以利用 构建参数 替换构建脚本、配置 / 项目设置、命令行参数等的原始值。 通常,每个参数只存储一个值。 从2023.11版开始,您可以在配置中添加 Matrix Build 功能,以指定一系列可能的参数值。 当运行此类配置时,TeamCity 将生成多个构建,以自动循环这些值。
添加多个参数,每个参数都有其自己的值集合,形成一个矩阵。 TeamCity 将为此矩阵的每个单元运行一次构建,并将结果报告给 概览 页面,使您可以一目了然地识别哪些参数 / 值组合失败。
矩阵构建功能提供了多种预配置选项,允许您快速设置构建配置,使其在不同的操作系统、默认 Java 版本和架构中运行。
了解更多:矩阵构建。
Amazon Web Services 集成
EC2 插件更新
我们对 Amazon EC2 集成插件进行了全面改造。 除了焕然一新的外观,更新的插件还具备以下增强功能:
您现在可以创建使用 Mac AMIs 的镜像了。 Mac VM 只能在专用的 Mac Mini 主机上运行,这些主机至少应预订一天。 使用更新后的 TeamCity EC2 插件 UI,您现在可以指定标签以定位合适的主机。
您现在可以为云镜像指定多种实例类型。 此项增强功能使您的云代理设置更加多样化和可靠,并增加了您预订即时实例的机会。
Subnets 字段现在可以接受多个值,您可以指定不同的进入和出去的流量规则。
新的 Image priority 设置允许您排列云镜像。 当 TeamCity 需要启动一个新的云代理时,它会优先使用优先级数字最高的镜像(假定该镜像尚未达到其活动代理限制)。
TeamCity 现在可以根据您的 spot placement scores 自动选择您的现货请求最有可能成功的区域或可用区。 为了让 TeamCity 请求并使用这些分数,请添加
ec2:GetSpotPlacementScores
IAM 权限。
了解更多:为 Amazon EC2 设置 TeamCity。
S3 插件更新
版本 2023.11 推出了更新的 S3 插件,具有以下增强功能:
直观流畅的用户界面,专为 Amazon S3 桶和 S3 兼容存储(如 MinIO、Backblaze B2 等)设计。
支持启用了 Transfer Acceleration 的存储桶。
简化设置的无困扰安装。 所有与连接相关的属性现在都从所选的 AWS Connection 中获取。 AWS 区域会自动从所选的存储桶中获取。
TeamCity 默认对所有自定义 S3 存储进行的完整性验证的禁用功能。
了解更多:Amazon S3 与 S3 兼容存储 | 升级说明
AWS 连接改进
新增 子项目可用 和 构建步骤可用 的 AWS 连接设置让您确保这些连接不被 TeamCity 项目和功能(例如,AWS 凭证 或 自定义 S3 存储)误用。
另外,您现在可以参考我们的 "配置连接" 文档文章的新部分,了解如何配置遵循 Amazon 指南且不需要永久用户凭证的安全 AWS 连接:推荐设置。
VCS 集成
GitHub
无缝 GitHub 应用注册
在2023.05版本中,我们引入了与 GitHub 和 GitHub Enterprise 的新类型连接。 这些连接使用 GitHub Apps,而不是传统的基于OAuth的仓库访问方式。
从2023.11版本开始,您将能够更快地创建这些连接,无需在 GitHub 中手动设置和注册新应用。 在 添加连接 对话框中选择 自动 创建模式,TeamCity 将会为您处理剩下的事情。
了解更多:配置连接。
可刷新令牌
您现在可以为 GitHub App 连接 发放可刷新的访问令牌了。
JetBrains Space
自动化连接
在这次发布中,我们引入了更新的无忧方式来设置 TeamCity 和 JetBrains Space 项目之间的集成。 现在,您可以将手动创建、设置和安装授予 TeamCity 所有必要权限的 Space 应用程序的常规工作交给 TeamCity。 您需要做的只是将 TeamCity 指向正确的 Space 组织,其余的部分它将会为您处理。
更新后的集成利用了两种类型的连接:
组织连接 —— 创建一个基础的 Space 应用程序,允许 TeamCity 检索您的组织中的项目列表并创建新的 Space 应用程序。
项目连接 — 使用父级组织的连接来创建允许 TeamCity 访问个别 Space 项目的应用程序。
了解更多:配置连接。
自动状态发布
从这个版本开始,针对 JetBrains Space 存储库的 TeamCity 构建配置不需要配置 Commit Status Publisher 构建功能来发布与构建相关的更新。 通过预定义的 Space connection 设置 TeamCity 项目,构建状态将自动发布。
对于希望完全控制过程的用户,以及在 TeamCity 无法自动发布构建状态的自定义设置中,仍然可以手动设置 Commit Status Publisher 功能的选项。
了解更多:JetBrains Space。
可刷新令牌
您现在可以为 JetBrains Space 连接 发放可刷新的访问令牌了。
Perforce
在云代理上重用源代码
您现在可以重复使用存储在(或从)持久化存储设备中的,并挂载至您云代理的资源。 在以前的版本中,Perforce 构建无法在新的代理机器上运行。
了解更多:在云代理上重复使用已签出的源代码。
Perforce Helix Swarm 功能增强
在 2023.11 版本中,我们对 提交状态发布器 构建功能的 "Perforce Helix Swarm" 发布器进行了彻底改造。 TeamCity 现在可以在您的 Swarm 设置中使用已经存在的工作流和测试(而不是创建自己的测试)。 此外,发布者不再需要拥有管理员访问权限的用户的凭证。
GitLab
Commit Status Publishers 和 Pull Requests 功能现在可以使用可刷新的应用程序令牌来针对 GitLab 仓库进行身份验证。
Bitbucket Cloud
Pull Requests 功能可以追踪 Bitbucket Cloud 仓库,现在有两种新的身份验证类型选项:
通过相应的 OAuth 连接 发行的可刷新访问令牌。
针对特定仓库、项目或工作区发放的永久访问令牌。
了解更多:Bitbucket Cloud 拉取请求。
Bitbucket Server 和 Data Center
Pull Requests 功能现在可以使用可刷新的 OAuth 令牌来访问位于 Bitbucket Server / Data Center 的仓库。
了解更多:Pull Request。
Azure DevOps
Commit Status Publisher 和 Pull Requests 构建功能现在可以通过从 配置的 TeamCity 连接 获取的可刷新令牌进行身份验证。
.NET
构建代理现在报告
DotNetWorkloads_<版本>
参数,该参数返回安装在代理机器上的所有 .NET 工作负载。 了解更多:由代理报告的参数。现在,.NET 运行器为
vstest
命令提供了 排除的测试程序集 设置。 这个字段允许您指定命令应忽略的文件路径。如果您的构建在每批中运行大量的 并行测试,TeamCity 可以自动切换到一种替代的测试过滤模式,以减少潜在的性能问题。 请参阅此文章获取更多信息:.NET 的备选测试过滤器。
安排自定义构建
您现在可以设置构建应当运行的特定日期和时间。 为了实现这一点,请调用 Run Custom Build 对话框,并使用新的 Date 部分中的设置。
了解更多:运行自定义构建。
构建缓存
新的 Build Cache 功能允许配置缓存构建所需的文件(例如,下载的 npm 包)并在连续的构建中重复使用它们。 这种技术可以帮助构建代理卸载过量的操作,并且可以显著加快您的构建流程。
除了与其自身的未来构建共享缓存外,一个可以缓存文件的配置可以将这些文件传递给同一项目内的其他构建配置。
了解更多:构建缓存。
配备捆绑式JDK的代理
从2023.11版本开始,您可以使用自定义的 JDK 构建与 TeamCity 代理捆绑的发行版。 这些发行版本允许您一次性安装代理和它运行所需的 JDK。
要创建自定义代理分发,请导航到 管理 | 代理 JDKs 并添加一个新的 JDK 选项(您需要指定平台,体系结构,以及供 TeamCity 下载此特定 JDK 的链接)。
当添加新的选项时,TeamCity 将开始构建您的自定义代理分发。 您可以通过点击 安装代理 | 完整分发版 在 代理 | 概览 页面来下载自定义的 agent+JDK 组合包。
了解更多:安装 TeamCity 代理。
版本设置:从 VCS 加载额外设置
从这个版本开始,TeamCity可以从存储在版本控制系统中的设置加载自定义快照依赖项、VCS根和检出规则。 因此,您现在拥有更大的灵活性来编辑版本设置,并创建具有与默认/稳定分支中的设置大大不同的设置的自定义分支。
在检测到这些以前被忽略的设置时,TeamCity 动态创建了所需的隐藏实体(例如虚拟构建配置),这些实体只对当前构建有效,并且对于使用不同设置的其他修订/分支保持隐藏。
要启用更新的行为,请在您的项目的 版本设置 页面上勾选 应用快照依赖项和版本控制设置中的更改 选项。
了解更多:应用快照依赖性和版本控制设置中的更改。
从主构建访问并行构建的工件
当您运行使用 并行测试 构建功能的构建配置时,TeamCity 会将构建分为一系列相互连接的批次,在自动生成的 链 中。 在之前的版本中,这样的构建过程中产生的 artifacts 是在这些单独的批量构建中发布的,而母版构建则没有任何内容。
作为一种解决方法,您可以在查看已完成的配置构建时切换到 Dependencies 标签。
从这个版本开始,批处理构建产生的工件会在主构建的 Artifacts 标签页中进行汇总。 您也可以使用 teamcity.build.parallelTests.currentBatch
参数 来将批量构建产生的工件归类到不同的目录中。
了解更多:发布批量构建产生的工件。
步骤状态和ID
从 2023.11 版本开始,您可以为您的步骤指定 ID(类似于项目和配置 ID)。
TeamCity 使用这些 ID 生成新的 teamcity.build.step.status.<步骤_ID>
参数来报告步骤退出状态("成功","失败" 或 "取消")。
您可以使用这些值来根据前一步的状态执行自定义操作。 例如,您可以制定自定义步骤执行条件。
了解更多:步骤状态参数。
额外的 ReSharper 插件用于 Inspections Runner
现在,检查(ReSharper) 运行器具备了一个允许您添加最喜爱的 ReSharper 插件(比如从 JetBrains Marketplace 下载或从本地存储安装的 StyleCop、CleanCode 或 Unity Support)的 R# CLT 插件 字段。
服务消息
添加了新的服务信息,使您能够追踪给定文件的内容并将新行回显到构建日志中。
了解更多:将文件写入构建日志。
REST API
移动配置
您现在可以向以下端点发送一个 POST
请求,以将构建配置移动到另一个项目:
例如,以下请求会找到 ID 为 "SourceProject_MyBuildConfig" 的构建配置,并将其移至 "MyProject2":
降低云实例运行
以前,您可以向运行中的云代理发送 DELETE 请求以终止它。
从这个版本开始,您可以通过向以下端点发送 POST 请求来停止云实例:
使用 ...actions/stop
端点发出"软"停止请求:如果目标代理当前正忙,它将在构建完成后停止。
...actions/forceStop
端点使您能够停止云实例,即使它正在忙碌。
了解更多:启动和停止云实例。
Sakura UI 和 UX 改进
我们已经重新设计了 Agent 参数 标签页。 您可以在查看任何 TeamCity 代理时导航到此标签页,立即检查此代理的配置、环境参数和系统属性。
您现在可以在代理和池的列表顶部方便地访问它们,只需 将所需的代理池加入书签即可。
依赖项标签页 现在显示了一个查找面板,允许您通过配置名称搜索特定的依赖构建。
在2023.05版本中引入的 Interactive Agent Terminal 现在会在代理详情或构建结果页面的底部面板中打开。 您可以通过点击 在新标签页中打开 将其移动到单独的浏览器标签页上。
性能监视器 现在显示已使用/总计 agent 内存的绝对值。
您现在可以切换 Build log(构建日志) 时间戳,从绝对值变为相对值,以便快速分析构建达到特定阶段所需的时间。
您现在可以在 TeamCity UI 的 Connection 页面中查看和复制连接 ID。 这个小的增强功能有助于为使用连接的对象编写 Kotlin DSL 代码: AWS 凭证功能, Docker 支持, S3 工件存储,使用其他连接的 AWS 连接,等等。
云镜像的 Build History 标签页现在显示了一个搜索框,允许您找到特定云代理的所有构建,即使这个实例已经不再可用。
现在,导航栏会为当前 TeamCity 用户中有更改的收藏项目加粗显示更改指示器。
其他
DslContext 对象现在公开一个字符串
serverUrl
属性,允许您在 Kotlin DSL 代码中获取 TeamCity 服务器的 URL。TeamCity 更有效地分配代理,并且更快地处理具有失败构建的大型构建链。 从2023.11版本开始,依赖构建的 "On failed dependency" 条件 为 "Make build failed to start" 的情况下,当其依赖项失败或被取消时,不再等待可用的代理。 相反,依赖构建的状态会尽快变为 “启动失败”,然后 TeamCity 会继续进行链中的下一个构建。
提交状态发布器 构建功能现在可以正确地发布针对 GitLab 仓库的
refs/(merge-requests/*)/head
分支(即"合并结果"分支)的配置的构建状态。 以前,运行 TeamCity 构建以合并结果修订时,Publisher 会遇到 HTTP 404 错误。如果用户使用外部受二次身份验证(2FA)保护的服务的凭据登录 TeamCity,TeamCity 不会发送额外的二次身份验证请求。 了解更多:降低过度的授权请求。
您现在可以在您的日志分析工具用于获取构建日志的 URL 中添加
dateFormat=<value>
参数。 了解更多:修改 DateTime 模式。除了
构建队列
、builds_started
、builds_running
和构建队列
指标外,TeamCity 现在还报告了一个实验性的builds_detached
指标,允许您查看与其代理分离的 构建的数量。
升级说明
在升级之前,我们强烈建议阅读有关版本 2023.11 与 2023.05.4 之间重要变化的内容。
已修复的问题
请查看 TeamCity 2023.11 发行说明 文章,以获取已实施功能和已修复问题的摘要。
路线图
参阅 TeamCity 路线图,了解未来的更新。
您的反馈至关重要
我们非常重视您的反馈,鼓励您分享您的想法和建议。 请查看此链接获取更多信息:反馈。