升级说明
从 2024.03.1 版本到 2024.03.2 版本的更改
在服务器和代理 Docker 镜像中,都更新了捆绑的 Git 至 2.45.1 版本。
已知问题
如果您使用 Amazon Elastic Container Service Support 插件,请将其更新至最新的 "SNAPSHOT-20240513140730" 版本。 旧版本可能会与 TeamCity 服务器的 2024.03.2 版本发生故障。
类型为"实例"的AWS 托管代理可能无法获得 TeamCity 服务器的授权。 作为一种解决方法,您可以通过添加 内部属性 来解决此问题,如下述工单中所建议的: TW-88068。
TeamCity 服务器无法授权来自附加虚拟机的 Azure 云代理。 请注意,此问题不影响托管在托管镜像中的 Azure 镜像。 如果将 Azure 云代理从 VMs 迁移到镜像不符合您的要求,请跟踪 TW-88070 以及时获取我们预计在近期内实施的 Azure 资源管理器云支持 插件的更新通知。
从 2024.03 变更至 2024.03.1
没有潜在的破坏性更改。
从 2023.11 更改为 2024.03
为 Perforce Helix Swarm 配置的 提交状态发布器 构建功能,不再将中间构建状态(排队,开始,取消)发布到 Swarm 评审的 Comments 标签页。 反而,该功能仅公告最终构建状态(成功或失败)。 您还可以在构建功能的设置对话框中取消选中 代码审查注释 选项,以禁用这些剩余的状态通知(在这种情况下,提交状态发布者只会更新审查的 测试 标签页)。
从2023.03版本开始,不再由 JetBrains dotCover 团队支持的 dotCover 命令行工具的版本,将明确标记为“已弃用”。
尽管这些版本仍将保持功能性,但我们鼓励您迁移到非弃用的版本。 请注意,您还应在代理机器上安装 .NET Framework 4.7.2+ 或 .NET Core 3.1+ ,以便非弃用版本能够操作。
当安装自定义代理工具时,无需再编辑
teamcity-plugin.xml
文件以设置可执行位。 反之,确保已归档的文件包含所有必需的文件权限。 在这种情况下,当工具归档在代理机器上被解包时,文件仍可执行。如果您现有的配置继续使用 TeamCity.Node 插件,请下载最新版本 这里。 较旧的插件版本无法加载,代理报告出现“初始化 spring context 失败”的错误。
Maven 工具更新
版本 2024.03 引入了一些与捆绑的 Maven 工具相关的更改。 这些变化是由含有已知 CVEs 的某些 Maven 版本所决定的,并且是为了通过解除某些非关键组件和工具的捆绑,减少 TeamCity 安装程序的大小的倡议的一部分。
这些更改及其可能对您现有项目产生的影响包括以下内容:
所有未被 Maven 步骤 和 触发器 使用的 Maven 版本将被删除。 在您的 TeamCity 服务器首次启动时,将下载并安装现有配置所需的 Maven 版本。 如果服务器无法与 https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven 建立连接,您将需要手动 安装缺少的工具。 如果没有现有的配置正在使用 Maven,只会安装最新的 3.9.6 版本。
如果没有现有的配置在使用 Maven 的 "Default" 版本,那么版本 3.9.6 将成为新的 "Default"。 否则,"Default" 选项将继续指向与之前相同的 Maven 工具(例如,3.6.3)。
如果现有的构建配置使用的是手动安装的 Maven 3.9.6 并且 将其设置存储在 VCS 中,编辑此配置时会生成一个 补丁,将
mavenVersion
参数的值从自定义
变更为bundled_3_9_6
。
捆绑工具更新
Maven 3.9.6 已被添加为 TeamCity 中可用的标准工具版本之一。 参见 Maven 工具更新 部分,了解有关 2024.03 版本中与 Maven 相关的重要更改的信息。
附带的 Kotlin 编译器(在 TeamCity DSL 中使用)和 Dokka(Kotlin 的文档引擎)已经更新至 1.9.22 版本。
内部 HSQLDB 数据库已更新至 2.7.2 版本。 请注意,这个数据库不应该用于实际的生产用途。
捆绑的 dotCover 工具已更新到 2023.3.3 版本。
被 TeamCity REST API 使用的 Jersey 库已更新到 2.41 版本。 这个更改不会影响常规的 REST API 用户。 然而,由于版本2.41与之前的1.19版本(例如,修改了依赖注入逻辑)相比有着显著的变化,依赖于 REST API 的第三方 TeamCity 插件(例如,非常受欢迎的 tcWebHooks)可能会与更新的 TeamCity 服务器不兼容。
附带的 Tomcat 已更新至版本 9.0.87。
代理 Docker 镜像 现在为 Linux 提供了更新的 Docker 相关工具。
Docker Engine(Docker CE 和 Docker CE CLI)已更新至 24.0.9 版本。 这种变化也导致 Docker Compose 更新到版本 v2.25.0。
containerd 已更新至 1.6.28 版。
已知问题
从 Windows 2024.03-nanoserver-2022 Docker 镜像运行的代理在重启后可能与某些运行器不兼容。 此问题仅在重新启动后出现,初始启动代理运行如预期。 查看此 YouTrack 工单以跟踪此问题:TW-87124。
那些拉取 TFS 仓库的构建会在检出模式为“Always checkout files on agent”时,失败并显示
java.lang.NoClassDefFoundError
信息。 为了解决这个问题,从这个 YouTrack 问题:TW-82824 下载一个与 TeamCity 2024.03 兼容的更新的 VCS 支持:TFVC 插件。如果您遇到由捆绑的 Node.js 或者旧版 TeamCity.Node 插件报告的 "Invalid or corrupt jarfile /data/build/teamcity/buildAgent/plugins/environment-fetcher..." 错误,请从这个 YouTrack 问题: TW-87170 下载更新的 Process Environment Fetcher 插件。
在服务器重启后,由于不活动,构建代理可以取消注册。 请查看此问题以获取更多信息:TW-87156。
从 2023.11.4 版更改至 2023.11.5 版
在服务器和代理 Docker 镜像中,都更新了捆绑的 Git 至 2.45.1 版本。
从 2023.11.3 到 2023.11.4 的变化
捆绑的 Git 已在 Linux 和 ARM 的服务器和代理 Docker 镜像中更新到 2.43.2 版本。 Windows 镜像继续使用 2.43.0 版本,因为这是目前可用的最新版 Git-For-Windows。
已知问题
安装此错误修复或单独的安全补丁会导致多个未捆绑插件的旧版本因“403:访问被拒绝”响应而失败。 这些问题已在对应插件或 TeamCity 服务器的较新版本中得到修复。
GitHub Commit Hook 插件 — 请将您的插件更新到版本 2023.11-157452 或更高版本。 更多信息:TW-86680。
SAML 认证 — 将您的 TeamCity 服务器升级到 2022.04.5 或更高版本。
从 2023.11.2 版本到 2023.11.3 版本的更改
没有潜在的破坏性更改。
请查看此文章以获取已修复问题的完整列表:TeamCity 2023.11.3 发布说明。
已知问题
如果服务器无法访问 jetbrains.com 域,TeamCity 的性能将会下降。 请查看这个 YouTrack 工单以获取更多信息:https://youtrack.jetbrains.com/issue/TW-86288。 这个问题在 2023.11.4 的错误修复日期中得到了 解决。
使用 JaCoCo 生成覆盖率报告可能会因为
ClassNotFoundError
失败。 要解决此问题,升级到 TeamCity 2023.11.4。 根据您当前的 JaCoCo 覆盖率工具是在 2023.11.x 版本服务器更新前还是更新后安装的,您可能还需要重新安装此工具,并重新启动您的构建代理。 有关更多信息,请查看此 YouTrack 工单:TW-86574。
从 2023.11.1 到 2023.11.2 的更改
没有潜在的破坏性更改。
请查看此文章以获取已修复问题的完整列表:TeamCity 2023.11.2 版本发布说明。
已知问题
使用 JaCoCo 生成覆盖率报告可能会因为
ClassNotFoundError
失败。 要解决此问题,升级到 TeamCity 2023.11.4。 根据您当前的 JaCoCo 覆盖率工具是在 2023.11.x 版本服务器更新前还是更新后安装的,您可能还需要重新安装此工具,并重新启动您的构建代理。 有关更多信息,请查看此 YouTrack 工单:TW-86574。
从 2023.11 版到 2023.11.1 版的变更
以前,通过 报告测试元数据 使用
##teamcity[testMetadata testName='...' name='...' type='number' value='...']
服务消息,导致 TeamCity 显示的图表中,Y 轴单位为毫秒。 对于传递了非 DateTime 值的用户来说,此行为出乎其意料。 在 2023.11.1 版本中,type='number'
参数将图形的 Y 轴格式化为纯数字。 要继续以毫秒查看值,将类型更改为新的毫秒
值。 在这个版本中引入的其他可用值是bytes
和百分比
。
捆绑工具更新
附带的 Tomcat 已更新至 9.0.83 版本。
已知问题
使用 JaCoCo 生成覆盖率报告可能会因为
ClassNotFoundError
失败。 要解决此问题,升级到 TeamCity 2023.11.4。 根据您当前的 JaCoCo 覆盖率工具是在 2023.11.x 版本服务器更新前还是更新后安装的,您可能还需要重新安装此工具,并重新启动您的构建代理。 有关更多信息,请查看此 YouTrack 工单:TW-86574。
从 2023.05 更改为 2023.11
捆绑工具更新
.NET Core 3.1 不再与 TeamCity 代理 Docker 镜像捆绑在一起。
与 TeamCity 代理 Docker 镜像捆绑的 .NET SDK 版本已从 5.0 更新为 6.0(当前的 Microsoft LTS 版本)。
从此版本开始,与 TeamCity 代理 Docker 镜像捆绑的 .NET SDK 版本将与 TeamCity 发布时的 Microsoft LTS 当前版本保持一致。
附带的 Tomcat 已更新至 9.0.80 版本。
捆绑的 Git 已在 Server 和 Agent Docker 镜像中更新到 2.43 版本。
根据 Microsoft 的 初始停止服务公告,TeamCity 服务器和代理 Docker 镜像将不再使用 Windows 10 2004 版本。 从2023.11版本开始,我们将发布基于 Windows Server 2022 镜像的镜像。 已发布的旧版 Docker 镜像(例如,
jetbrains/teamcity-minimal-agent:2023.05.4-nanoserver-2004
)既不会被升级也不会被移除。捆绑的 dotCover 工具已更新至 2023.2.2 版本。
为了减小 TeamCity 发行版的大小,最大的 TeamCity 构建工具 IntelliJ IDEA 不再随 TeamCity 安装程序一起提供。 反而,TeamCity 将在第一次服务器启动时下载并安装此工具。 要检查下载 / 安装进度(或手动在未能自动执行此操作的服务器实例上安装 所需的 IntelliJ IDEA 版本),请导航至 管理 | 工具 页面,并滚动至 IntelliJ 检查和重复项引擎部分。
捆绑的 Kotlin 编译器(在 TeamCity DSL 中使用)和 Dokka(Kotlin 的文档引擎)已更新至 1.8.22 版本。
附带的 ReSharper CLT 已更新至 2023.1.1 版本。 这个版本没有包括 dupFinder 命令行工具,该工具已经弃用了 TeamCity 重复项查找器(ReSharper) 运行器(参见 最初的弃用通知)。 为了继续使用这个运行器,请安装 JetBrains ReSharper Command Line Tools 2021.2.3 或更旧版本,并在运行器的高级设置中指定此工具的路径(R# CLT 主目录 字段)。
S3 插件更新
由于 S3 插件 的全面改革,以下设置不再可用:
使用预签名 URLs 功能默认为启用状态,无法被禁用。
Access Key ID、Secret Access Key、IAM Role 和 Default provider chain 选项已经不再适用于原生 AWS S3 存储。 反而,使用 AWS Connection 的设置,这些存储利用它来编辑相应的选项。 当您查看或编辑使用了这些设置中的任何一个的现有 S3 桶时,TeamCity 会显示 转换为 AWS 连接 链接,允许您将它们转移到新的 AWS 连接。 我们建议您这样做,以保持所有与连接相关的选项都在存储设置之外。
现在可以从所选的存储中自动获取 AWS Region。
Open IAM Console链接已被隐藏。
启用了 Default Credential Provider Chain 选项并具有自定义端点的现有存储现在被明确地转换为“自定义 S3” 类型。
EC2 插件更新
Amazon EC2 插件在 2023.11 版本中进行了大幅度的修改。 作为此次改革的一部分,不再可能将 TeamCity 代理 推送到从 AWS 云镜像产生的 EC2 实例。 作为一种选择,您可以使用已经包含 TeamCity 代理的 EC2 镜像。
在 2023.11.2 版本中,我们预期将对在 2023.11 更新之前配置的云配置文件回滚这一更改。 这将允许您继续使用现有云代理的 agent push 功能。 然而,我们鼓励您更新您的设置,并将 TeamCity 代理程序烘焙进您的 AMIs,而不是通过代理推送安装它们。 在未来的某个版本中,后者选项将被完全禁用。
2023.11.4 更新: 所有云配置文件,包括在 2023.11 版本之前配置的和新的配置文件,代理推送功能暂时重新启用。
IntelliJ 平台更新的 TeamCity 插件
从 TeamCity 2023.11 版本开始,当在 TeamCity 服务器上启用了两步验证(2FA)后,将无法再使用用户名 / 密码凭据从 IntelliJ 平台登录到 TeamCity。 您可以使用用户名/访问令牌的凭证进行登录。
HTTP / SSO 身份验证模块更新
以下更新已应用于 Azure DevOps OAuth 2.0 、Bitbucket Cloud 、GitHub App 、GitHub Enterprise 、GitHub.com 、GitLab CE/EE 和 GitLab.com 的 身份验证模块:
Add Module 对话框新增了一个 允许任何 <IdentityProvider> 用户登陆 的复选框。 如果您想要配置一个模块,该模块不会将用户限制在特定的域、组织、工作区或者群组,您必须选择该复选框,而不是保留 限制认证 字段为空。
如果已配置空的 限制认证 字段的现有认证模块在 2023.05.04 版本中,迁移到 2023.11 版本后,TeamCity 将在 管理 | 认证 页面上显示警告通知
所有用户都应被允许登录,或者至少必须指定一个 <IdentityProvider> 组织。
。
已知问题
在 TeamCity,我们全力以赴,致力于加强我们平台的全面安全性,并且我们一直在改进我们的产品以实现这一承诺。
在 2023.11 版本中,我们解决了与 artifacts' domain isolation 功能相关的一些问题。 由于这些更改的副作用,一些用户在尝试访问构建工件时,可能会遇到无限重定向循环(
ERR_TOO_MANY_REDIRECTS
)。 为了解决这个问题,确保您的代理服务器提供有效的X-Forwarded-Host
头部信息(参见 配置代理服务器 文章中的配置示例)。您也可以通过添加
teamcity.internal.domainIsolation.serveArtifactsOnlyFromArtifactsUrl=false
内部属性 来回滚这些更改。 请注意,内部属性会禁用前述的安全更新,从而降低 TeamCity 服务器的安全性。如果您的 TeamCity 用户名包含编码的特殊符号(例如,表情符号),您可能无法通过 IntelliJ 平台插件 登录 TeamCity。 请参考以下工单获取更多信息:TW-85284。
(在 2023.11.1 的错误修复更新中已修复) TeamCity 可能无法运行通过安全 SSH 协议(SVN+SSH)访问的 Subversion 仓库的新构建。 有关更多信息,请查看此问题:TW-85310。
(在 2023.11.1 的错误修复更新中已修复) LDAP 同步当前仅获取前 1000 名用户。 作为一个解决方法,将
teamcity.ldap.search.pageSize
内部属性 设置为一个更大的值。 请查看此 YouTrack 工单以了解解决进度:TW-85444。(在 2023.11.1 错误修复更新中修复) 提交状态发布器 如果父级 TeamCity 构建配置的 ID 超过 40 个字符,将无法将构建状态发布到 Bitbucket Cloud。 请参阅此问题以获取更多信息:TW-85393。
从 2023.05.4 版本升级至 2023.05.6 版本
服务器和 Agent Docker 镜像中的工具更新:
Git 和 Windows 版本的 Git 已更新到 2.45.1 版本。
Perforce 已更新至 2022.2-2531894 版本。
已知问题
GitHub Commit Hook插件发送的请求失败,并显示 "403: Access Denied" (“403: 拒绝访问”) 错误。 将插件更新到版本2022.04-109057以解决此问题。 请参阅此 YouTrack 工单以获取更多信息:TW-86680。
如果使用纯文本 LDAP 连接 URL(
ldap://...
),则无法从 TeamCity UI 访问 管理 页面。 为了解决这个问题,切换到安全的 LDAPS 连接(推荐)或者按照以下工单建议添加内部属性:TW-88069。
从 2023.05.3 到 2023.05.4 的更改
没有潜在的破坏性更改。
请查看此文章以获取已修复问题的完整列表:TeamCity 2023.05.4 发布说明。
从 2023.05.2 到 2023.05.3 的变更
没有潜在的破坏性更改。
请查看此文章以获取已修复问题的完整列表:TeamCity 2023.05.3 发布说明。
捆绑工具更新
捆绑的 Git 在服务器和代理 Docker 镜像中都更新为了 2.42 版本。
从 2023.05.1 变更至 2023.05.2
请查看此文章以获取已修复问题的完整列表:TeamCity 2023.05.2 发布说明。
即将废弃的 DupFinder Runner
从下一个 TeamCity 版本开始,重复项查找器(ReSharper) 运行程序将无法运行,因为它依赖的工具在 ReSharper Command Line Tools 中已不再提供。 请查看对应的 服务器健康报告 以获取更多信息。
已知问题
那些拉取 TFS 仓库的构建会在检出模式为“Always checkout files on agent”时,失败并显示
java.lang.NoClassDefFoundError
信息。 请参阅此 YouTrack 问题以获取更多信息:TW-82824。
从 2023.05 变更为 2023.05.1
在父配置构建中发布批处理构建的工件
通过这个错误修复更新,自动创建的 batch builds 将它们的工件汇集到父配置构建的 Artifacts 标签下。 请参阅此文章以获取更多信息:发布批量构建产生的工件。
捆绑工具更新
捆绑的 Git 在服务器和代理 Docker 镜像中都已更新到 2.41 版本。
杂项更改
“开启至代理的交互式会话” 权限已被重命名为“调用交互式代理终端”。 新名称突出了近期的行为变化:此权限现在指定用户是否可以打开在 2023.05 版本中引入的 agent terminal tabs,不再与已废弃的 SSM 终端相关。
您现在可以使用
#teamcity:symbolicLinks=...
属性来装饰构件发布规则,以选择发布目录中存在的符号链接是否应按原样包括,或者 TeamCity 应将这些符号链接引用的文件和文件夹包含在发布的存档中。 请参阅此文章获取更多信息:发布 Symlinks。
从 2022.10 变更至 2023.05
计划在 TeamCity 服务器 中弃用 Java 8
TeamCity 2023.05 支持 Java 版本 8、11 和 17,但是 将在接下来的几个 TeamCity 版本中停止支持 Java 8。 如果您使用的是非捆绑版的 Java 8,我们强烈建议您将您的服务器迁移到 Java 11 或 17。
捆绑工具更新
附带的 Kotlin 编译器(用于 TeamCity DSL)和 Dokka(Kotlin 的文档引擎)已更新至 1.7.10 版本。
附带的 Tomcat 已更新到 9.0.75 版本。
与 TeamCity Windows 安装程序和 TeamCity Docker 镜像捆绑的 Amazon Corretto Java 已更新到 17.0.7.7.1 版本。
REST API 更新
Web 应用描述语言(WADL)生成器现已被移除。 请查阅 初始公告 获取更多信息。
多节点设置更新
处理用户请求修改数据"的职责已经更名为"处理 UI 动作和负载平衡用户请求"。
该
data_directory/config/nodes-config.xml
文件仅列出了 "MAIN_NODE" 主节点的责任。 在2023.05版本中,此配置文件列出了主节点上启用的所有责任。
Podman 支持
由于实施了 Podman 支持,做出了以下更改:
TeamCity 指标更新
从2023.05版本开始,通过 <TeamCity_server_URL>/app/metrics
端点访问的 TeamCity 指标 符合OpenMetrics 规范。 由于此次增强,已实施以下更改:
"summary" 指标已将其后缀从
_total
变更为_sum
。 例如,TeamCity 现在报告build_queue_optimization_time_milliseconds_sum
而不是build_queue_optimization_time_milliseconds_total
。先前带有
_number
后缀的度量标准现在已经不再具有。 例如,agents_connected_authorized_number
指标现在被称为agents_connected_authorized
。
为了保留之前收集的度量数据并与更新的数据一起使用,请在您的度量监控解决方案中(例如 Grafana)执行以下操作之一:
(推荐)在图形设置中使用
或者
运算符,以合并具有新旧名称的指标。 例如:sum(increase(vcs_changes_checking_milliseconds_sum{type="COLLECT_CHANGES"}[1m])) or sum(increase(vcs_changes_checking_milliseconds_total{type="COLLECT_CHANGES"}[1m]))使用 Prometheus 重标记配置将指标重命名回它们在写入 Prometheus 数据库前的旧名称。
除了这些变化之外,TeamCity 不再为指标报告 "实验性" 标签。 请注意,一些指标仍被视为实验性的,可以通过 <TeamCity_server_URL>/app/metrics?experimental=true
端点访问。
杂项更新
拥有 "Project Developer" 角色的用户现在可以下载并查看
.teamcity/settings/buildSettings.xml
隐藏的工件。 以前,此操作需要启用"项目管理员"及更高角色的"编辑项目"权限。代理页面不再显示 Open SSM Terminal 操作链接。 这个功能已被更通用的 Open Terminal 按钮所取代。 参见 远程调试代理 以获取更多详情。
带有 代理端签出(agent-side checkout) 模式的配置不支持在签出目录路径中使用后缀(例如,
+:src/main => src/main/postfixDirectory
)。 如果您在检出规则中指定了后缀,以前版本的 TeamCity 无声地忽视了这个错误,并且运行了忽视您的后缀的构建。 从2023.05版本开始,TeamCity会显示相应的错误信息,并且不允许启动新的构建。 请参阅此部分以获取更多信息:Agent 端签出规则限制。
已知问题
当构建代理使用 rootful Podman(即,在代理机器上以 root 用户运行的容器)来 拉取容器,即使 Podman 客户端在拉取镜像前成功进行了授权,TeamCity 也会显示“Docker 速率限制警告”。 对于使用 Docker 的代理,只有在代理未经认证就拉取镜像时,才会显示此警告,这可能会导致达到下载速率限制。
如果您有多个项目与同一个 GitHub App 的 GitHub App 连接 相关,只有 TeamCity 检测到的第一个连接的 webhook 是可以使用的。 与其他连接的项目将持续轮询其对应的仓库以查找更改。
将工件上传到 S3 buckets 可能会在较大文件上失败。 我们预计将在下一次错误修复更新(2023.05.1)中解决这个问题。 在此期间,请下载并安装自定义构建的 S3 插件,来源于这个 YouTrack 问题:TW-81866。
基于 EC2 的 云配置文件 的设置可能不会显示允许您使用本地存储的 IAM 角色的复选框,使得只能通过访问 ID / 密钥进行授权。 我们预计将在下一个 2023.05.1 的错误修复更新中解决这个问题。
如果一个被发布为构建成果的目录包含符号链接,那么这些符号链接引用的文件和文件夹将不再被包含在生成的成果归档文件中。 这个问题将在 2023.05.1 的错误修复更新中得到解决,更多信息请参见此文章:发布 Symlinks。
某些 TeamCity 页面缺少
html
和主体
标签。 有关更多信息,请查看此工单:TW-82749。从 AWS 机器映像生成的代理,利用的是 Amazon 元数据(IMDSv1)的第一版本,无法从元数据中检索属性值,并通过自动 授权。 请查看此工单以获取更多信息:TW-82176。
从 2022.10.4 版更改至 2022.10.6 版
服务器和 Agent Docker 镜像中的工具更新:
Git 和 Windows 版本的 Git 已更新到 2.45.1 版本。
Perforce 已更新至 2022.2-2531894 版本。
已知问题
GitHub Commit Hook插件发送的请求失败,并显示 "403: Access Denied" (“403: 拒绝访问”) 错误。 将插件更新到版本2022.04-109057以解决此问题。 请参阅此 YouTrack 工单以获取更多信息:TW-86680。
如果使用纯文本 LDAP 连接 URL(
ldap://...
),则无法从 TeamCity UI 访问 管理 页面。 为了解决这个问题,切换到安全的 LDAPS 连接(推荐)或者按照以下工单建议添加内部属性:TW-88069。
从 2022.10.3 版到 2022.10.4 版的更改
没有潜在的破坏性更改。
从 2022.10.2 变更至 2022.10.3
捆绑工具更新
捆绑的 Git 在服务器和代理 Docker 镜像中都已更新到 2.40 版本。
附带的 Tomcat 已更新至 9.0.71 版。
Perforce Helix Core 客户端(p4)已在 Agent 和 Server Docker 镜像中更新到 2022.2-2407422 版本。
已知问题
使用"Default Credentials Provider"作为主要的AWS连接可能会在会话过期时引起"Default Credentials Provider Chain:请求中包含的安全令牌已过期"的错误。 这个问题已经在最新的 AWS Core 插件中得到修复,该插件将与即将发布的 2022.10.4 版本的 TeamCity 一同绑定。 要手动安装这个插件版本,请从 TW-80253 工单中下载相应的附件。
从 2022.10.1 到 2022.10.2 的更改
捆绑工具更新
在服务器和代理 Docker 镜像中,都更新了捆绑的 Git 至 2.39.1 版本。
Perforce Helix Core 客户端(p4)在 Agent Docker 镜像中已更新至 2022.2-2369846 版本。
捆绑的 Apache Tomcat 已更新至 8.5.84 版本。
即将更新的 REST API
Web 应用描述语言(WADL)生成器将在 2023.05 版本中被移除,因为我们现在使用 Swagger 来生成文档 REST API 和客户端代码。
如果您依赖此生成器工具,请联系我们来分享您的业务需求。
从 2022.10 变更为 2022.10.1
AWS 连接
默认提供者链凭证类型默认处于禁用状态
在 AWS 连接中,Default Provider Chain 凭证类型现在默认被禁用,以防止与之相关的安全风险。 要启用此选项,设置 内部属性 teamcity.internal.aws.connection.defaultCredentialsProviderEnabled=true
(默认值为 false
。) 设置属性后,无需重启服务器。
默认情况下,自定义 STS 端点被禁用
只有 全球或区域 AWS STS 端点 可以在 AWS 连接配置 中用作 STS 端点。 要使用 Amazon 替代品如 MinIO 的自定义端点,请联系 TeamCity 支持团队。
从 2022.04 到 2022.10 的更改
计划在 2023.04 版的 TeamCity 服务器 中弃用 Java 8
TeamCity 2022.10 服务器支持 Java 8 和 11 版本,但在下一个版本中,即将于 2023 年 4 月发布的 TeamCity 2023.04,将停止支持 Java 8。 如果您使用的是非捆绑版的Java 8,我们强烈建议您在 TeamCity 2023.04 之前将您的服务器迁移到 Java 11。
请注意,TeamCity 与 Java 17 不兼容,这使得 Java 11 成为 TeamCity 服务器 2023.04 计划支持的唯一版本。
捆绑工具更新
捆绑的 Amazon Corretto Java 已更新至 11.0.16.9.1 版本。
附带的 Tomcat 已更新到 8.5.82 版本。
Kotlin Script runner中捆绑的 Kotlin 编译器已更新至 1.7.10 版。
Maven 3.8.6 已被添加为该工具捆绑版本之一。
嵌入式 Maven 库已更新至 3.8.6 版本。
在新的 TeamCity 安装中建议的外部数据库的 JDBC 驱动程序已更新至以下版本:
MySQL 升级到 8.0.30
PSQL 升级到 42.5.0
MSSQL 转换到 9.4.1
其他更新
通过 AWS SSM 连接到代理的 EC2 实例的权限
TeamCity 系统管理员现在被授予新的角色,对代理开启交互式会话,它允许他们在不提供 Amazon 凭证的情况下,通过 TeamCity UI 在 EC2 代理上使用交云浏览器的 shell。 如果代理按照此处所述进行了配置,那么可以连接到代理。
工件的剩余磁盘空间会自动计算
Free disk space 构建功能会跟踪工件的大小,并自动计算解决工件依赖所需的磁盘空间。 在指定所需的磁盘空间时,您无需考虑在构建过程中下载的工件的大小。
Bitbucket Server 拉取请求分支的向后兼容性
TeamCity 提供与 Bitbucket Server 拉取请求分支的向后兼容性,这些分支不在 Atlassian 官方支持的范围内。 Pull Requests 构建功能有一个 使用 pull request 分支 选项,可以启用检测此类分支 (pull-requests/*)
,而不是源分支。 升级后,使用此类分支的现有构建配置将启用此选项。 我们不建议使用此选项。
性能监视器
Performance Monitor 构建功能现已默认启用于通过 URL 创建的 构建配置。
已知问题
AWS 连接的安全风险
如果您的 TeamCity 服务器托管在一个与 IAM 角色关联的 AWS 实例上,该 IAM 角色授予访问敏感资源的权限,使用具有 Default Provider Chain 凭证的 Amazon Web Services (AWS) 连接可能会带来安全风险。 在这种情况下,配置了此类连接的 TeamCity 项目管理员可以访问由角色允许的所有 AWS 资源。
为了解决这个安全问题,我们强烈建议 TeamCity 服务器管理员在 AWS 连接中禁用 Default Provider Chain凭证类型, 通过设置内部属性 teamcity.internal.aws.connection.defaultCredentialsProviderEnabled=false
(默认值是 true
。) 设置属性后,无需重启服务器。
在下一次错误修复更新中,我们将默认禁用此类凭证。
Kotlin DSL 插件可能无法解析依赖项
如果项目的 Kotlin DSL 设置使用了第三方库,那么在升级到 2022.10 后,Kotlin DSL 插件可能会无法解析 DSL 依赖项。
如果您遇到这个问题,升级到带有更新版 DSL 插件的 bug-fix 版本 2022.10.1。
从 2022.04.5 到 2022.04.7 的更改
服务器和 Agent Docker 镜像中的工具更新:
Git 和 Windows 版本的 Git 已更新到 2.45.1 版本。
Perforce 已更新至 2022.2-2531894 版本。
已知问题
GitHub Commit Hook插件发送的请求失败,并显示 "403: Access Denied" (“403: 拒绝访问”) 错误。 将插件更新到版本2022.04-109057以解决此问题。 请参阅此 YouTrack 工单以获取更多信息:TW-86680。
如果使用纯文本 LDAP 连接 URL(
ldap://...
),则无法从 TeamCity UI 访问 管理 页面。 为了解决这个问题,切换到安全的 LDAPS 连接(推荐)或者按照以下工单建议添加内部属性:TW-88069。
从 2022.04.4 版更改至 2022.04.5 版
没有潜在的破坏性更改。
从 2022.04.3 变更到 2022.04.4
ReservedCodeCacheSize=640m
属性默认为新服务器安装设置。 如果该属性在早期的 TeamCity 版本中被指定,您将需要在升级后手动更新它。 请查看 TW-76238 问题。SVNKit 已更新至 1.10.8。
从 2022.04.2 变更至 2022.04.3
SVNKit 更新至 1.10.7,导致 svn+ssh 根目录出现问题。 它没有关闭连接,并生成了许多线程。 问题已在 2022.04.4 版本中解决。 为了解决 TeamCity 2022.04.3 中的问题,从 TW-77134 问题中下载一个插件。
2022.04.1 到 2022.04.2 的更改
没有潜在的破坏性更改。
从 2022.04 变更至 2022.04.1
没有潜在的破坏性更改。
已知问题
从 2021.2 到 2022.04 的变更
为了符合 .NET 测试的常见标识符格式,TeamCity 现在使用了一种不同的 .NET 组件名称格式(省略了文件扩展名)。 在更新到 2022.04 版本后,此格式将应用于通过
test
或vstest
命令启动的所有 .NET 运行器的测试。 由于这次变化,这些测试的调查,静音和历史记录可能会被重置。TeamCity 停止支持 Microsoft Edge Legacy 网络浏览器。
通过 REST API 触发构建将在服务器达到队列限制时被禁用。
如果 Ant 是由 1.8 以下的 Java 版本启动的,那么 TeamCity 对 Ant 的任务报告将被禁用。
基于 2004 的 Windows docker 镜像将不会为 2022.04 版本发布。
已将 log4j v1.2 替换为 log4j v2.17(参见 TW-47084)。
外部插件更新
某些热门的外部插件与 TeamCity 2022.04 不兼容,需要在升级前进行更新。
从 JetBrains Marketplace 下载这些插件的新版本:
捆绑工具更新
TeamCity REST API 的 2017.1 和 2017.2 版本已经被解绑。 如果您在脚本中使用了这些版本中的任何一个,可以考虑按照这里所描述的切换到最新的协议版本。 如果切换并非一个选项,而这对您的设置构成了破坏性改变,请通过任何便捷的 反馈渠道 联系我们。
TeamCity 代理 Docker 镜像中的更新:
附带的 .NET Core SDK 已经更新至 6.0.100。
附带的两个 .NET Core Runtime 版本分别是 3.1.21 和 5.0.12。
捆绑的 Git 已更新至版本 2.36.0
捆绑的 Java 已更新至 11.0.15.9.1 版本
附带的 IntelliJ IDEA 已更新到 2021.2.3 版本。 请注意,此版本需要 Java 11.x。 之前添加的与捆绑版一起的 IntelliJ Inspections/Duplicates 步骤将与运行 Java 低于版本 11 的代理不兼容。
在 TeamCity DSL 中使用的捆绑式 Kotlin 编译器已更新至 1.6.21 版本
SBT 启动器,用于 Simple Build Tool(Scala) 插件,已经更新至 1.5.5 版本。
由 TeamCity 通知模板 使用的 Freemarker 已经更新到 2.3.31 版本。
Qodana 插件 已与 TeamCity 一起捆绑。 如果您之前安装过 Qodana 插件并使用了 DSL,您需要更新您的 DSL 设置。 我们正在提供一个特别版本的插件,同时包含 旧版和新版 Kotlin DSL 设置。 所有已弃用的设置都已标记,并提供了替代方案。 迁移后,您可以删除此插件并使用与 TeamCity 打包在一起的版本。
CVS 插件已被从 TeamCity 中解除捆绑。 如果您想在服务器上继续使用, 请在 JetBrains Marketplace 下载并按照此处的说明进行安装 这里。
Eclipse 插件 已从 TeamCity 中解绑。 联系我们的支持如果您需要插件。
从 2021.2.2 到 2021.2.3 的更改
为了避免某些安全扫描器的误报,TeamCity 现在使用了一个没有漏洞类的 Log4j 1.2 库实例。 为了实现这一目标,我们在 GitHub 上创建了 自己的 Log4j 1.2 分支,去除了 TeamCity 不使用的易受攻击的包(
net
、电锯
、jdbc
和jmx
),并构建了库。
已知问题
从 2021.2.1 更改至 2021.2.2
更改了 .NET 程序集的格式
为了符合 .NET 测试的通用标识符格式,TeamCity 现在使用了不同的 .NET 程序集名字格式(省略了文件扩展名)。 更新到 2021.2.2 后,所有通过test
或vstest
命令启动的测试中都将应用这种格式,但是这些测试的调查和历史记录可能会被重置,该命令属于 .NET 运行器的一部分。 关于 .NET 中常用标识符格式变更的详细信息,可在 Microsoft Documentation 中查看。
捆绑工具更新
TeamCity 代理 Docker 镜像中的更新:
附带的 .NET Core SDK 版本已更新至 6.0.100。
捆绑了两个版本的 .NET Core Runtime :3.1.21 和 5.0.12。
从 2021.2 版本到 2021.2.1 版本的变化
为了符合 .NET 测试的常见标识符格式,TeamCity 现在使用了一种不同的 .NET 组件名称格式(省略了文件扩展名)。 在更新至 2021.2.1 后,此格式将应用于通过
test
或vstest
命令启动的所有 .NET 运行器的测试中,但是这些测试的调查和历史记录可能会被重置。如果使用
test
命令启动参数化的 .NET 测试,则 TeamCity 会将它们显示为具有多个运行的单个测试,而以前则分别计算并在 测试 选项卡中显示每个测试的参数值。
要恢复到前一个行为,请下载 我们的 .NET 插件的修复版本并按照 此处 描述的进行安装。
捆绑工具更新
Perforce Helix Core 客户端(p4)已更新至 2021.2 / 2201121 版本。
从 2021.1 版到 2021.2 版的变更
2021.2 中没有数据转换器
TeamCity 2021.2 与版本 2021.1 相比并未引入任何新的数据格式,也不包含数据转换器。 这简化并加快了这些版本之间的升级 / 降级速度。
2021.2 已知问题
无法在启用了 2FA 的 ReSharper 和 Eclipse 中使用远程运行
已为其 TeamCity 帐户配置了 两步验证 的用户,暂时无法从 ReSharper 和 Eclipse 远程运行和调试 TeamCity 构建。 如果使用这些工具的远程运行对您的管道至关重要,请确保在您的服务器上将 2FA 设置为 可选(默认选项),这样用户可以随时为自己的帐户禁用它。.NET 构建可能会因启用确定的源路径而失败
使用 .NET 步骤 进行的构建可能会出现 "当 DeterministicSourcePaths 为真时,SourceRoot 项必须至少包含一项顶级(非嵌套)项" 的错误。 这个错误是由预期路径格式(deterministic)与您的项目中所使用的方法(可能是绝对路径源文件)之间的冲突引起的。
作为解决方案,考虑添加/p:ContinuousIntegrationBuild=false
命令行参数来禁用 deterministic 源路径,或者下载并安装修复的 .NET 运行器,如 此处 所述。如果 .NET 版本 < 6.0,且构建代理的路径含有空格,则 .NET 构建会失败
如果您在一个 OS 路径中含有空格的构建代理上运行带有一个 .NET 步骤 的构建且使用的 .NET 版本早于 6.0,那么构建会因 "只能指定一个项目" 错误而失败。
作为解决方案,可以考虑切换到 .NET 6.0,或者下载并安装修复了这个问题的 .NET 运行器,如此处所述。当传递包含特殊字符的 .NET 参数时出现无效属性错误
如果通过 .NET 运行器运行 .NET 命令导致 "属性无效" 错误,您可能需要调整传递给它的系统参数。 自2021.2版本以来,.NET 运行器不再逃避参数中的特殊字符。 这种新方法允许传递参数列表,但如果您现有的参数包含此类特殊字符,可能会引发错误。
为了解决这个问题,请修改并调整正在传递的参数 —— 一定要转义所有出现的特殊字符。Microsoft Azure 代理无法自动启动/停止
在 Microsoft Azure 云中运行的构建代理可能无法自动启动/停止,并在超时后冻结在 "预定停止" 状态。
为了解决 Azure 插件中的这个问题,请设置teamcity.kotlinCoroutinesPool.configurator.enabled=false
内部属性。 此问题将在升级到下一个错误修复更新后自动解决。使用 Ruby Environment Configurator 构建的项目没有兼容的代理
在构建配置中启用 Ruby Environment Configurator 功能将会为其添加env.AAAA
代理需求。 因此,没有这个环境变量的构建代理将被标记为不兼容,并且 TeamCity 将无法在它们上运行此构建。
为了解决这个问题,请按照这里所述的方法将 Ruby 插件更新到已修复的版本。 此问题将在升级到下一个错误修复更新后自动解决。DSA/DSS SSH 密钥在 TeamCity 2021.1.4 和 2021.2 中无法使用
升级到这些版本后,DSA/DSS 格式的 SSH 密钥会因“ssh-dss 不能用作身份公钥类型”错误而被拒绝。
若希望在 TeamCity 中继续使用它们,请按照 这个解决方式进行。从 Git LFS 3.0.0 获取文件时出现 UnknownHostException
用户在从 Git LFS 3.0.0 向构建代理获取文件时,可能会遇到java.net.UnknownHostException
错误。 这个版本 切换到了纯SSH协议。 根据这个协议,它在主机名之前添加—
。 TeamCity 使用的 JSch 库并不支持 SSH 连接,并将这些符号视为主机名的一部分。
要解决此问题,请设置teamcity.git.use.native.ssh=true
构建配置参数。 或者,您可以暂时将 Git LFS 降级到 3.0.0 之前的版本。 这个问题将在 TeamCity 2021.2.1 中得到解决。如果启用了 .NET 性能分析,C# 脚本构建可能会失败
在启用了 性能分析 的 .NET 上运行带有 C# 脚本 步骤的构建可能会导致 "无法创建 CoreCLR,HRESULT:0x80004005"的错误。 此问题只会在 Docker 容器内部或在 Windows Subsystem for Linux(WSL)中启动 .NET 时发生。
要解决此问题,需要在您的构建配置中添加一个 环境变量COMPlus_EnableDiagnostics=0
。当创建Amazon EC2现货舰队配置文件时,TeamCity无法初始化云客户端
当为Amazon EC2现货舰队创建云配置文件时,用户可能会遇到"无法初始化 'amazon' 云客户端。 在解析 config. 时发生异常错误。 这个错误只有在当前 fleet 的 实例类型要求 中启用了 "指定与您的计算要求相匹配的实例属性" 选项时才会发生。
为了解决这个问题,请在将其上传到 TeamCity 之前,从 fleet 的 JSON 配置文件中删除实例需求
块。 这个问题将在 TeamCity 2022.1 中得到修复。如果使用 AWS KMS ,构建可能无法发布工件到 Amazon S3
升级到 2021.2 后,尝试将工件发布到用 AWS KMS 密钥加密的 Amazon S3 桶可能会出现构建失败的情况。 这个问题是由最近添加的构建工件的完整性检查引起的。 要在项目中临时禁用它并解决此问题,请在 项目级别 上设置teamcity.internal.storage.s3.upload.enableConsistencyCheck=false
属性。
此问题将在 TeamCity 2021.2.3 中得到修复。
已取消的双向代理服务器通信协议
双向代理服务器通信协议的支持已经停止。 自版本 2021.2 起,代理将只通过 单向协议 连接到服务器。
要将 TeamCity 从早于 9.1 的版本(首次引入了单向支持)升级到 2021.2 ,请使用以下方法之一:
将服务器升级到 2021.1 版本,等待所有代理也升级完毕,然后将服务器升级到 2021.2。
将服务器升级到 2021.2 版本,手动卸载旧的代理,然后 安装新的代理。
Perforce自动标签变为默认
如果您对 Perforce 根使用 VCS 标签化,请注意,TeamCity 现在默认创建 自动标签。 如果您想要继续使用静态标签,您可以通过添加 teamcity.perforce.useStaticLabels=true
内部属性来恢复至之前的操作方式。
修复了构建链清理中的不一致性
以前,在构建依赖关系配置中,如果其依赖配置存在对另一个设置为保存的构建配置的快照依赖,则从未清理过构建。 例如,如果 C 依赖于 B,快照依赖于 A 并且 A 被设定为要保留,即使在 C 中启用了“保留构建依赖项”选项,B 也不会被清理。 现在,制品依赖配置中的构建(C)将会根据清理规则得到适当、完全的清理。
此修复恢复了预期的行为,但我们建议您复查一下您的清理设置,以确保在升级之后不会有构建意外地被清理。
TeamCity 服务器 2022.04 计划弃用 Java 8
TeamCity 2021.2 服务器支持 Java 8 和 11 版本,但在下一个版本中,即将于 2022 年 4 月发布的 TeamCity 2022.04,将停止支持 Java 8。 如果您使用的是非捆绑版本的 Java 8,我们强烈建议您在 2022.04 版本发布之前将您的服务器迁移到 Java 11。
请注意,TeamCity 与 Java 17 不兼容,因此 Java 11 是 TeamCity 服务器 2022.04 计划支持的唯一版本。
捆绑工具更新
捆绑的 Amazon Corretto Java 已在 TeamCity 服务器和代理 Docker 镜像中更新至 11.0.12.7.1 版本,适用于 Windows 和 Linux。
附带的 Tomcat 已更新至 8.5.72 版本。
附带的 JaCoCo 已更新至 0.8.7 版本。
捆绑的 Ant 已更新至版本 1.10.11。
在 TeamCity DSL 中使用的捆绑式 Kotlin 编译器已更新到 1.5.31 版本。
附带的 dotCover 工具已更新至 2021.2.2 版本。
以下通知插件已不再活跃使用,因此已从 TeamCity 中解绑:
RSS feed 支持
如需在 TeamCity 2021.2 中继续使用他们的功能,您需要通过上方的链接下载所需的插件,并按照此处所述进行安装。
2021.1.3 到 2021.1.4 的变更
在 Linux 中 TeamCity 代理 Docker 镜像的更新:
Git 已更新至 2.25.1 版本。
Perforce Helix Core 客户端(p4)已更新为 2021.1 / 2179737 版本。
2021.1.2 至 2021.1.3 的变更
没有潜在的破坏性更改。
从 2021.1.1 更改至 2021.1.2
2021.1 至 2021.1.1 的更改
没有潜在的破坏性更改。
已知问题
其他更新
如果您在 2021.1 中添加了
teamcity.nuget.feed.async.request.enabled
内部属性以解决 此问题,请记住在升级到 2021.1.1 时将其删除。被归档的子项目的 VCS roots 现在默认在 项目设置 | VCS Roots 页面中隐藏。 您可以通过启用 包括已归档的 过滤选项来显示它们。
2020.2.x 到 2021.1 的变更
没有潜在的破坏性更改。
已知问题
Git 使用镜像已被弃用,优先使用 Checkout Policy
Git VCS 根现在获得了新的 Checkout Policy 选项,它取代了 Use Mirrors 复选框,并提供了更大的灵活性。 在升级过程中,根设置将保持其选择的状态。 然而,需要更新 Kotlin DSL 规范中的 Git roots 的设置。
在 Git VCS roots 的 Kotlin DSL 中, useMirrors
参数已经被弃用,并被支持以下值的 checkoutPolicy
参数所替换: AUTO
(默认), USE_MIRRORS
, NO_MIRRORS
, SHALLOW_CLONE
。
已弃用的非可移植 Kotlin DSL
非移植型 Kotlin DSL 格式已被弃用。 在此格式中已无法创建新项目。 为了兼容性,已经以此格式存储的项目将继续运行。
更改了 Windows 安装程序的默认端口
TeamCity 安装程序中的默认端口已被更改为 8111。 现在, tar.gz
和 exe
的安装程序都使用相同的端口。
将 OR 设置为 Lucene 搜索的默认操作符
TeamCity 基于 Lucene 的搜索现在默认使用 或
操作符,而不是 和
。 这对应于默认的 Lucene 语法,有助于优化搜索行为并减小其索引大小。
默认的 SVG 构建状态图标
构建状态图标,现在通过默认的 http://<TeamCity 服务器主机>:<端口>/app/rest/builds/<构建定位器>/statusIcon
REST API endpoint 提供,已经从 PNG 格式更改为 SVG 格式。 statusIcon.svg
端点仍然得到支持,以便与现有的脚本兼容。
若要获取 PNG 图标,请使用 statusIcon.png
端点。
未捆绑的旧版 REST API
以下旧版本的 REST API 已被解包:6.0、7.0、8.1、9.0、9.1。 如果此次更改给您的设置带来了任何问题,请通过任何 反馈通道 联系我们。
捆绑工具更新
在 TeamCity 服务器的 Docker 镜像和 Windows 安装程序中,已将捆绑的 Amazon Corretto Java 更新至 11.0.11.9.1 版本。
附带的 Ant 已更新至 1.10.10 版本。 请注意,此版本需要 Java 8 或更高版本。
捆绑的 dotCover 和 ReSharper CLT 已更新至 2021.1.2 版本。
附带的 JaCoCo 已更新至 0.8.6 版本。
在 TeamCity DSL 中使用的捆绑式 Kotlin 编译器已更新至 1.4.32 版本。
在 Kotlin Script 构建运行程序中使用的捆绑 Kotlin 已经更新到 1.5.0 版本。
在 Git 插件中使用的 JGit 版本已更新至 5.10.0.202012080955-r。
在 Subversion VCS 根目录中使用的 SVNKit,已更新到 1.10.3 版本。
其他更新
我的设置 & 工具页面已经更名为您的个人资料。
从 2020.2.3 版本到 2020.2.4 版本的变化
验证 NuGet 中用到的 NuGet 依赖性触发器
为确保与 NuGet 的集成安全,TeamCity 现在在启动具有 NuGet 依赖性触发器 的 Windows 上的构建时,会检查是否使用了受信任的 NuGet 安装程序。 如果您的触发器使用的是通过 管理 | 工具 安装的 NuGet 版本,那么此验证将顺利进行,无需用户进行任何操作。 否则,您可能会遇到 "NuGet 依赖性触发器问题" 错误。 推荐的解决方案是将所有受影响的触发器切换到已经通过 TeamCity UI 常规安装的任何 NuGet 版本。 这些版本会自动出现在触发器设置的 NuGet.exe 下拉菜单中。 另外,如果您需要使用自定义的 NuGet 可执行文件并且绝对信任它,您可以通过指定以下 内部属性 将其添加到白名单:
SSH 运行器:使用默认密钥进行身份验证的改变
在这个版本中,我们改变了 SSH Exec 和 SSH Upload 构建运行程序中使用默认私钥进行 SSH 认证的行为。 以前,在构建期间通过 SSH 进行身份验证时,构建代理会使用配置在代理的 SSH 配置中的用户名,或者,如果缺少的话,运行此代理的 OS 用户的名称。 在构建步骤的设置中,可选的 Username 字段的值总是会被忽视。 现在,如果指定了此值,代理将使用它进行 SSH 认证,而不是使用 SSH 配置中的值。
如果您之前已直接在构建步骤中配置了 SSH 用户名,并且在这些步骤中选择了 默认私钥 认证方法,请确保此用户名仍然适用,并允许成功认证。
从 2020.2.2 版本到 2020.2.3 版本的更改
捆绑工具更新
在 TeamCity 代理 Docker 镜像中,Docker 已更新至 19.03.14 版本,而 Docker Compose 则已更新至 1.28.5 版本。
SBT,在Simple Build Tool(Scala)插件中使用,已更新至1.4.7版本。
从 2020.2.1 更改至 2020.2.2
IntelliJ 平台兼容性
IntelliJ IDEA 2019.2 及更早版本,以及早于 IntelliJ 平台 193 版本发布的其他基于 IntelliJ 的产品,已经不再受到 IntelliJ Platform plugin 的支持。 查看 版本兼容性表 以获取详细信息。
捆绑工具更新
Kotlin,被用于 TeamCity DSL,已经更新至版本 1.4.21。
其他更新
从 2020.2 更改为 2020.2.1
没有潜在的破坏性更改。
已知问题
TeamCity 服务器的 Windows Docker 镜像不允许从 UI 重启服务器。 查看如何通过命令行 停止并启动服务器。
TeamCity 服务器的 Linux Docker 镜像的重大更改:默认非 root 用户
遵循我们对 代理 Docker 镜像 实施的安全实践,TeamCity 服务器 Linux 版 Docker 镜像现在默认以非根用户身份运行。
当您试图以默认用户身份运行 Linux 镜像时,您会遇到 "Permission denied" 错误。 为了防止这种情况,您需要更改主机数据目录的所有权:运行 chown -R 1000:1000
并应用于所需的卷。 对于大型目录,此操作可能需要很长时间,并可能降低磁盘性能。
作为替代,您可以通过传递 -u 0
参数给 docker run
命令,以根用户身份启动容器。 这是一个快速的解决方法,可以节省更改目录所有权的时间。 然而,我们建议您长期坚持使用 chown
方法。
dotnet run 命令行参数无自动前缀
自此版本起,.NET 构建运行程序 在 dotnet run
参数之前不再应用 --
。 之前,运行器自动添加了这个前缀,使得无法将自定义选项传递给 run
命令。 为了解决这个问题,我们已经禁用了之前的行为。
遗憾的是,受影响的 .NET 构建步骤在升级时无法自动转换。 如果您的任何步骤向正在运行的 .NET 应用程序传递参数,请确保更改这些步骤,并用 --
来预置相应的参数。
捆绑工具更新
捆绑的 Tomcat 已更新至 8.5.61 版本。
2020.1.x 至 2020.2 的变更
对于使用 PostgreSQL 数据库的 TeamCity 服务器,必须将 JDBC 驱动程序升级到 42.x 版本。 否则,可能会发生严重的性能下降。
已知问题
如果升级在 OptimizeAndCleanupIdsGroupsTableConverter 中出现错误,请按照 此问题 中描述的解决方法进行操作。
带有
最新
标签的 TeamCity 代理 Docker 镜像不会捆绑 Docker。
要在 TeamCity 2020.2 代理中运行 Docker, 请下载带有{TEAMCITY_VERSION}-linux-sudo
标签的teamcity-agent
镜像。 更多信息可以在我们的 Docker Hub 文档中找到。
默认的新标题
新的页眉在经典和Sakura用户界面中都已启用。 一些为旧版标题所开发的插件可能无法在新版标题中工作。 使用 我们的新API,您可以使您的自定义插件与新的标题兼容,或者使用现代Web技术编写新的插件。
如果您在此标题中显示重要信息或操作时遇到困难,且更新插件并非一个方便的选择,您可以设置 teamcity.ui.useClassicHeader=true
内部属性 - 这将把您的 TeamCity 标题切换到以前的视图。 请注意,这并不是一个推荐的解决方案,因为在未来的版本中,我们可能会禁用这个过时的头文件。
重建搜索索引
TeamCity search中的 Lucene 版本已更新至 8.5.1。 在升级过程中,TeamCity 将重新索引服务器上的所有构建,这可能需要一些时间并会增加 CPU 的负载。 在重新索引期间,部分构建可能不会出现在搜索结果中。
捆绑式 Python 运行器
外部 Python 构建运行程序 不再受支持。 所有现有的构建步骤将继续正常工作,但我们建议将现有的 Python 步骤切换到新的 内置 运行器。
Gradle 更新
以前,Gradle 运行器的 Build 文件 字段默认被设置为
build.gradle
。 我们已移除了此默认值,因为一些用户依赖于构建文件的自定义名称,更愿意让 Gradle 决定选择哪个文件。
如果在您的 Gradle 步骤中选择了build.gradle
作为构建文件,那么此设置将保留。 在其设置存储在 VCS 中的项目中,TeamCity 将提示提交相应的更改,以便在版本化的项目设置中明确指定build.gradle
属性。现在,Gradle 运行器会根据分配给相应测试方法的
displayName
属性显示测试名称。 如果您的 Gradle 测试被带有自定义displayName
属性的标注(例如,带有@DisplayName
注解的 JUnit 5 测试),那么在升级 TeamCity 后,它们的名称将会发生变化。 这可能会破坏相应构建中的测试和调查历史记录。 为了防止这种情况,您可以考虑使用teamcity.internal.gradle.testNameFormat=name
内部属性将行为切换回来。
次级节点的新责任
自版本 2019.2 开始,只要至少有一个责任被分配给它,辅助节点就允许用户操作。 在2020.2中,我们新增了一项责任 —— "处理用户的数据修改请求"(2023.05版本更新——此份责任已被重命名为"处理用户界面行为和用户请求的负载均衡")。 担负此责任的节点可以处理所有当前支持的用户操作,并允许更改项目设置。 没有它,节点将提供只读接口。
在升级时,只要您的次要节点至少具有一个其他责任,此责任将在所有次要节点上自动启用。 这将确保这些节点的当前功能不受影响。 为了允许用户在新的次要节点上执行操作,您必须在 Administration | Server Configuration中手动启用新的责任。
捆绑工具更新
在 TeamCity 服务器和代理 Docker 镜像(Windows 和 Linux 两种)中的 .NET 已更新至版本 3.1.403。
TeamCity Docker 镜像中的 Java 已进行更新:
在 Windows 服务器镜像中:至 Amazon Corretto x64 v.11.0.9.11.2
在 Linux 服务器镜像上:转到 Amazon Corretto x64 v.11.0.9.11。
在 Windows 和 Linux 代理镜像上:转至 Amazon Corretto x64 v.8.272.10.3
在 TeamCity 服务器和代理 Windows 安装程序中捆绑的 Java 已更新至 11.0.9.11.2 版本。
捆绑的 Tomcat 已更新到 8.5.57 版本。
SAC Windows 镜像已更新至2004版,更新内容已包含在 TeamCity 服务器 Docker 容器中。 Windows LTS 版本是 1809,就像 TeamCity 2020.1 中一样。
TeamCity 服务器 Docker 容器中的 Linux 镜像已更新为版本 20.04(LTS)。
捆绑的 dotCover 和 ReSharper CLT 已升级至 2020.2.4 版本。
已弃用的 Visual Studio 2003 构建运行程序在 TeamCity 中已被禁用。 我们建议使用 .NET 运行器代替。
如果您正在积极使用 VS 2003 运行器,且不能轻易迁移到 .NET 运行器,请通过我们的任何一个 反馈渠道 告诉我们。在新安装的 TeamCity 中建议用于外部数据库的 JDBC 驱动程序已更新至以下版本:
MySQL - 8.0.22
MSSQL - 8.4.1
PostgreSQL - 42.2.18
其他更新
在检测 GitHub issues 时,TeamCity 现在会过滤掉没有分配问题的拉取请求。 如果您需要在问题日志中显示此类独立的拉取请求,您可以通过设置
teamcity.issues.github.filter.pull.requests=false
内部属性来禁用此过滤器。Email Notifier 现在使用的TLS协议的版本与当前 TeamCity 服务器的 JVM 所支持的版本相同。
从 2020.1.4 到 2020.1.5 的变化
没有潜在的破坏性更改。
从 2020.1.3 版到 2020.1.4 版的更改
捆绑工具更新
Bundled Amazon Corretto Java 已在 TeamCity 服务器安装程序和 Docker 镜像中更新到 11.0.8 版本。
Mercurial,在 版本 2020.1.2 中被弃用,现在再次在 Windows Server Core 代理 Docker 镜像中获得支持。
从 2020.1.2 到 2020.1.3 的更改
.NET 构建运行程序现在支持早期版本的 Visual Studio 和 MSBuild。 当前支持的版本有:Visual Studio 2010 或更高版本,MSBuild 4 / 12 或更高版本。
已知问题
如果您试图重新运行一个具有工件依赖性但不具有快照依赖性的构建,那么 Re-run build 对话框将无法加载。
这个问题将在 TeamCity 2020.1.4 中得到修复。 要在 2020.1.3 版本中解决这个问题,请按照 此说明 操作。
从 2020.1.1 到 2020.1.2 的变化
我们的 Windows Server Core 代理 Docker 镜像已停止支持 Mercurial 。 如果您需要在 Windows Server Core 代理上使用 Mercurial ,请考虑拉取代理 Docker 镜像的上一版本 — 2020.1.1。
从 2020.1 更改为 2020.1.1
.NET 运行器引入了 custom command 选项。 请注意,如果您在配置了自定义 .NET 命令后将 TeamCity 降级到之前的版本,那么在构建过程中,相应的构建步骤将被忽略。
在 TeamCity 服务器和代理 Docker 镜像中使用的 Linux 版本已更新为 4.19.76-linuxkit。
已知问题
在 TeamCity 的经典 UI 中,标题中的 Projects 链接缺少展开按钮。
要解决这个问题,请按照 这里 描述的指令进行操作。
2019.2.x 至 2020.1 的变更
没有潜在的破坏性更改。
已知问题
Jira Cloud Integration 构建功能需要特定的 VCS URL
新的 Jira Cloud 集成 构建功能所使用的 Jira Cloud API,需要以特定格式发送服务器 URL。 因此,构建功能并未默认支持像 Perforce 、 TFS 和 SVN 这样的 VCSs。
为了解决这个问题,我们已经更新了相关插件,您可以在我们的追踪器中找到与相关问题关联的插件。 请下载修复后的插件,并按照这里所述进行安装。
我们下次发布时,附带的 Jira Cloud 插件将自动更新此修复程序。
该功能可能也无法解析一些不符合 Jira Cloud API 所期望格式的 Git 路径。 在这种情况下,您可以手动更改 URL(例如,从 git@<vcs_address>:<workspace_ID>/<repo_name>.git
更改为 ssh://git@<vcs_address>/<workspace_ID>/<repo_name>.git
),或者按照上述说明下载已修复的插件。
Jira Cloud Integration" 功能不支持旧版的 "Jira Cloud" 域名
目前,新的 Jira Cloud 整合 构建功能仅支持 atlassian.net
域。 我们已在负责插件的修复版本中增加了对遗留 jira.com
域的支持。 如果您的 Jira Cloud 服务器位于 jira.com
域内,您可以下载附加在 相关问题 上的插件,并按照 这里 的描述进行安装。
我们下次发布时,捆绑的 Jira Cloud 插件将自动更新此修复程序。
在 Slack 进行身份验证时出现 Bad Redirect URI 错误
为了能够从 TeamCity 登录到 Slack,您需要在 Slack 应用的设置中将 TeamCity 服务器的所有可能的 URI 指定为 重定向网址。
如果您使用 nginx 在代理服务器后设置 TeamCity,尝试与 Slack 建立连接时,可能仍会出现 bad_redirect_uri
错误。 此错误是由 nginx 和 Tomcat 配置之间的不匹配引起的。
要解决此问题,请下载附在相关问题上的修复插件,并按照此处的描述进行安装。 或者,您可以尝试更新 Tomcat 设置。
我们下一次发布时,附带的 Slack 插件将会自动更新这个修正。
在升级后的 2020.1 EAP1 安装中遇到内置身份验证的问题
如果您已经按照我们的早期访问计划安装了 2020.1 EAP1 版本,您可能会在通过 内置认证 登录 TeamCity 时遇到问题。 此问题可能会在从任何 2020.1 EAP 版本(EAP1或其升级的任何后续版本)升级到 2020.1 正式版构建后出现。
为了解决这个问题,请将以下查询发送到 TeamCity 数据库:
服务器和代理中 Java 支持的变化
Java 11 已与 TeamCity 服务器 Windows 安装程序和服务器 Docker 镜像一起捆绑,而不是 Java 8。
TeamCity 代理停止支持早于 Java 8 的版本。 如果您的任何代理运行在早期版本的 Java 上,请确保升级他们的 JRE ,以便您可以继续在这些代理上运行构建。
新的 env.JDK_ 环境变量格式
为了更好地与当前和未来的 Java 版本对齐,我们引入了一种新的格式的 env.JDK_
环境变量。
从 2020.1 开始,格式如下: env.JDK_<major>_<minor>[_x64]
。 例如: env.JDK_1_6
、 env.JDK_1_7
、 env.JDK_1_8
、 env.JDK_11_0_x64
。
这样,如果您正在使用较旧的 Java 1.4,适当的变量是 env.JDK_1_4
,而 env.JDK_14_0
将用于 Java 14.0。
为了向后兼容,以前的环境变量,例如 env.JDK_16
或 env.JDK_18
,也将被生成,但这些变量将不再在 TeamCity 自动完成弹出菜单中显示。
如果您在构建脚本中使用这些环境变量,我们建议您迁移到新格式。
查看 相关问题。
需要插件重新编译
实现某些构建运行程序的插件可能需要被重新编译 / 升级。
当创建或更新相应的自定义构建运行程序的新构建步骤时,相应的错误可能看起来像 java.lang.NoSuchMethodError:jetbrains.buildServer.controllers.admin.projects.BuildRunnerBean.getPropertiesBean
。
参阅有关 Checkmarx plugin 和 SonarQube Runner plugin 的相关问题。
Agent Docker 镜像以非 root 用户运行
为遵守推荐的安全实践,TeamCity 代理 Docker 镜像现在以非根用户身份运行。
这项更改可能会影响以下使用情况:
要创建/更新基于标准 TeamCity 代理镜像的自定义镜像,您可能需要先切换到
root
用户(具体请参见 相关问题)。如果您将主机目录挂载到容器中,可能会遇到 "Permission denied" 错误。 为了防止这个问题,您可以尝试以下任何一种解决方法:
将目录所有者的 UID 设置为
1000
,使用chown
命令。将
--用户
参数与docker run
命令一起发送,以便为 Docker 用户设置与主机相同的 UID。 例如,使用docker run -it --user $(id -u) ...
。请注意,TeamCity 会自动为可写目录创建卷,通常无需显式映射它们。 请考虑省略所有的明确引用,以防止权限问题。
已弃用的 Windows 托盘通知程序
TeamCity Windows 托盘通知程序已被新的 浏览器通知扩展 替代,并已停止使用。
Windows 托盘通知程序将继续与 TeamCity 的新版本一起工作,但我们建议您尝试新的扩展程序。 请注意,自2020.1版本以来,TeamCity中的 我的设置&工具 | 通知规则 | Windows托盘通知程序 标签已被重命名为 浏览器通知程序。
附带的 Kubernetes Support 插件不包含 Helm runner
现在将 Kubernetes Support plugin 一同捆绑在 TeamCity 中。 在升级过程中,如果外部插件已安装在您的 TeamCity 服务器上,系统将替换掉它。 请注意,捆绑的插件并未包含 Helm 构建运行程序。 为了继续在您的构建配置中使用这个运行器,请安装 新的外部插件。
CORS 支持对写操作的限制
TeamCity 通过引入 CSRF 令牌,提高了 REST API 集成机制的安全性。 除非您的自定义集成脚本依赖于跨源资源共享(CORS)进行写操作,且 rest.cors.origins
内部属性在 TeamCity 中 已启用 (默认情况下为禁用),否则此更改不会影响脚本的行为。
之前,TeamCity 中的 CSRF 保护是通过验证 HTTP 请求的 来源 / 引用者
头部来呈现的。 为了提高 TeamCity CSRF 保护,这种方法已被禁用,转而使用更安全的方法 —— CSRF 令牌。 自本版发布以来,TeamCity 已停止对 POST / PUT / DELETE
REST API 请求的 CORS 机制提供支持。 跨源 GET 请求的头部处理如同以前一样,仍然需要 CORS 配置。
如果必要,您可以通过设置 teamcity.csrf.paranoid=false
内部属性来强制验证 来源 / 引用者
头部以编写 CORS 操作。 请注意,这是一个暂时且较不安全的解决方案:我们强烈建议您重构现有的请求,使其符合新的安全政策,并在 CSRF 头或参数中提供一个令牌。 CSRF 令牌可以通过 GET https://your-server/authenticationTest.html?csrf
请求获得,并通过 X-TC-CSRF-Token
HTTP 头提供给写 CORS 请求。
捆绑工具更新
附带的 IntelliJ IDEA 已更新到版本 2020.1.1。
附带的 Ant 已更新至版本 1.9.14。
附带的 Tomcat 已更新至版本 8.5.54。
捆绑的 Maven 已更新到版本 3.6.3。
Kotlin,在 TeamCity DSL 中使用,已经更新到版本 1.3.70。
在新安装的 TeamCity 中建议用于外部数据库的 JDBC 驱动程序已更新至以下版本:
MySQL - 8.0.20
MSSQL - 8.2.2
PostgreSQL - 42.2.12
REST API 变更
按分支 ( .../app/rest/testOccurrences?locator=branch(XXX)
请求) 筛选测试事件的方式已经改变。 它过去只支持区分大小写匹配的分支名称。 现在, XXX
值支持分支定位器(与过滤构建时相同):它默认为不区分大小写,并匹配 <default>
分支的显示名称。
其他更改
现在,如果某个角色的权限超过当前用户的角色,用户将无法将该角色分配给其他用户。
如果在升级到 2020.1 后,您遇到某些角色对用户不可用的问题,请确保这些角色不包含任何超过相应项目管理员权限的权限。TeamCity 已停止支持 Internet Explorer。 请使用 Microsoft Edge 浏览器。
自此版本以后,TeamCity 2019.2.3 中引入的新的 .NET 运行程序与过时的外部 .NET CLI Support 插件(在 2017.1 及更早的版本中使用)不兼容。 如果您之前已安装了这个插件,请从您的服务器中 卸载 该插件,以便能使用新的 .NET 运行器。
从 2019.2.3 版本到 2019.2.4 版本的改变
没有潜在的破坏性更改。
自 2019.2.2 至 2019.2.3 的变更
重构的 .NET 构建运行程序
.NET CLI (dotnet)构建运行程序已经被重构并重命名为 .NET ,从而强调现在它支持所有在 TeamCity 中作为多个构建步骤实现的 .NET 相关操作。
所有现有的 .NET CLI(dotnet)步骤将在新的 .NET 名称下照常运行,无需额外调整。
我们停止为 MSBuild,Visual Studio (sln),Visual Studio 2003 和 Visual Studio Tests 运行器提供积极的支持。 这些步骤保留下来,是为了使现有的构建配置与 TeamCity 的新版本兼容。 我们建议您将所有受影响的构建步骤切换到 .Net 运行器,以在我们接下来的版本中获得新功能和支持。
参阅 .NET 描述 以获取有关新的 .NET 步骤和迁移注释的更多信息。
如果您在迁移到 .NET 运行器过程中遇到任何问题,或者遇到其他相关问题,请随时通过任何便利的反馈渠道与我们联系。
已知问题
建立 SSL 连接时握手失败
一些用户在 TeamCity 服务器尝试建立 SSL 连接时,可能会收到“Received fatal alert: handshake_failure”的错误。 问题是由损坏的 sunec.dll
在与 TeamCity 2019.2.3 绑定的 JRE 中引起的。
要检查此问题是否影响了您的安装,请打开 <TeamCity_installation_directory>/jre/bin/sunec.dll
文件。 如果此文件中有 JSON 代码,那么您的服务器会受到影响。 为了解决这个问题,请按照相关问题中所描述的步骤进行操作。
NuGet源凭证对于外部仓库与 .NET 运行器不兼容
.NET 构建运行程序 目前不支持在外部仓库中使用 NuGet 供稿认证信息 进行认证。
要解决 TeamCity 2019.2.3 中的这个问题,下载 已修补的 .NET Packages Support 插件 并像安装任何其他 附加插件 一样进行安装。 附带的 .NET Packages Support 插件将在我们的下一次发布中自动更新以修复。
AWS 区域 us-east-1 无法在 S3 工件存储设置中设置
如果在 S3 物品储存设置中选择了 us-east-1
区域,保存设置时将自动重置为另一个可用区域。 这是由 AWS 返回的 us-east-1
的错误存储桶位置引起的。
为了解决 TeamCity 2019.2.3 中的这个问题,下载修补过的 TeamCity S3 存储插件,并像安装其他附加插件一样进行安装。 附带的 S3 Storage 插件将在我们的下一版本中自动更新以修复问题。
为 Windows 安装程序更新的捆绑 Java
在 TeamCity 服务器和代理的 Windows 安装程序以及 Docker 镜像中捆绑的 Java 版本已更新为 Amazon Corretto 8.252.09.1。
从 2019.2.1 到 2019.2.2 的变更
缓存 Git 子模块
为了提高代理检出的性能,TeamCity 在代理上缓存常规的 Git 仓库。 自此版本开始,它还会缓存 Git 子模块。
如果您的自定义脚本或设置依赖于子模块的主替代源,且它导致 Git 产生错误,可以考虑以下几种解决方法:
通过设置构建参数
teamcity.internal.git.agent.submodules.useMirrors
为false
来禁用新的镜像机制。将您的自定义设置修改为指向父
git
目录,而不是指向准确的源目录。
捆绑工具更新
TeamCity Visual Studio 插件网络安装器已更新至 ReSharper 版本 2019.3.2。
2019.2 至 2019.2.1 的变更
没有潜在的破坏性更改。
2019.1.x 至 2019.2 的变更
没有潜在的破坏性更改。
已知问题
在 .NET 项目中恢复 NuGet 包可能存在的问题
如果构建包含至少一个 .NET CLI(dotnet)步骤和一个MSBuild或Visual Studio(sln)构建步骤(或两者),TeamCity 可能无法恢复 NuGet 包。
这个问题是由于这些构建运行程序之间的缓存目录路径存在差异导致的。MSBuild 和 Visual Studio (sln)运行器使用 NuGet 全球缓存的默认路径,而 .NET CLI (dotnet)运行器重新定义了此路径(例如,在 Docker 容器内运行时)。
建议的解决方法是使用 NuGet Installer 构建运行程序,而不是使用 .NET CLI(dotnet)运行器来恢复软件包。
切换到 Windows 安装程序和 Docker 镜像中的 64 位捆绑 Java
在 TeamCity 服务器和代理的 Windows 安装程序以及 Docker 镜像中,捆绑的 Java 版本现在是 64 位的 Amazon Corretto 8(早期的 TeamCity 版本捆绑的是 32 位的 Java,而 TeamCity 2019.1 捆绑的是 AdoptOpenJDK)。
如果您在 Windows 上使用的是默认捆绑的 Java,确保满足以下条件:
TeamCity 服务器和代理在 64 位 Windows OS 上运行。 如果您需要使用32位操作系统,您需要安装并使用32位Java来运行 TeamCity;
如果 TeamCity 服务器已手动配置了 内存设置(已定义
TEAMCITY_SERVER_MEM_OPTS
环境变量),则需要增加-Xmx
参数的值(建议增加到之前值的两倍)。 在增加该值之前,请确保机器有足够的物理内存来应对。如果您使用 Microsoft SQL Server 作为 TeamCity 数据库,并使用集成的 MS SQL 身份验证,则必须在适当的位置有 64 位
sqljdbc_auth.dll
原生库存在。如果服务器上有任何执行本地工具的自定义逻辑,请检查它是否仍然可以与新的进程位宽度一起工作。
已停止运行的构建节点
Running Builds Node 已被停止使用。 在多节点设置中,您可以选择为 "处理运行构建产生的数据" 责任配置一个次要的 节点。
Git 提取内存的自动管理
TeamCity 现在可以自动管理 git fetch
进程使用的内存量。
如果您之前使用过 teamcity.git.fetch.process.max.memory
内部属性来设置每个 VCS 根目录中可供获取的内存量,您现在可以禁用它,将内存消耗的检测任务委托给 TeamCity 服务器。 为了控制可用内存的限制,使用 teamcity.git.fetch.process.max.memory.limit
属性。
捆绑工具更新
附带的 IntelliJ IDEA 已更新至 2019.3 版本。
在 TeamCity DSL 中使用的 Kotlin 已经升级到 1.3.60 版本。
在 TeamCity Linux 代理镜像中的 Docker 客户端已升级至 19.03.3 版本,以预防 Docker 意外停止的问题(请参阅相关的 Docker 问题)。
Docker Compose 已更新至 1.24.1 版本。
捆绑的 dotCover 和 ReSharper CLT 已升级到 2019.2.3 版本。
独立的 VCS 支持插件,适用于 ClearCase 和 SourceGear Vault
ClearCase 和 SourceGear Vault 的 VCS 支持插件已经被拆分。 为了能够在 TeamCity 中使用这些 VCS 类型中的任何一种,下载并安装所需的插件,如 此处 所述。
从 2019.1.4 版本变更至 2019.1.5 版本
在 TeamCity 代理 Docker 镜像 中,Docker 已经更新至 19.0.3 版本,而 Docker Compose 已经更新至 1.24.1 版本。
从 2019.1.3 到 2019.1.4 的变更
附带的 Java 已更新为 OpenJDK 8u222(Docker Windows TeamCity 镜像除外)。
已知问题
Amazon ECR 缺少默认凭证提供商链选项
此问题已在 TeamCity 2019.1.5 中得到修复。
由于我们的 Docker Support 插件最近发生的变化," Default credential provider chain "选项在 Amazon ECR 连接设置中变得无法使用。
如果此选项之前在某个 ECR 连接中启用,且您对此连接进行了任何更改,此选项的状态将自动设置为 false
。 当任何构建尝试使用此连接时,它将无法启动并出现 "Access key 不能为空" 的错误。
为了在不升级至 2019.1.5 的情况下解决此问题,您可以从相关问题中下载已修复的 Docker Support 插件,并将其上传至服务器Administration | Plugins列表页面。
NuGet 源中缺少的包
此问题已在 TeamCity 2019.1.5 中得到修复。
在某些情况下,当一个构建应该创建并发布多个 NuGet 包到 NuGet 源,且启用了包索引时,可能有一些包没有被发布到源。 这个问题是由最近在 NuGet Packages Indexer 中的更改造成的。
为了解决这个问题而不升级到 2019.1.5,您可以从 相关问题 中下载修复的 NuGet 支持插件,并在 服务器Administration | Plugins列表 页面上传。
2019.1.2 至 2019.1.3 的更改
已知问题
在使用版本设置时,从 VCS 导入设置可能会丢失构建历史记录。 详情。
捆绑工具更新
附带的 ReSharper 命令行工具(Inspections 和 Duplicates Finder)已经升级到 2019.2.1 版本。
从 2019.1.1 变更至 2019.1.2
Running Builds Node 已被弃用,并将在 TeamCity 2019.2 中停止使用。 在一个 多节点设置 中,您可以配置一个辅助节点来负责 "运行构建产生的数据处理" 的任务。
已知问题
2019.1 到 2019.1.1 的变更
捆绑工具更新
捆绑的 IntelliJ IDEA 已更新至 2019.1.3。
附带的 ReSharper 工具(Inspections 和 Duplicates Finder)已经升级到 2019.1.0-eap08d 版本。
从 2018.2.x 更改为 2019.1
Amazon 实例的必填标签
现在,所有由 TeamCity 运行的 Amazon 实例都必须使用 强制性 标签,这有助于识别它们。 如果您使用与 Amazon EC2 的集成,请确保在 Amazon 中添加 ec2:CreateTags
资源级权限。
改变了 reversed dependencies 属性的行为
从2019.1开始,reverse.dep
参数的行为已经发生了变化,这种变化可能会影响到您现有的构建。 在 2019.1 版本之前,当构建链被触发时,TeamCity 只考虑链顶部构建中指定的 reverse.dep
参数,即依赖于所有其他构建的构建。 如果链中的一些中间构建具有 reverse.dep
参数,那么它们会被忽略。
在 此修复 之后,情况不再如此。 现在,当触发构建链时,构建链中所有节点中指定的所有 reverse.dep
参数都将被处理。
懒加载代理工具
Agent 工具(位于 agent 下的 <agent_installation>/tools
目录)现在不是在 agent 升级时,而是在使用相应工具的第一次构建之前转移到 agent 上。 您可能需要更新构建配置设置,以便 TeamCity 知道构建需要哪些工具。
在代理上启动构建之前,TeamCity 会检查对 teamcity.tool.<tool_ID>
配置参数的引用,以收集构建使用的工具集。 如果某个工具通过此参数被引用,TeamCity 将确保在构建逻辑开始执行之前,该工具已经在代理上存在。
如果您的某些构建在代理上使用工具,假设它们的位置在 < 代理安装 >/tools
目录下,那么这些引用应当被修改为 TeamCity 提供的参数引用。 在 TeamCity 设置中使用的路径,如 <agent_installation>/tools/<tool_ID>
,应更改为 %teamcity.tool.<tool_ID>%
参数引用。 例如, ../tools/maven3.4.5/bin/mvn
应被替换为 %teamcity.tool.maven3.4.5%/bin/mvn
。
ReSharper 工具中更改的 .NET 构建要求
ReSharper 工具所使用的 .NET Framework 版本的需求已经改变。 现在,如果您在构建配置中使用了2018.2或更高版本的 ReSharper 工具(dotCover 和 ReSharper Inspections)(包括与 TeamCity 2019.1 绑定的版本),则构建代理的需求将更改为 .NET Framework 4.6.1 或更高版本。 确保在代理上更新 .NET Framework。
默认启用基于令牌的身份验证
在升级到 2019.1 版本后,Token-Based Authentication 模块将默认启用,所以您可以生成 访问令牌并立即开始使用。
新的 CSP 头值
现在,TeamCity 网页 UI 为 内容安全策略
HTTP 头使用了更为严格的值。 这提供了额外的安全性,但代价是禁止使用未托管在 TeamCity 服务器上的网络资源。
如果您依赖外部资源(例如,在构建报告标签内容中或使用尚未更新的插件),您可以在 teamcity.web.header.Content-Security-Policy.protectedValue=<full_header_value>
内部属性(以及 teamcity.web.header.Content-Security-Policy.adminUI.protectedValue
属性,用于管理区域的网页)中指定新的请求头值。 插件可以使用 ContentSecurityPolicyConfig
打开 API 接口,增加配置的值。
dotCover 工件的变更
dotCover.dcvr
隐藏的工件不再默认发布。 现在会在构建临时文件夹中创建,当构建完成时会被移除。
如果您使用 dotCover 并依赖于此构建工件,请在 工件路径 中明确指定 %system.teamcity.build.tempDir%\..\agentTmp\dotNetCoverageResults\dotCover.dcvr
文件的路径。
捆绑工具更新
最新的 JaCoCo 版本(0.8.4)已经被添加到 TeamCity 中。
捆绑的 .NET 工具(dotCover 和 ReSharper CLT)已升级为最新发布的版本,2019.1.1。
在新的 TeamCity 安装中建议的外部数据库的 JDBC 驱动程序已更新至以下版本:
MySQL - 8.0.16
MSSQL - 7.2.2
PostgreSQL - 42.2.5
关于 PowerShell 的测试版的注意事项
如果您一直在使用 PowerShell 的测试版,请确保在安装任何新发布的 PowerShell 版本之前,删除所有早于 v6.0.0-beta.9
的测试版。 由于 PowerShell 检测器的更新,如果安装了旧的 beta 版本,TeamCity 将使用它,而不是新发布的版本。
关于使用 Docker 和 Windows Server 进行进程隔离的注意事项
如果您使用 Docker 镜像和 Windows Server 2019 并进行进程隔离,构建代理可能无法启动(在已知问题中阅读更多内容)。 为了解决这个问题,给“已认证用户”组授予“完全控制”权限。
从 2018.2.3 到 2018.2.4 的变更
在 TeamCity 2018.2.4 中,与未授权代理页面上显示的数据相关的有一个退化:代理授权、启用/禁用注释以及最新活动时间的数据已从页面中删除。 这些数据显示在代理详情页面上。
当性能得到改善时,我们将会将数据返回到未经授权的代理页面。
从 2018.2.2 更改到 2018.2.3
TeamCity 现在为 1803/1809 平台提供 Windows Docker 镜像。
已知问题
如果没有完成的构建,正在运行的构建将不会在构建配置页面上显示。 为了解决这个问题,停止 TeamCity 服务器,将 TEAMCITY_DIRECTORY / webapps / ROOT / js / ring / bundle.js
替换为附在 此问题上的 bundle.js
文件,然后启动服务器。
从 2018.2.1 到 2018.2.2 的更改
捆绑的 Tomcat 已更新至 8.5.3 版本
TeamCity 代理 Docker 镜像支持 .NET Core 2.2
2018.2 到 2018.2.1 的更改
没有潜在的破坏性更改。
2018.1.x 至 2018.2 的更改
已知问题
如果升级过程中出现 MoveCustomDataStorageToDatabaseConverter 或 MoveRepositoryStateToCustomDataStorageConverter 错误,应用 问题 中的解决方法。
如果您正在使用来自同一存储库的 Subversion externals,您可能会遇到错误的版本检测问题。 对于这个问题的解决方法在 此问题 中有所描述。
如果您在 TeamCity 启动过程中看到 OutOfMemoryError,堆栈跟踪中显示
org.jetbrains.dokka
,请设置内部属性teamcity.kotlinConfigsDsl.docsGenerationXmx=768m
(如此问题所述)。
捆绑工具更新
附带的 .NET 工具(dotCover 和 ReSharper CLT)已经升级至最新发布版本,2018.1.4
TeamCity 2018.2 附带了 IntelliJ IDEA 2018.3.1。 IntelliJ IDEA 项目运行器使用 JPS 2018.3.1
在 Windows
.exe
TeamCity 发行版中,打包的是 OpenJDK 而非 Oracle Java。
NuGet 源
之前用来引用全局 NuGet feed 的参数已被删除。 在升级后,它们全部将被转换为 在根项项目中引用默认 NuGet 源的参数。
如果您仍在项目参数中使用已弃用的 NuGet 供稿引用,请按照下述方式更新它们:
全球订阅名 | 项目动态名称 |
---|---|
teamcity.nuget.feed.server | teamcity.nuget.feed.guestAuth._Root.default.v2 |
teamcity.nuget.feed.auth.server | teamcity.nuget.feed.httpAuth._Root.default.v2 |
system.teamcity.nuget.feed.auth.serverRootUrlBased.server | teamcity.nuget.feed.httpAuth._Root.default.v2 |
从 2018.1.4 到 2018.1.5 的更改
没有潜在的破坏性更改。
从 2018.1.3 到 2018.1.4 的变化
已知问题
在服务器升级到 2018.1.4 时运行的构建可能会使其构建日志和状态被截断,而不能适当地报告构建失败。 构建日志中出现 "__tc_longResponseMarker" 文字的警告(详情)。 建议您在升级到此版本时,等待没有正在运行的构建。
杂项
TeamCity 2018.1.4 已停止对 Microsoft Internet Explorer 10 的支持。
从 2018.1.2 到 2018.1.3 的更改
捆绑工具更新
最新的 JaCoCo 版本(0.8.2)已被添加到 TeamCity 中。
已知问题
如果您使用 JaCoCo 覆盖率,并决定从 TeamCity 2018.1.3+ 降级到 TeamCity versions 2018.1 - 2018.1.2,您可能会遇到需要手动修复的问题,才能使受影响的配置再次运行。
从 2018.1.1 到 2018.1.2 的变更
已知问题
如果您正在使用第三方 TeamCity 插件 tcWebHooks,请在升级前将其更新到最新版本(详情)。
我们提高了识别类似 TeamCity 退出代码构建问题的准确性。 针对这些构建问题的现有调查和静音将被重置。
捆绑工具更新
附带的 Tomcat 已更新至 8.5.32 版本。
从 2018.1 到 2018.1.1 的更改
已知问题
如果您正在从 2018.1 升级到 2018.1.1,并且您想查看由于问题 TW-55703 和 TW-55833 而缺少的 NuGet 包,请执行以下操作:
清理构建工件中的
.teamcity/nuget/packages.json
文件。 请考虑使用这个 PowerShell 脚本:
在 Administration | Diagnostics | 缓存 页面上,重置 "buildsMetadata" 缓存并等待重建索引完成。 为了暂时提高索引速度,请参阅以下 提示。
Docker 镜像
自2018.1.1起,TeamCity 在 Docker Hub 中发布了带有 最新
和版本号标签的多平台 Docker 镜像,例如, jetbrains/teamcity-server
或 jetbrains/teamcity-server:2018.1.1
。 这允许使用相同的 Docker 镜像引用来适用于 Linux 和 Windows 的 docker 容器:请参阅 TW-55061 获取详细信息。
2017.2.x 到 2018.1 的变更
已知问题
在多个构建步骤中将 NuGet 包发布到 TeamCity NuGet 源时,只有第一个构建步骤发布的包将可见。 参见 TW-55703 获取详细信息。 如果您在下载存档中发布的 NuGet 包时遇到问题,请查看 TW-55833。
对参数引用中使用的参数名称规定更严格的规则
构建配置参数的名称现在以更严格的方式进行验证。 尽管现有的参数应继续工作,但是强烈建议您审查这些名称,并且只使用拉丁字母而不使用特殊符号。 详细信息
用户自我注册
如果您启用了内置认证,并开启了 "Allow user registration from the login page" 设置,那么在升级时,该设置将被禁用。 如果您需要注册,请确保服务器不对未经授权的用户开放(例如,不能从互联网访问),并通过在管理页面顶部显示的健康项目或在"Administration | Authentication" 下的 "Built-in" 模块设置中启用此设置。
捆绑工具更新
IntelliJ IDEA 项目运行器使用的是要求 Java 1.8 作为最低版本的 JPS 2017.3.4。
附带的 ReSharper CLT 和 dotCover 已更新至 2018.1.2 版本
NuGet 源
NuGet 供应源的配置已从服务器级别移动到项目级别:现在,每个项目都可以拥有自己的供应源。 NuGet 包索引器" 构建功能可以添加到应该被索引的构建配置中。
以下与 NuGet 供稿相关的构建参数已被弃用:
teamcity.nuget.feed.auth.server
teamcity.nuget.feed.server
system.teamcity.nuget.feed.auth.serverRootUrlBased.server
您现在需要从 NuGet Feed 页面中明确指定 URL,该页面位于 项目设置 中。
启用的默认 NuGet 订阅源,其中包含所有通过 URL
/app/nuget/v1/FeedService.svc/
访问的已发布包,现已移至 Root 项目订阅源/app/nuget/feed/_Root/default/v2/
。 建议您在项目中切换至新的 URL。.nupkg 文件现在在代理端上进行索引,而不是在服务器上,这可能会稍微增加使用 NuGet Feed 功能和自动包索引功能或使用 NuGet Packages Indexer 构建功能的项目的构建时间。
REST API
REST API 使用的版本为 2018.1。 API 的先前版本仍可在 /app/rest/2017.2 、 /app/rest/2017.1 (/app/rest/10.0)、app/rest/9.1、 /app/rest/9.0、 /app/rest/8.1、 /app/rest/7.0、 /app/rest/6.0 网址下使用。 我们建议您停止使用先前的 API URLs,因为我们将在接下来的版本中删除它们。
按代理名称过滤构建
当代理名称包含括号符号时,不要使用 agentName:<name>,而是使用 "agentName:(value:<value>)"。
带有 "value:<text>" 的定位器
使用 "value:<text>" 定位符(例如,用于匹配属性)且没有 "matchType" 维度规范的请求将默认开始使用 "equals" 进行匹配。 添加 "matchType:contains" 以保留旧的行为。 详细信息
VSS 插件已经解绑
Visual SourceSafe 插件不再与 TeamCity 一起捆绑,但可以作为 单独下载 获取。 如果您仍在构建中使用此 VSS ,请联系我们的 支持。
其他
Commit Status Publisher 支持 Gerrit 2.6+ 版本。 对于旧版 Gerrit 的支持,请转向我们的 支持。
当您从 9.1 之前的 TeamCity 版本升级时,如果 TeamCity 2018.1 启动并升级了代理,但然后您决定将服务器回滚到以前的 TeamCity 版本,那么代理将无法重新连接到旧服务器,需要手动重新安装。
确保代理对服务器的所有 HTTP 请求都没有被阻止(例如,请求到 .../app/agents/... URLs的请求)。
自2018.1以来,TeamCity在任何出现完整项目名称的地方,都使用“/”代替“::”作为项目 - 子项目的分隔符。
从 2017.2.3 版本到 2017.2.4 版本的变更
检查(.NET)"和"查找重复项(.NET)"的构建步骤已经被重命名为"检查(ReSharper)"和"查找重复项(ReSharper)"。
从 2017.2.2 到 2017.2.3 的更改
构建修订版
在所有的构建配置中,升级前运行的构建将不会在链中被重复使用,它们将重新运行(如果使用了分支,只有默认分支上的最后一个构建会受到影响)。 这也可能导致像 Perforce 这样的 VCS 在第一次运行构建时进行一次清理检出。 该行为与编辑 VCS 根后的行为类似。
安全
在升级到 2017.2.x 版本时(请在升级到 2018.1 及更高版本时忽略):建议添加 " teamcity.artifacts.restrictRequestsWithArtifactReferer=true
"内部属性以增强服务器的安全性。
从 2017.2.1 到 2017.2.2 的更改
已知问题
(已修复 2017.2.3)如果您使用 Artifactory 插件并在打开构建步骤设置时收到 "Invalid RSA public key" 浏览器消息,请应用此 解决方法。
在 Windows 下,当 TeamCity 服务器作为服务启动时,"logs\teamcity-winservice.log" 文件不会被创建,且服务器启动错误无处可见。 详细信息
IDE 插件
强烈建议所有用户将 IDE 插件更新至最新版本,然后添加 teamcity.uploadPersonalPatch.requireAuthorization=true
内部属性 以增强服务器的安全性。
Perforce VCS Root 可执行路径
自 TeamCity 2017.2.2以来,用于指定 p4 路径的字段只在代理端工作,用于代理端签出。
对于服务器来说,p4 二进制文件应存在于 TeamCity 服务器的路径中(或者可以通过 teamcity.perforce.customP4Path
内部属性来指定)。 teamcity.perforce.p4PathOnServerWhitelist
内部属性可以用于指定允许的 p4 路径的分号分隔列表。 此列表中的路径可以在服务器端为 VCS Root p4 路径参数进行设置(以恢复旧有行为)。
Mercurial VCS 根属性
自 TeamCity 2017.2.2以来,出于安全原因,许多 Mercurial VCS 根属性改变了其行为。
HG命令路径"仅在被包含到 白名单 时才在TeamCity服务器上使用。
如果 VCS 根目录尚未具有"克隆存储库到"的属性,则该属性将被隐藏,并且默认情况下会被忽略。 为了让 TeamCity 在所有 VCS 根中显示该属性,添加
teamcity.hg.showCustomClonePath=true
内部属性。 VCS 根属性的值仅在其被包含在由teamcity.hg.customClonePathWhitelist
内部属性 指定的白名单中时才会被尊重,这是一个允许克隆的目录的半角分号分隔的列表。 使用/path/to/dir/*
以允许克隆至/path/to/dir
的子目录。Mercurial config" 在服务器上被忽视。 如果您需要启用一些 Mercurial 插件,请在 TeamCity 服务器机器上的全局 .
hgrc
中进行操作。
从 2017.2 版变更至 2017.2.1 版
Kotlin DSL 的更改
pom.xml 中的版本已更新: kotlin.version
已更新为 1.2.0
, teamcity.dsl.version
已更新为 2017.2.1
。 对 kotlin-stdlib
的依赖被替换为对 kotlin-stdlib-jdk8
的依赖,以便提供对 jdk8 中可用的额外功能的访问(例如,正则表达式中的命名组)。 依赖于已弃用的 kotlin-runtime
和冗余的依赖于 kotlin-compiler-embeddable
已被删除。
现在,TeamCity为Kotlin DSL提供了一个父级maven项目,该项目定义了 teamcity.dsl.version
和 kotlin.version
属性。 拥有这样一个父项目,您将不必在每次升级 TeamCity 后更新您的 pom.xml。
将这些更改应用的最简单方法是在项目管理区域运行 'Download settings in Kotlin format' 操作,并使用由 theTeamCity 服务器生成的压缩文件中的 pom.xml。
Docker 镜像中使用的捆绑式 Java
Docker 镜像中捆绑使用的 Java 已经更新至 8u151。
2017.1.x 至 2017.2 的更改
已知问题
(修复于 2017.2.1)在 Java 工作模式下的 TFS (即当 Team Explorer 没有安装在机器上时)报告“TFS 子系统已被销毁”的错误。 请查看 TW-52685 以获取详细信息。
如果您的 TeamCity 安装目录包含许多嵌套目录(例如,TeamCity 数据目录在其下面),那么使用 Windows 安装程序进行升级可能需要很长时间。 长时间阶段可能会在“Extract:Uninstall.exe...”进度消息之后出现。 如果您遇到这个长步骤,请等待操作完成(安装程序以嵌套过程运行 icacls.exe 工具)。 为了防止问题的发生,建议将 Data Directory 移出 TeamCity 服务器安装主目录。
Perforce 分支规范更改
如果您在使用启用了功能分支的 Perforce 流并且使用的是非默认分支过滤器,那么存在一个需要您操作的重大变更。
从 TeamCity 2017.2 开始,Perforce VCS Roots 使用相同的格式用于 Perforce 流和 TeamCity 功能分支规范。
在 Perforce 的 VCS Root 分支规格中, +:stream_name
现在必须替换为 +://stream_depot/stream_name
。 此外,为了在用户界面中更好地展示流名称,您可能需要将默认的分支规范,例如 +:*
替换成 +://your_stream_depot/*
。
这个更改是在修复 TW-48038 范围内进行的。
服务器进程重启
现在,如果服务器进程意外停止或被结束,该进程将自动重新启动。 服务器应使用 teamcity-server.bat/sh stop
命令来停止,该命令执行了优雅的停止操作。
捆绑插件
Docker 集成插件
Docker 集成插件自 TeamCity 2017.2.x 版本起已捆绑在一起。 如果您以前手动安装了旧版本的插件,请 移除它。
.NET CLI 插件
.NET CLI (.NET Core) 插件自 TeamCity 2017.2.x 版本开始被捆绑在一起。 如果您以前手动安装了旧版本的插件,请 移除它。
在升级过程中,所有现有的 .NET Core 构建步骤将被转换为 .NET CLI 步骤,现有的 .NET Core 插件将被禁用。
注意: DotNetCore
和 DotNetCore_Path
代理配置参数将被更改为 DotNetCLI
和 DotNetCLI_Path
;请考虑更新依赖于这些参数的您的代理需求。
REST API
REST API 使用 2017.2 版本。 API 的早期版本仍可通过 /app/rest/2017.1(/app/rest/10.0)、app/rest/9.1、/app/rest/9.0、/app/rest/8.1、/app/rest/7.0、/app/rest/6.0 URLs 访问。
buildType 实体
现在具有 "模板" 子元素,而不是 "模板" ,以支持多个模板。
构建实体 不再显示布尔型 "running" 属性,而是采用值为 "running" 的文本 "state" 属性。
Windows 版本支持
Windows XP 和 Vista 已不再是 TeamCity 服务器 和 Agent 的支持版本。 尽管服务器和代理可能仍然能在这些旧版本上运行,但是我们在开发过程中并未针对这些版本。 请告诉我们,如果对版本的支持对您的 TeamCity 使用至关重要,或者您在系统支持中发现任何问题。
J2EE Servlet 2.5 容器不再受支持
自 TeamCity 2017.2 起,不再支持 J2EE Servlet 容器版本 2.5。 TeamCity 并不保证支持实现 Servlet 2.5 的 Tomcat 6.x 和 Jetty 7.x。 对于 .war 分发(不推荐,推荐使用 .tar.gz 分发),TeamCity 支持 Apache Tomcat 7+,J2EE Servlet 3.0+ 和 JSP 2.2+。
其他
附带的 Tomcat 8.5。 对 URL 中的特殊字符使用有限制,包括大括号符号({ })。 详情。
TeamCity 与基于 Intellij 的 IDEs 的集成不再支持 StarTeam 和 Visual Source Safe 版本控制。
从 2017.1.4 到 2017.1.5 的变更
捆绑的 JetBrains dotCover 已更新至 2017.2 版本
SSH Agent 构建功能开始报告构建问题,如果它无法启动具有指定 SSH 密钥(在 TW-42707 范围内)的 SSH 代理。 以前的错误只会被记录,但并未作为构建问题进行报告。 因此,如果SSH Agent设置无效,那么在升级后构建将开始失败。
从 2017.1.3 到 2017.1.4 的更改
已知问题
TFS 个人支持列出了所有适用于 TFVC VCS 根的构建配置。 参见 TW-51497 以获取详情。
从 2017.1.2 版本到 2017.1.3 版本的更改
TW-50148 已修复,同时 DSL API 文档也得到了改善。 如果您需要这些更改进行本地开发,请将 maven dependency version 更新为 2017.1.3。
现在,TeamCity 服务器会自动运行 'git gc' 以提升 git 操作的性能。 这要求在服务器上安装 git 客户端,并通过 PATH 环境变量使服务器可以访问。 如果无法找到原生 git 客户端,则会显示相应的健康报告。 为了让 TeamCity 找到 git 客户端,需要在服务器机器上安装客户端并添加到 $PATH
(之后需要重新启动服务器)。 而不是修改 PATH,可以通过 teamcity.server.git.executable.path
内部属性 指定 git 客户端的路径。
从 2017.1.1 更改至 2017.1.2
没有潜在的破坏性更改。
从 2017.1 版本到 2017.1.1 版本的变化
附带的 IntelliJ IDEA 已更新至 2017.1.2
从 10.0.x 变更至 2017.1
已知问题
编辑云配置文件将取消所有配置文件代理上的构建。 请参考 TW-49616 了解详细信息。
TeamCity 版本更变
自2017年以来,TeamCity 采用了 JetBrains 通用的版本命名方案,按照以下模式标识版本:<年>.<该年度功能发布的次数>.<错误修复更新的序号>。 当前版本是 TeamCity 2017.1,以前被称为 TeamCity 10.1。
在 Kotlin DSL 中更新设置
在此版本中,TeamCity 的设置格式已经做了更改,如果您的设置存储在 Kotlin DSL 中,您可能需要在继续使用它们之前更新 Kotlin DSL 脚本。 在服务器升级后,检查任何相关的服务器健康报告。
CSRF 保护:修改 GET 请求和正确的 Proxy 配置
TeamCity 现在实施了 CSRF protection 以提高 web UI 安全性,这引入了几个可能影响您的安装的行为变更。 应特别注意以下事项:
如果您在 TeamCity 前使用了一个 反向代理,那么代理不应更改原始的 "Host" 请求头(这通常需要配置代理将 Host 头设置为原始请求值)。 另外,它不应修改原始请求中存在的 "Origin" 和 "Referer" 头部信息。 尽管这已经是长期以来推荐的设置,但现在它对于 TeamCity 网页界面的运行变得至关重要。
如果您使用非捆绑客户端对 TeamCity 进行 GET 请求,2017.1 中会停止运行一些 GET 请求(如那些会改变服务器状态的请求,如 http://server/action.html?add2Queue=XXX),请将请求更改为使用 POST 而不是 GET。
那些通过在请求中提供 TCSESSIONID cookie 来重用身份验证的非浏览器客户端,需要进行更新,以便在 "Origin" HTTP 头部中提供与发送请求的主机相同的值。 如果检查失败,您将收到带有失败检查详细信息的 HTTP 403 response。 详情也已记录到 teamcity-auth.log 中。
旧版 IPR Runner
旧版(TeamCity 6.0)的 IPR 运行器已经从 TeamCity 中删除。 自从 TeamCity 6.0 以来,它已被弃用,不再作为选项提供,现在已经完全消失(相应的构建配置将不再运行)。
Log4j 配置
建议用 conf\teamcity-server-log4j.xml.dist
文件的内容覆盖服务器的 conf\teamcity-server-log4j.xml
文件,该文件代表了在此版本中发生变化的默认日志配置。 如果您确实需要自定义日志配置,请考虑使用 日志预设,而不是修改 conf\teamcity-server-log4j.xml
。
建议使用来自同级 .dist 文件进行相同的覆盖,用于 TeamCity 代理。首次启动升级的 TeamCity 版本后,将创建 conf\teamcity-*-log4j.xml.dist
文件。
构建元数据存储(NuGet feed)
构建元数据存储将在升级后重新创建,并且构建将在此后重新索引。 因此,升级后立即,TeamCity 内部的 NuGet 供应将不包含所有的包。在构建重建索引期间,可能会在 teamcity-server.log
中出现以下消息:
"剩余构建数:"表示还有多少构建需要处理。 请注意,TeamCity 从最新的构建开始重新索引,因此所有新的构建应在相对较短的时间内出现在 TeamCity NuGet feed 中。
为了提高元数据索引速度,您可以使用 以下提示。
REST API
REST API 只有一些小的改变,因此相同的 API 在 app/rest/10.0
和 /app/rest/2017.1
URLs 下被公开。 API 版本已更新为 2017.1,以反映所做的更改。对于 2017.1 升级后开始的构建,构建节点 "triggeredBy" 的 "type" 属性现在有了更正确的值。 特别地,"buildType" 值已不再被使用,包括 "finishBuild"、"snapshot" 等等。 将使用值代替。
Visual Studio 插件无法从 TeamCity UI 安装
作为一种解决方法,可以使用 ReSharper 网页安装程序。 请参阅 TW-51680 以获取详细信息。
从 10.0.4 版本到 10.0.5 版本的更改
如果您正在使用带有代理端检出的 TFS,请注意,由于修复了 TW-48555,TeamCity 将不得不重新创建 TFS 工作空间,这可能导致在升级后的代理上进行清空检出。
从 10.0.3 到 10.0.4 的变更
dep.ID.NAME 参数引用的优先级
当使用 % \dep.ID.NAME %
参数引用,并存在多条依赖路径指向具有 "ID" 标识的相同构建配置,以便通过(直接或间接的)制品依赖关系访问不同的构建时,引用解析的结果可能使用了没有任何保证优先级的任何构建。
自 10.0.4 dep.
参数解析如下所示:
如果存在快照依赖性,那么来自同一链的构建将胜出。
如果没有快照依赖,并且通过工件依赖可以访问到几个构建,那么具有较大
buildId
的构建会胜出。 如果一个构建配置有多个构件依赖,只会考虑第一个。
更新
AWS SDK 已经更新至 1.11.66 版本,以支持新的实例类型(r4.4xlarge,f1.16xlarge,t2.2xlarge,t2.xlarge,r4.2xlarge,r4.xlarge,r4.large,r4.16xlarge,r4.8xlarge,f1.2xlarge)。
从 10.0.2 版更改至 10.0.3 版
Amazon EBS-优化实例
自 TeamCity 10.0 默认启用以来,EBS 优化 的行为已经发生了改变,其更改方式与 EC2 控制台提供的类似:
EBS 优化已默认开启于
c4.*
,m4.*
以及d2.*
(无法配置)。对于任何其他实例类型,EBS 优化默认是关闭的。
EBS 优化可以在支持它的实例(例如
c3.xlarge
)上开启,只需在配置 Amazon 云配置文件的镜像时选中适当的框即可。
捆绑工具更新
附带的 dotCover 已更新到 2016.2.2 版本
从 10.0.1 到 10.0.2 的变化
从 10.0 更改为 10.0.1
所有在 10.0 中提到的已知问题都已经修复。
已知问题
(在 10.0.2 中修复)如果将 agent tool 作为目录安装在 <TeamCity Data Directory>/plugins/.tools 中,TeamCity 服务器临时文件夹可能会被填满。 详细信息和解决方法。
从 9.1.x 变更至 10.0
已知问题
(这些已知问题已在 10.0.1 中修复)
无法收集 TFS 更改 - 起始版本 <x> 大于当前版本 <y>
如果您使用 TFS 版本控制并出现"为 VCS 仓库收集更改时遇到错误... 无法收集 TFS 的更改 - From version x 大于当前版本 y"的错误,可以提交新的更改,使其出现在受影响的构建配置中,或者安装更新的插件(有关问题)。
项目管理员可能无法重新定义从父项目继承的参数。
参见请求 TW-46372 以获取详细信息和可能的解决方法。
从 8.1 之前的 TeamCity 版本升级时,会出现“在未持有数据库锁定的情况下无法获取独占锁定”错误"
请查看请求 TW-46385 以获取详细信息和可能的解决方法。
使用 svn+ssh:// 协议的 Subversion VCS 根可以报告以下内容: "Host key (xxx) can not be verified."
请查看请求 TW-46385 以获取详细信息及已修复的插件。
代理属性报告 .NET 4.x 运行时的变化
在 10 版之前,TeamCity 代理会在安装任何 4.x 版本的 .NET 框架时报告 DotNetFramework4.0_* 属性。 自 TeamCity 10 开始,只有在安装 4.0 运行时(无更新)时才会报告 DotNetFramework4.0_* 属性。 对于 4.5.*, 4.6.* 的更新,相应的 DotNetFramework4.N_* 属性将被报告。 这种行为的改变允许更为精确的定义需求。
如果升级后您收到与 Unmet requirement: Exists=>DotNetFramework4.0_x86(/x64) exists 消息不兼容的代理,那么请重新检查您的构建配置中的明确要求。 如果您的构建与任何 .NET 4.x 运行时兼容(这是最常见的情况),请使用 Exists=>DotNetFramework4.*_x86(/x64) 要求。 如果您希望在 .NET 4.5+ 代理上运行 - 请使用 Exists=>DotNetFramework4.(5|6).* 要求。
已知一些第三方插件受到影响。 在升级过程中,请务必将 xUnit 插件升级至 1.1.2+ 版本。
忽略的测试表优化
在升级过程中,TeamCity 将优化 ignored_tests 表中的数据(我们这样做是为了加快 TeamCity 内置的备份/恢复过程)。 在一些罕见的情况下,当这个表包含数百万行时,表优化的过程可能需要很长的时间 - 可能需要几个小时。 除其他数据外,该表格包含了在构建中将特定测试标记为已忽略的原因。 如果您对旧版本的信息不是很重要,您可以带有附加的 JVM 选项 启动 TeamCity 服务器: -Dteamcity.truncateIgnoreReasonConverter.copyReasons=false
在这种情况下,TeamCity 不会将忽略原因复制到新的、优化的表中,而这个特定的升级过程步骤将运行得更快。
Java 8
从 TeamCity 10 开始,TeamCity 服务器 需要 Java 8 JRE/JDK(包含在 Windows .exe
发行版中)。
TeamCity 代理目前需要 Java 1.6+,但从下一个 TeamCity 版本开始,代理上的 Java的最低要求将是 Java 8(包含在代理的 Windows .exe
发行版中)。 建议您现在考虑升级代理的 Java。
Java 内存选项更改
建议将 " -XX:MaxPermSize=..."
JVM 选项 " 从 TEAMCITY_SERVER_MEM_OPTS
环境变量中移除,如果之前已进行配置的话。 (这是因为 Java 8 不再使用永久代(PermGen))
禁用代理要求和工件依赖性
现在可以禁用代理要求和工件依赖性。 使用早于 TeamCity 10 版本的 API 的 TeamCity 插件和基于 REST API 的代码可能会忽视这些设置的禁用状态。
TFS
TeamCity 配备了跨平台的 TFS 集成:您无需再在 Windows 机器上安装 TeamCity 服务器就能与 TFS 进行工作。
Visual Studio Online 工作项插件
Visual Studio Online Work Items 插件自 TeamCity 10.0 起已过时,可以安全地移除。 TeamCity 10.0 内置了与 Team Foundation Work Items 的集成,支持 TFS 2010+ 和 Visual Studio Team Services。 升级后,TeamCity 将检测此插件的现有问题跟踪器连接,并将它们转换为 TFS 工作项。
新建构建配置的默认检出模式
在创建新的构建配置时,VCS checkout 模式的默认设置已经更改:现在 TeamCity 会在构建之前在代理上检出源代码。 如果无法进行代理端签出,TeamCity 将使用服务器端签出。 明确的服务器端或代理端检出仍在进行中。 新的默认设置仅适用于新创建的构建配置;所有现有的配置将按照之前的设置正常工作。
基于项目的代理管理权限
新的 TeamCity 安装现在有不同的代理管理权限分配:项目管理员角色不包括(全局)代理管理器角色。 相反,项目管理员角色拥有 agent-project permissions,只允许从用户拥有项目管理员角色的项目中管理 agent pools 中的 agents。
此次更改不会影响现有的安装,以免更改用户权限。 然而,建议您审查项目管理员角色,并考虑排除 "Agent Manager" 角色,增加以下权限:
启用 / 禁用与项目关联的代理
开始 / 停止项目的云代理
更改项目的 agent 运行配置策略
管理项目代理机器(例如,重启,查看代理日志)
移除项目代理
授权项目代理
用户界面变更
服务器管理界面
新的 Administration | Tools 页面允许设置由相应插件使用的工具。 工具会自动分发给所有的构建代理,并可在相关运行器中使用。
新的创建项目 / 创建构建配置按钮
新的 创建子项目 和 创建构建配置 按钮现在有一个下拉菜单,允许您选择是从零开始创建项目(手动)、从 URL 创建,还是使用流行的版本控制系统 GitHub.com 和 Bitbucket 创建。
NuGet 相关用户界面
NuGet 设置页面已被移除。 NuGet.exe 可以通过新的 工具 页面安装;要将 TeamCity 设置为 NuGet 服务器,请转到 管理 | NuGet Feed 页面。
与测试相关的用户界面
问题测试"标签页已不再可用,而"查看过去120小时内所有失败的测试"的链接已从"当前问题"标签页中移除。
TeamCity 现在可以检测给定项目专用标签页上显示的 Flaky tests。
Visual Studio 插件
TeamCity Visual Studio 插件的旧版本不再受支持。 Visual Studio 2005 和 2008 不受支持。
TeamCity Visual Studio 插件被作为 ReSharper Ultimate 的一部分发布。 安装完成后,TeamCity 插件 将在 Visual studio 的 RESHARPER 菜单下可用。
请注意,安装程序将删除预捆绑产品的早期版本:9.0 之前的 TeamCity 和 ReSharper 版本,3.0 之前的 dotCover 版本,6.0 之前的 dotTrace 版本。ReSharper Ultimate 不支持 2005 和 2008 版的 Visual Studio。
IntelliJ IDEA 兼容性
IntelliJ IDEA 12.1 及更旧版本,以及2013年之前发布的其他基于 IntelliJ 的产品,不再由 IntelliJ Platform Plugin 支持。
快照依赖构建重建
在服务器升级之后,即使快照依赖设置了 "若存在合适的构建则不运行新的构建" 选项为ON,作为快照依赖的构建可能会被重新构建一次。 这是为了修复 问题 而做的。
Perforce
将会在使用基于流和基于客户端的 Perforce VCS Roots 的构建中强制进行干净的检出。
Subversion
从 TeamCity 10 开始,TeamCity 默认不接受通过 https:// 协议与未受信任的服务器 SSL 证书访问 SVN 服务器的连接。 为了启用此类证书的访问,您应该将证书导入到服务器 JVM 密钥链,或启用 VCS Root 选项“接受不受信任的 SSL 证书”(在 10.0 中启用不被信任的 SSL 证书)(问题)。
捆绑工具更新
Ant 运行器:捆绑的 Ant 发行版已从 1.9.6 升级至 1.9.7
.NET dotCover 覆盖率:捆绑的 dotCover 已更新至 2016.1
ReSharper 命令行工具:捆绑的 R# CLT 已更新至 2016.1
Java 检查和重复:捆绑的 IntelliJ IDEA 已更新到 2016.2
GitHub 问题跟踪器
如果您在 TeamCity 10.0 之前使用了 TeamCity-GitHub 第三方插件,您可以放心地删除它:内置的 TeamCity 集成会自动检测到现有的 GitHub 问题跟踪器连接,并自动接收您的设置。
NuGet 支持
配置参数 teamcity.tool.NuGet.CommandLine.%NUGET_VERSION%.nupkg
不再报告。 应该引用 teamcity.tool.NuGet.CommandLine.%NUGET_VERSION%
参数。
例如,应使用 % \teamcity.tool.NuGet.CommandLine.DEFAULT%
参数引用,而非 %teamcity.tool.NuGet.CommandLine.DEFAULT.nupkg%
。
构建统计信息
已重新设计并重命名了几个统计值(指标):
BuildCheckoutTime
转换为buildStageDuration:sourcesUpdate
BuildArtifactsPublishingTime
转换为buildStageDuration:artifactsPublishing
ArtifactsResolvingTime
转换为buildStageDuration:dependenciesResolving
在图表定义中,旧的密钥仍然得到支持。
REST API
REST API 使用版本 10.0。 API 的先前版本仍可在 /app/rest/9.1
, /app/rest/9.0
, /app/rest/8.1
, /app/rest/7.0
, /app/rest/6.0
URLs 下使用。
以前,针对定位器定位单个项目的一组项目的请求会导致404响应,现在会以更一致的方式返回空集。 例如, .../app/rest/builds?locator=id:<不存在的构建ID>
。 REST 调试日志可能有诊断消息,其中包含了更多关于此案例的详细信息。
请求一组项目可能返回不全 / 不完整的结果(包括零个或多个项目),并提供 nextHref
子元素,该子元素含有获取项目下一"页"的链接。 当没有提供 nextHref
子元素时,搜索结果就算完成了。
对一些物品集合(例如... /app/rest/vcs-roots
和 .../ app/rest/vcs-root-instances
)的请求将在未使用定位器查询的情况下默认使用分页结果(它们曾经列出所有的物品)。 将 " 计数:NNN"
定位器尺寸添加以设置页面大小。
查找构建( .../app/rest/builds/...
URL)
默认情况下,出于性能考虑,TeamCity 在执行构建扫描以查找由定位符指定的匹配项时,只会扫描最近的 5000 个构建,返回部分结果。 要处理更大部分的历史记录,请检查返回的 nextHref
属性,或将 lookupLimit
定位器维度设置为更大的值。
以前,除非特别要求,否则不会返回来自非默认分支以及被取消、个人和未能启动的构建。 现在,这些被过滤掉的构建默认会在运行和排队的构建查询中返回,以及按代理或用户筛选时也会返回。 使用 defaultFIlter:true/false
定位器维度明确管理默认的过滤条件。
此外, 号码:NNN
定位器现在也遵循相同的默认逻辑:只从默认分支搜索“常规”的已完成构建,如果找到多个,将返回多个构建。
查找 VCS 根目录( .../app/rest/vcsRoots/... URL
)(次要)
具有 项目
和 buildType
指定的 VCS 根定位器使用 项目
作为查找 buildType
的上下文。 这已不再是之前的情况了, buildType
定位器应便完全可以查找到构建配置。
构建配置的构件依赖项(由 .../app/rest/buildTypes/...
URL 返回的实体)
现在 artifact-dependencies
子元素在 buildType
元素中使用的是文本生成的 ids,而不是像以前那样依赖于顺序的数字 ids。 这同样影响了对工件依赖性修改的请求。
元素的 代理要求
子元素现在使用生成的 id 代替参数名作为 id。 这也影响了对代理要求修改的请求。
编辑代理需求( .../app/rest/buildTypes/.../artifact-requirements/...
URL)
以前,当为同一参数添加新的代理需求时,原有的会被新的覆盖;现在,新的需求会被添加进去。 以前,在添加新的代理需求时,参数名称是从 agent-requirement
节点的 iD
属性中获取的。 自从 TeamCity 10,参数名已经从“ 属性名称
”属性中派生出来。
测试和问题发生 ( .../app/rest/testOccurrences
, .../app/rest/problemOccurrences
URL)
与之前的版本相比,返回结果的排序对于某些查询发生了变化。 例如,现在 " ../app/rest/testOccurrences?locator=build:(xxx)
" 请求会按照构建中运行的顺序返回测试。
以前,测试次数是按照新的状态然后按名称排序的。 问题发生的次数是按问题 id 排序的。
此外,测试/问题相关的定位器中的 构建
维度现在支持多个构建,所以对于通过 " 构建
" 维度匹配到多个构建的请求,所有的构建都会被处理;以前只有第一个匹配的构建会被处理。
实体
此 属性
实体曾有其“自身”的布尔属性,用以指示参数是在构建配置中被重新定义,还是从模板/项目中继承。 现在该属性被重命名为 ' 继承
',并且其值被反转。
vcs-root
和 vcs-root-instance
过去拥有 状态
和 lastChecked
属性。 现在,VCS 根实例拥有 状态
元素(带有 当前
节点,该节点具有 状态
和 时间戳
属性),VCS 根不再拥有数据,因为在多个 VCS 根实例的情况下,它会产生未定义的结果。
test
实体 iD
变成了 Sring 而非 Long,原因是 无法 在 JavaScript 中表示某些 Java Long 值。
构建类型和模板
用于包含所有支持的设置的 设置
节点。 现在只有在构建配置或模板中定义的内容存在。 对于 .../app/rest/buldTypes/XXX/settings/*
请求也是如此:只有从默认值更改的值才会出现。
兼容的代理
当查询兼容的代理时,现在只返回实际上可以运行构建的代理。 默认情况下,未授权的、断开连接的和被禁用的代理不会被列出。 此行为与先前版本中存在大量差异的行为有所不同。 受影响的请求和实体: .../app/rest/agents?locator=compatible:(...)
; ../app/rest/agents/.../compatibleBuildTypes
和 incompatibleBuildTypes
;嵌套节点 Agent.compatibleBuildTypes
, QueuedBuild.compatibleAgents
, BuildType.compatibleAgents
。
从 9.1.6 变更为 9.1.7
没有潜在的破坏性更改。
从 9.1.5 到 9.1.6 的变更
已知问题
在捆绑的 dotCover 上运行 Windows XP 和 Vista 时有一个已知问题。 您可以使用 hotfix 或者提供的 workaround。 此问题将在下一个 dotCover 版本中得到修复。
在本地代理上,内部 TeamCity NuCet 服务器的已认证源 URL 有一个 已知问题,即 NuGet 凭据 无法正常工作。 作为一个解决方案,而不是使用 %teamcity.nuget.feed.auth.server%
,请在构建步骤和构建功能中指定外部服务器 URL。
NuGet
NuGet 的版本在 2.8.6 之前需要在构建代理上安装 .Net Framework 4.0+,而 2.8.6 及以后的版本则需要 .NET 4.5。
NUnit
自版本 9.1.6 起,TeamCity 不再支持 NUnit 3 的测试版(在 NUnit 3.0.0 之前发布)。
NUnit runner 的 "Run a process per assembly" 选项已从 NUnit 3 设置中移除。 在 对应的字段 中使用所需的 命令行选项 配置所需的行为。
捆绑工具更新
捆绑的 IntelliJ IDEA 更新到版本 # 143.1945 (大致相当于 15.0.3 ,但附加了一些额外的修复)。
附带的 Maven 3.2.x 版本已更新为 3.2.5。
性能监视器
从 9.1.4 变更为 9.1.5
已知问题
在捆绑的 dotCover 上运行 Windows XP 和 Vista 时有一个已知问题。 您可以使用提供的 hotfix 或者 workaround。 此问题将在下一个 dotCover 版本中得到修复。
产品图标
JetBrains 产品图标已按照 新的 JetBrains 品牌形象 进行更新。
Git
自 TeamCity 9.1.5 起, git sparse-checkout
默认为禁用。 要在 TeamCity 项目中启用它,向此项目中添加 teamcity.git.useSparseCheckout=true
参数。
Gradle:与 9.1.2 相比的重大更改
Gradle runner 系统.*
属性,在 TeamCity 9.1.2 中引入,为构建定义了 Gradle 进程的 JVM 系统属性,从 9.1.5 开始将不再工作。 现在,TeamCity 系统属性可以在 Gradle 脚本中作为 Gradle 属性(类似于在 gradle.properties
文件中定义的那些)来访问,并且应该按照以下方式进行引用:
a) 允许用作 Groovy 标识符的名称(属性名称不包含点): customUserProperty
b) 不允许用作 Groovy 标识符的名称(属性名称包含点,例如 build.vcs.number.1
): project.ext["build.vcs.number.1"]
捆绑工具更新
捆绑的 JetBrains IntelliJ IDEA (IDEA 检查和重复项)已更新至 15.0.2 版本
.NET 工具更新
JetBrains ReSharper 命令行工具 (.NET 检查和重复项)已更新至 ReSharper 10.0.2 版本TeamCity Visual Studio 插件 Web 安装器更新至 ReSharper 10.0.2 版本捆绑的 JetBrains dotCover 更新至 10.0.2 版本
从 9.1.3 更改为 9.1.4
已知问题
某些角色/权限配置可能导致角色加载错误,并且常规用户无法查看项目。 在这种情况下,对于作为服务器管理员登录的用户,在服务器管理页面上会显示“检测到角色之间的循环引用”的严重服务器错误。 请检查此问题的 workaround。
Git 代理端签出(agent-side checkout) 可能会出现故障(详见 TW-43202 ),当在构建配置或者在 agent config 中指定了 teamcity.git.use.native.ssh=true
参数。 为了解决这个问题,安装 Git-plugin 的 #snapshot-34 构建。
Git 代理端签出(agent-side checkout) 在 git 客户端版本 1.7.0-1.7.4 中工作不正常:checkout 目录只包含文件,所有目录都缺失(详情请参见 TW-43330)。 为了解决这个问题,在 Root TeamCity 项目中添加 teamcity.git.useSparseCheckout=false
参数。
TeamCity Windows 二进制文件签名
自9.1.4版本开始,TeamCity Windows 二进制文件已遵照 Microsoft SHA-2 政策 使用 SHA-2 代码签名证书进行签名。 这意味着在 Windows XP SP3 以前的系统上,可执行文件将无法通过代码签名验证;较新的 Windows 系统需要从 Microsoft 获取相应的安全更新。
捆绑工具更新
捆绑的 Oracle JRE (在 Server 和 Agent.exe 安装程序中都有)已更新到版本 1.8.0_66 (32 位)
.NET 工具更新
JetBrains ReSharper 命令行工具 (.NET 检查和重复)已经更新,以匹配 ReSharper 10.0 版本发布
TeamCity Visual Studio 插件网络安装程序已更新至 ReSharper 10.0 发布版本
捆绑的 JetBrains dotCover 更新至 10.0 版本
从 9.1.2 版本变更为 9.1.3 版本
已知问题
在捆绑的 dotCover 3.2 中有一个 已知问题可能会导致构建失败,并出现以下异常:“System.Security.VerificationException:System.Security.VerificationException:操作可能会破坏运行时”。 此问题已在与 TeamCity 9.1.4 版本捆绑的 dotCover 10.0 中得到修复。
捆绑的 JVM(服务器 Windows 安装程序和代理 Windows 安装程序)已更新,导致禁用了用于传出 HTTPS 连接的 SSL RC4 加密套件。 例如,这使得与 CloudForge SVN 服务器的连接由于 "SSLHandshakeException: Received fatal alert: handshake_failure" 错误而无法正常运行。 (details)
从 9.1.1 版本到 9.1.2 版本的更改
已知问题
命令行运行器在执行自定义脚本时可能会失败,如果它在脚本的开头指定了非默认的 hashbang:TW-42498
当使用 Amazon EC2 云集成时,含有构建代理版本 9.1.2-9.1.5 的 AMI-image 将以 EC2-i-abcdefgh 和 EC2-i-abcdefgh-1 两个名称出现,消耗2个许可证。 为了解决这个问题,请使用带有 agent 9.1.6+ 的 AMI-image。 仅更新服务器到 9.1.6 是无济于事的,如果 AMI 保持不变。 (details)
构建状态图标
构建状态图标已更新为更加“标准”的外观,并且现在的大小稍微大一些。
捆绑工具更新
JetBrains ReSharper 命令行工具(.NET 检查和重复项)已更新,以与 ReSharper 9.2 发布版本相匹配
TeamCity Visual Studio 插件网络安装程序已更新到 ReSharper 9.2 版本
捆绑的 JetBrains dotCover 更新至 3.2 版本
捆绑的 Oracle JRE(在服务器和 Agent .exe 安装程序中都有)已更新至版本 1.8.0_60(32 位)
从 9.1 到 9.1.1 的更改
捆绑的 Jacoco 覆盖库已更新至 0.7.5 版本
如果在 Perforce 服务器上禁用了密码验证,那么已禁用票证验证的 Perforce VCS Roots 将不再运行 'p4 login' 操作。
也就是说,如果禁用了密码验证,VCS Root 上必须启用“Use ticked-based authentication”选项。 TW-42818
从 9.0.x 到 9.1 的变更
内置 Ant
捆绑的 Ant 发行版已从 1.8.4 升级到 1.9.6。 请注意,使用捆绑的 Ant 进行构建的步骤在服务器升级后将使用另一个版本的 Ant。 Ant 1.9.6 至少需要 Java 1.5,所以在 Java 1.4 下使用 Ant 进行构建的应用将停止运行。
MSTest 运行器已转换为 Visual Studio Tests 运行器
MSTest 运行器已与 VSTest console runner(先前作为单独的插件提供)合并到了 Visual Studio Tests 运行器中。 请注意,升级到 TeamCity 9.1 后,MSTest 构建步骤会自动转换为 Visual Studio Tests 运行步骤,而 VSTest 步骤保持不变。
MSTest 安装代理属性
TeamCity 代理自动检测已安装的 MSTest,并用于在 system.MSTest.N.N
系统属性中显示位置。
自 TeamCity 9.1以来,这些位置通过 teamcity.dotnet.mstest.N.N
配置参数进行暴露。 如果您无法轻松更改属性的使用,可以查阅 TW-41845 寻找解决方案。
嵌套测试报告
以前,TeamCity 支持一种情况,即可以从另一个测试中报告一个测试,使用 服务消息。 现在,在修复了 TW-40319 后,开始另一个测试会结束当前在相同"流程"中开始的测试。 要在其他测试中仍然报告测试,您需要在嵌套的测试服务消息中指定另一个 flowId。
REST API
REST API 使用的版本为 9.1。 API的前几个版本仍然可以在 /app/rest/9.0
, /app/rest/8.1
, /app/rest/7.0
, /app/rest/6.0
URLs 中找到。
查找构建
摘要(简言之):部分构建过滤规则有细微的变化。 最重要的是,现在可以在根据构建 id 搜索时返回排队的构建,而不是 404 ,并且 "project" 定位器维度的含义已更改为非递归。 此外,除非指定了 "failedToStart:any" 定位维度,否则现在不会包括无法启动的构建。
详情:
受影响的请求:/app/builds/<locator>..., /app/builds?locator=<locator>, /app/buildTypes/<btLocator>/builds 以及其他包含 build locator 的请求。
定位器:id:<number> 或 taskId:<number>
以前,如果匹配的构建是排队中的,那么返回的是 404(未找到)
现在返回的是排队的构建
定位器:project:<id>...
以前,项目及其所有子项目(递归地)的构建配置所属的所有构建都被找到
现在只能找到属于指定项目的构建配置的构建。 为了递归查找构建,使用 "affectedProject:<id>." 维度。 这使得其使用与构建类型定位符保持一致。
定位器:标签:<text>
以前,当 "<text>" 使用 ":" 字符时,会将整个 "<text>" 视为标签名称。
现在 "&lt; text &gt;" 被解析为嵌套定位器。 对于搜索带有":"字符的标签,应使用定位器"tag:(name:(<tag>))
定位器: <文本>
以前,如果 <text> 不是数字,响应为 400 (错误的请求)并且显示 "LocatorProcessException: 无效的单一值:'<text>'。 应为数字。"消息。
现在,服务器上的所有构建都可以通过构建号进行搜索(不建议在生产服务器上使用)。 对于未找到的构建,将返回 404(未找到)响应
定位器:id:<number>,xxx:yyyy
以前,构建是通过 id "<number> 找到的,其他维度被忽视。
现在,如果通过ID找到的构建与其他维度不匹配,响应为 404(未找到)。
定位器:agent:< agentLocator >
之前 <agentLocator> 是按原样使用的,没有应用任何默认设置(未经授权的代理包括在内,直到特别排除)
现在 <agentLocator> 的行为与 /app/rest/agents 请求中的一致:默认情况下会排除未经授权的代理
查找项目
以前,如果搜索的项目名称与多个项目匹配时,会返回 404 错误。 现在将返回找到的第一个项目。
构建工件
修复了通过 /app/rest/builds/<locator>/artifacts/* 请求列出构建工件的几个问题,这些问题可能会引起请求结果的微妙变化。 如果您依赖于此响应,请检查新的行为。最重要的变化是:
通过 URL 部分指定的初始路径将在没有当前定位器值的情况下进行搜索,除非磁盘上没有此类工件,否则不会生成 404 响应。
默认情况下,存档不被视为目录(没有子元素)。 指定 "browseArchives:true" 将归档文件视为目录(在 "recursive:true" 模式下,只有一级的归档文件会被视为目录)。
代理
系统未知的代理(已被删除的)通常具有 id "-1"。 现在,这类代理将不再包含 "id" 、 "pool" 和一些其他条目。
Xcode 7 支持
实验性支持已添加对 Xcode 7 的支持。
问题跟踪器集成
由于 API 的变更,第三方问题跟踪器集成插件可能与 TeamCity 版本 9.1 不兼容。 旧的插件将无法运行,并在 teamcity-server.log
日志中报告 "java.lang.NoSuchMethodError: jetbrains.buildServer.issueTracker.AbstractIssueProviderFactory.<init>(Ljetbrains/buildServer/issueTracker/IssueFetcher;Ljava/lang/String;)V" 错误(问题 中有更多细节)。 如果您发现此类错误,请联系 插件作者。 如果您是受影响插件的作者,请参照 Open API 更改 中的相关注解。
从 9.0.4 版更改为 9.0.5 版
没有潜在的破坏性更改。
从 9.0.3 版本到 9.0.4 版本的更改
没有潜在的破坏性更改。
从 9.0.2 版本到 9.0.3 版本的更改
没有潜在的破坏性更改。
从 9.0.1 到 9.0.2 的更改
没有潜在的破坏性更改。
从 9.0 变更为 9.0.1
已知问题
如果您为使用 TeamCity 9.0 中的 meta-runners 的项目启用了版本设置,在升级和提交到设置 VCS 根之后,meta runners 将从服务器删除。 解决办法是手动将Meta-Runner (元运行器)定义提交到设置仓库中。 相关问题:TW-39519。
Oracle 10.x JDBC 驱动程序不再受支持
由于 Oracle 10.x JDBC 驱动程序缺少对国家字符集(nvarchar)的支持,因此 TeamCity 9.0.1 将要求升级到最新版本的 Oracle JDBC 驱动程序。 支持的 Oracle JDBC 驱动程序的最低版本是 11.1。
从 8.1.x 更改为 9.0
已知问题
如果您配置了提及 ".teamcity" 目录的自定义构建工件清理规则,构建日志可能会在清理过程中被删除。 在升级并删除所有带有 ".teamcity" 的自定义工件清理规则之前,请确保您已备份构建日志。 相关问题:TW-40042。 这个问题已在 9.0.3 版本中修复。
如果您使用 Microsoft SQL Server 数据库配合 TeamCity,在计划的清理背景运行后,TeamCity UI 页面可能会锁定,直到服务器重启。 请参阅 TW-39549 以获取详细信息。 此问题已在 9.0.2 版本中修复。
如果您在服务器上使用 LDAP 验证,并且服务器上有很多登录尝试(例如,有一个正在使用的 REST 脚本),可能会发生 OutOfMemory 错误并需要重新启动服务器。 考虑安装一个含有来自 问题 的修复的 LDAP 插件。 此问题已在 9.0.1 版本中得到修复。
如果您有大型的 Maven 项目,您可能会看到因为 OutOfMemoryError 而导致构建失败。 这是由于后端嵌入的 Maven 更新到 3.2.3,其内存占用更大所造成的。 请考虑提高 构建代理 内存限制 相关问题: TW-41052
在 XML 设置文件中的 UUID
自从 TeamCity 9.0开始,项目、构建配置和 VCS 根的磁盘存储的 XML 设置定义具有唯一的、非人类可读的 id(uuid)存储。 这些 id 是自动生成的,并且被假定为全球唯一。 在复制设置文件时,您需要改变 / 使实体的 id(文件名)和 name(跨兄弟)唯一,而不仅仅是从文件中删除它的 uuid。 TeamCity 将自动生成新的 uuid。
构建日志存储
存储在 TeamCity Data Directory 下的构建日志的内部格式的位置已经更改。 内部格式的构建日志文件现在储存在隐藏的构建工件下。具体来说,位置已从 系统/消息/CHyy/xxyy.*
更改为 system/artifacts/<项目外部 ID>/<构建配置名称>/xxyy/.teamcity/logs/buildLog.*
。
旧的构建日志在 TeamCity 服务器启动时迁移到新的位置(TW-37362)。 为避免此迁移,应在服务器启动之前设置 teamcity.skip.logs.migration
内部属性。
升级后重新构建索引
在从9.0之前的版本升级后首次启动服务器时,服务器将为了构建搜索功能和 NuGet feeds 重新索引所有构建。 在索引过程中,某些构建将不会显示在搜索结果和 NuGet feeds 中。 服务器在进行索引时也可能表现出较低的性能。 teamcity-server.log
有对应的日志记录。 在索引完成后,日志中会有 "BuildIndexer (search) - Finished re-indexing builds" 和 "BuildIndexer (metadata) - Finished re-indexing builds" 这两行文字。
集成问题跟踪器
自 TeamCity 9.0起,问题跟踪器的配置已从全球服务器范围的配置更改为项目级别的配置。在服务器升级过程中,所有现有的问题跟踪器集成都被移至根项目,使他们仍然可以被服务器上的所有项目访问。
WebSocket 连接和代理服务器
自 9.0 版本起,TeamCity 尝试在浏览器和服务器之间建立 WebSocket 连接,以便进行 UI 更新。 如果您在 TeamCity 网页 UI 前有代理服务器(如 nginx),请确保代理配置正确以支持 WebSocket 连接。
如果代理设置错误或不支持 WebSocket 协议,那么 TeamCity 系统管理员将会看到一个服务器健康项目。 在这种情况下,TeamCity 将像以前一样使用普通旧的轮询来进行 UI 更新。
REST API
REST API 使用版本 9.0。 API 的旧版本仍可在 /app/rest/8.1
, /app/rest/7.0
, /app/rest/6.0
URLs 下找到。
更改 bean:将
webLink
属性更名为webUrl
,以匹配其他 beans(TW-34398)。在某些bean中,代表空集合的子元素不再被包含在响应中(以前会作为空标签包含在XML中)。
构建
更改
元素默认不包含“count”属性(出于性能考虑),但仍可通过提供字段参数来包含count,例如:“fields=$long,changes(count,href)”"/app/rest/agents
请求现在默认返回所有经授权的代理(过去还包括未经授权的已连接代理)排队中的构建现在具有
iD
属性,而不是taskId
属性(自从 TeamCity 9.0 以来,新的构建它们是相同的)
构建标签相关的更改
现在, /app/rest/builds/<buildLocator>/tags
构建请求返回一个不同的 XML: <tags count="1"><tag name="TAG"/></tags>
,而非 <标签><标签>TAG</标签></标签>
。
同样的改变也适用于 /app/rest/buildTypes/<buildTypeLocator>/<buildTypeLocator>/buildTags
请求。
同样的结构改变也适用于构建实体中嵌套的 "tags" 元素。
要创建一个标签,旧的方法是将纯文本标签名发布到 app/rest/builds/<buildLocator>/tags
URL。
当向 URL 发送 POST 或 PUT XML 或 JSON 请求时,需要使用新的 XML 格式( <tag name="TAG"/></tags>
而不是 <tag>TAG</tag>
)。
处理构建中具有相同名称的测试
在 TeamCity 9.0 中,同一构建中具有相同名称的多个测试被视为一个具有调用次数的单一测试。 如果这些测试运行中的任何一个失败,整个测试在构建中将被视为失败。 相关的问题是 TW-24212。
这个变化会导致在多次运行相同测试的构建中测试数量计数器的下降。 如果您的构建失败条件依赖于构建中的测试编号,这项更改可能会影响到您。
如果您需要将测试视为独立的测试,可以考虑在具有不同名称的测试套件中运行它们,或者以其他方式更改测试/运行逻辑,以更改在 TeamCity 中显示的完整测试名称。
与数据库相关的更改
现在,TeamCity 使用的 MS SQL 数据库支持文本字段的国家字符集 (nchar,nvarchar,nclob 类型)。 建议使用 Microsoft 原生的 JDBC 驱动程序,因为 jTDS JDBC 驱动程序不支持 nchar 和 nvarchar 字符。 如果您仍在使用 jTDS ,请 迁移。
在升级并进入正常工作状态后,TeamCity 会启动一个后台进程,将条目从 vcs_changes 数据库表移动到 vcs_change 表。 这个过程是透明的,您可以像往常一样继续使用服务器。 它对服务器性能的影响可以忽略不计,唯一受影响的逻辑是项目导入功能(建议仅在完成该过程后使用备份)。 过程的进度可以在服务器管理的备份部分中看到,同时会显示“TeamCity 目前正在优化数据库中的 VCS 相关数据以提高备份/恢复性能”的信息。
另一项重要的事情是,数据复制会增加原始数据库存储的大小。
如果这对您的情况构成问题(例如,对于设置了数据库大小限制的 Microsoft SQL Server 数据库来说可能会有问题),建议在升级之前确保数据库大小限制是当前大小的两倍。 在 VCS 变更迁移过程完成后,可以执行特定于数据库的程序,以使存储空间缩小以匹配实际存储的数据。
与 VCS Root 相关的更改
Git 和 Mercurial VCS 根目录不再为新的 VCS 根目录提供在服务器上指定自定义克隆路径的能力。 如果您需要此功能,请分别为 git 和 mercurial 设置以下内部属性为 true
: teamcity.git.showCustomClonePath
, teamcity.hg.showCustomClonePath
。
Visual Studio 插件
作为 ReSharper Ultimate 的一部分安装的 TeamCity 插件将删除预打包产品的旧版本:9.0 之前的 TeamCity 和 ReSharper 版本,3.0 之前的 dotCover 版本,以及 6.0 之前的 dotTrace 版本。
另外,它不会使用8.1版本提供的设置。 从 TeamCity 服务器下载的传统插件仍然可以使用以前版本的设置。
其他
通过 Java 网页启动安装包安装 TeamCity 代理的方式已经不再可用。
从 8.1.1 到 8.1.4 的更改
没有潜在的破坏性更改。
从 8.1 至 8.1.1 的变化
命令行运行器
在 8.1 中引入的行为变化(见 下文)已得到修复。 使用“可执行参数”选项的命令行运行器,如果在 TeamCity 8.1 中创建/更改,可能会在升级时显示出行为变化。 推荐的方法是切换到 "自定义脚本" 选项,而不是在命令行运行器中使用 "可执行文件带参数"。
VSTest.Console 运行器的单独下载
VSTest 控制台运行器不再与 TeamCity 一起捆绑,现在可作为一个单独的插件获得。 有关下载详细信息,请查看 插件页面
从 8.0.6 版到 8.1 版的更改
使用集成安全性创建 MS SQL 数据库的已知问题
当您全新安装 TeamCity 并使用数据库设置 UI 创建一个整合安全性的 MS SQL 数据库时,可能会收到一个错误。 我们计划在下一个错误修复中解决此问题,与此同时,请使用以下的临时解决方法:
在收到错误后,停止 TeamCity 服务器。
启动 TeamCity 服务器。
在数据库配置屏幕上,填写所需的信息。 不要使用刷新按钮。 请确保所提供的信息是正确的。
继续进行配置步骤。
如果出于某种原因,上述的解决方法无法解决问题,请执行以下操作:
启动 TeamCity 服务器,批准新建数据库,使用登录名和密码配置 MS SQL 访问权限,不用 integrated security。
确保 TeamCity 正常运行。
停止 TeamCity 服务器。
修改 设置外部数据库 文件:配置 MS SQL 连接字符串以使用集成安全性,并删除登录名和密码。
再次启动 TeamCity 服务器。
已知 VSTest.Console 运行器的问题
一种新的 "VSTest.Console" 运行程序首次在 TeamCity 8.1 中出现,目前处于实验状态,不建议在生产环境中使用。 在 TeamCity 8.1.x 中,默认不会包含此内容(将作为单独的下载提供)。
PowerShell 运行器的已知问题
PowerShell runner 插件在 8.1 中出现故障。 修复已经可以使用,请按照 问题评论 中的指示进行操作。
已知的 Command Line Runner 问题
使用“可执行文件及其参数”选项的命令行运行器可以以与之前 TeamCity 版本稍有不同的方式处理引号(")和百分号(%)(请参阅 问题 中的详细信息)。 要切回到先前(8.0)的行为,您可以在构建配置或项目中指定 command.line.run.as.script=false 配置参数。 问题已在 8.1.1 中得到解决。
推荐的做法是在命令行运行器中切换到“自定义脚本”选项,而不是“带参数的可执行文件”。
内存设置
如果您还没有切换到 64 位 JVM ,并且为服务器使用了 -Xmx1300
内存设定,而且服务器正在 Windows 上运行,请考虑将设定降低到 -Xmx1200
,否则您可能会遇到 "Native memory allocation (malloc) failed" JVM 崩溃。 查看 推荐的内存设置 以获取详细信息。
操作菜单
某些操作已移至页面右上角的 "操作" 按钮下,靠近运行按钮。
这些包括:"在构建的更改选项卡上标记此构建源",
"暂停","复制","移动","删除","关联模板","提取模板","提取 Meta-Runner" 在构建配置设置管理页面上,
"复制","移动","删除","归档","批量编辑 ID" 在 项目设置 管理页面上。
创建 Maven 构建配置默认不可用
创建 Maven 构建配置"操作已不再可用。 其大部分功能都由从 URL 创建项目和从 URL 创建 VCS 根目录页面所覆盖。
由 GroovyPlug 插件中的 triggeredBy 参数触发
由插件添加的 build.triggeredBy
和 build.triggeredBy.username
配置参数现在可以在没有插件的情况下通过 teamcity.build.triggeredBy 和 teamcity.build.triggeredBy.username 名称分别使用,这要归功于 插件 的提供。 如果您使用了插件的参数,请考虑在您的设置中迁移到后一组参数。
共享资源构建功能
如果构建锁定了具有自定义值的资源的所有值,那么这些值将作为构建参数中的锁定值提供。 对应问题:TW-29779
TeamCity 磁盘空间监视器
以下的 内部属性 定义了 TeamCity 服务器机器上的免费磁盘空间阈值:
teamcity.diskSpaceWatcher.threshold
默认设置为 500 Mb,会在 TeamCity 网页 UI 的所有页面上显示警告。teamcity.pauseBuildQueue.diskSpace.threshold
默认设置为 50 Mb,会暂停构建队列。teamcity.diskSpaceWatcher.softThreshold
属性已被移除。
PowerShell
PowerShell 插件现在在执行脚本时使用在 UI 中指定的版本作为 -版本
命令行参数。 对应的问题:TW-33472
REST API
API 的最新版本并未改变,仍然是 "8.0",但是 API 的详细信息下面有一些变化。 如果您发现这对您的 REST API 使用造成了不便,请在对应的 问题中评论。
在 REST API 请求的响应中返回的实体现在可能排除具有空/默认值的属性/元素。 这与布尔字段的 "false" 值和空集合有关。 建议的方法是确保客户端代码假设 boolean 属性 / 元素不存在时的值为 "false"。
"buildType 节点的 "projectName" 现在包含完整项目名称(包括父项目的名称),而不是项目的短名称。
在构建列表中,"startDate" 属性不再包含在 "build" 节点中。 它已经变成了元素,而不是属性,以匹配完整的构建数据表示。 如果您的 REST API 使用受到影响,请检查一种方法,以便在要求获得构建列表的请求中获取该元素。
请求 /app/rest/buildTypes/XXX/parameters/YYY 和 /app/rest/projects/XXX/parameters/YYY 现在支持 "text/plain" 和 "application/xml" 响应。 要获取纯文本响应(这是 8.1 版之前唯一支持的方式),您需要在请求中提供 "Accept: text/plain" 头部信息。
现在,VCS 根的密码属性已包含在响应中,只是没有值。
CCTray-format XML( app/rest/cctray/projects.xml
)现在不包括暂停的构建配置。
对实验请求的响应 /app/rest/buildTypes/XXX/investigations
更改了格式,并增加了额外的字段以涵盖测试和问题调查。 有一个内部属性 rest.beans.buildTypeInvestigationCompatibility
用于包含已删除的子项。 如果您需要使用内部属性,请通过 支持电子邮件 告知我们。
从 8.0.5 到 8.0.6 的更改
没有潜在的破坏性更改。
从 8.0.4 到 8.0.5 的更改
没有潜在的破坏性更改。
从 8.0.3 版本到 8.0.4 版本的变更
首次清理
首次在服务器升级后进行清理可能需要比平时更多的时间,尤其是当服务器上有许多构建时。 接下来的清理操作将比以前的版本运行得稍微快一些。
8.0 版到 8.0.3 版的更改
没有潜在的破坏性更改。
从 7.1.x 变更至 8.0
项目和构建配置 ID
此版本引入了用户可指定的项目和构建配置的 ID。 这个新的 ID 现在至少在以下情况中替代了内部 id(projectN 和 btNNN):
网页和工件下载的 URLs
在 REST API 中
项目 ID 也在服务器上的目录名称中使用,位于
<TeamCity 数据目录>\system\artifacts
,而并非使用在 TeamCity 8.0 之前使用的项目名称。
如果您使用了以上任何一种,请确认您是否受到了这种变化的影响。
在 Identifier 上更多地了解 IDs。
在升级时,所有项目会根据其名称自动生成 ID。
构建配置 ID 被设置为等于内部(btNNN)id,稍后可以通过管理员界面通过重新生成 ID或批量编辑 IDs进行更改。
请注意,项目名称和构建配置的名称在服务器范围内不再是唯一的(只在直接父项目内是唯一的),并且可以包含与在目录或文件名中使用的任何符号相关的符号。
磁盘上的项目设置格式
磁盘下项目设置存储的格式已经更改为 <TeamCity 数据目录>/config
。如果您使用了任何工具来读取或更新 project-config.xml
文件,您将需要更新这些工具。
建议使用 REST API 或 TeamCity 开放 API(Java)进行更改,以便工具不会受格式更改的大影响。
构建配置模板
在版本 8.0 中,构建配置模板支持项目层次结构,TeamCity 使用新的规则:
TeamCity 管理界面仅限于使用当前项目及其父项目的模板。 在复制项目或构建配置时,不属于目标项目或其父级之一的模板将被自动复制。
TeamCity 不再允许将构建配置附加到模板,除非该模板属于当前项目或其父项目之一。
在8.0版本之前,可以从一个项目的构建配置中提取模板,应用到另一个无关的项目,或者将一个项目中的构建配置与另一个项目的模板关联起来。 升级到 TC 8.0 后,这些模板在当前项目中将无法访问。 为了重复使用与无关项目的构建配置模板,建议手动将其移至公共的父项目(或者如果您希望它们全球可用,则移至 Root 项目)。
JVM 源自的代理参数(os.arch 等)
代理不再报告来自代理JVM的系统属性: system.os.arch,system.os.name,system.os.version,system.user.home,system.user.name,system.user.timezone,system.user.language,system.user.country,system.user.variant,system.path.separator,system.file.encoding,system.file.separator
)。所有上述参数现在都作为带有 teamcity.agent.jvm.
前缀的配置参数进行报告。如果您使用了任何参数,请确保将其更新为新值。
IntelliJ IDEA 项目运行器
IntelliJ IDEA 项目运行器现在使用 IntelliJ IDEA 的外部构建工具来构建项目。 由于此工具需要 Java 1.6 才能运行,因此 IntelliJ IDEA 项目运行器现在也至少需要 Java 1.6。
具有功能分支的构建配置清理
现在,带有功能分支的构建配置会按分支处理清理规则,这可能比以前的版本在清理过程中保留更多的构建。 请查看 详细信息。
Team Foundation Server 集成
TFS 现在更倾向于使用 Team Explorer 2012 而非 Team Explorer 2010(如果两者都已安装)来执行 TFS 操作
与 YouTrack 的兼容性
如果您使用 JetBrains YouTrack 并使用其 TeamCity 集成功能,请注意只有 YouTrack 版本 4.2.4 及以后版本与 TeamCity 8.0 兼容。
如果您需要早期的 YouTrack 版本与 TeamCity 8.0 一起工作,请告诉我们。
REST API
External ids API 中关于项目 / 构建类型 / 模板的新外部 ids 以及其他的改变已经发生了。
兼容 TeamCity 7.1 的旧 API 仍然可以通过 "/app/rest/7.0" URL 获取。
如果您在项目、构建配置或模板中使用了带有 "id" 的定位器的 URL(如 .../app/rest/projects/id:XXX
或 .../app/rest/buildTypes/id:XXX
),请将定位器更新为以下之一:
(推荐)"id:EXTERNAL_ID"(您可以在网页UI的URL中或通过请求
.../app/rest/projects/internalId:OLD\_ID/id
获取外部ID)仅需 "ANY_ID" 就可以通过其内部、外部 id 或名称查找实体(谨慎使用:您可能会找到比预期更多的结果)
"internalId:INTERNAL_ID" 可以用于通过内部 id 查找实体。您也可以使用 "/app/rest/7.0/" URL 前缀代替 "/app/rest/",以用于与仍使用内部 ID 的 7.0 版本的 REST API 进行工作,只是构建完成触发器属性除外。
另外,您可以设置内部属性 rest.compatibility.allowExternalIdAsInternal=true
,以开启兼容性模式,这样 id:xxx 定位器也会通过内部 id 进行搜索。 请注意,这将在未来的 TeamCity 版本中被弃用,不建议使用。
其他更改
对 ".../builds/<locator>/..." 和 ".../builds?locator=<locator>" 的构建请求,默认情况下不再返回个人和已取消的构建。 要包括这些,请确保在定位器中添加 ",personal:any,canceled:any"。
构建实体的"relatedIssues"元素不再包含相关问题的完整列表。 它只具有 "href" 属性,其值可以用来通过单独的请求获取相关问题。还有一个内部属性 "rest.beans.build.inlineRelatedIssues" ,可以将其设置为 true
以使 "relatedIssues" 节点兼容性返回。 查看 TW-20025 以获取详细信息。 另外,".../builds/xxx/related-issues" URL 已经更名为 ".../builds/xxx/relatedIssues"。
source_buildTypeId" 属性已从快照和工件依赖节点中删除。 反而,"source-buildType"子元素被添加了一个对构建类型的引用。
仍然可以用"source_buildTypeId"属性创建依赖关系,但已被弃用。 内部存在一个属性 "rest.compatibility.includeSourceBuildTypeInDependencyProperties",它可以设置为 true
,以把 "source_buildTypeId" 属性引入回来。
在版本8.0中,VCS 根支持项目层次结构:
当创建 VCS 根时,现在应始终提供
项目
元素。 该元素支持定位器
属性来指定项目。the
共享
属性已从 VCS 根目录中移除:升级后,这样的 VCS 根目录会附加到根项目(具有“_Root” ID)并变得全局可用。当复制项目和构建配置时,
shareVCSRoots
属性已不再存在。 为了使 VCS 根对项目和构建配置可用,请将其移至父级/根项目,然后进行复制。
建议创建项目层次结构,该结构应对应于组织 / 设置共享结构,并将 VCS 根移动到最嵌套的 umbrella 项目中。 用户然后可以在项目中被授予 "创建 / 删除 VCS 根" 角色,以便编辑 VCS 根。 请注意,只有在用户拥有“编辑项目”权限的项目中使用了VCS根的情况下,用户才能编辑VCS根。
在构建配置模板节点中,"template" 属性已被重命名为 "templateFlag"。
现在,PUT for /users/<locator>/roles 和 /userGroups/<locator>/roles 应接受角色列表,替换现有角色,而不是接受单个角色并添加。
以前不返回任何内容的许多 PUT 和 POST 请求现在返回已创建的实体。
开放 API 变更
查看 详情
共享资源插件
如果您在使用 TeamCity 7.1.x 时使用了 Shared Resources plugin,请务必将其删除,因为现在已经包含在内了。 请查看 升级说明。
队列管理器插件
如果您使用了 QueueManager 插件,请务必将其删除,因为现在已经包含在内了。 请查阅 升级说明
捆绑的 Maven
Maven,随 TeamCity 一起升级到了 3.0.5 版本。
代理到服务器的 HTTPS 连接
如果您的代理通过 HTTPS 协议连接到 TeamCity 服务器,且在升级后代理无法连接并出现如下错误消息:javax.net.ssl.SSLHandshakeException:收到致命警告:handshake_failure
那么您需要更改 Tomcat SSL 连接器配置,也就是要在 SSL 连接器中添加以下属性并重启 TeamCity 服务器:sslEnabledProtocols="TLSv1,SSLv3,SSLv2Hello"
仅当服务器在 Java 1.7 下运行时,问题才会显现。
另请参阅:
从 7.1.4 到 7.1.5 的变更
teamcity.build.branch 参数的含义已经改变,请查看 https://youtrack.jetbrains.com/issue/TW-23699#comment=27-448002
从 7.1.3 变更至 7.1.4
没有潜在的破坏性更改。
从 7.1.2 到 7.1.3 的更改
没有潜在的破坏性更改。
请在我们的问题跟踪器中查看针对该版本的 known regressions 的最新列表。
从 7.1.1 变更到 7.1.2
可能存在的 hg 服务器端检出问题
7.1.2 版本存在一个已知问题:TW-24405,当使用 Mercurial 仓库进行服务器端检出、标记或文件内容查看时,可能会复现此问题。如果您遇到了"abort:destination 'hg1' 不为空"的错误消息,请安装附在问题上的补丁。
其它已知问题
请在我们的问题追踪器中也查看一下 已知退化 的列表,关于这个版本。
从 7.1 变更到 7.1.1
没有潜在的破坏性更改。
从 7.0.x 更改为 7.1
Windows 服务配置
自 7.1 版本起,TeamCity 开始使用自己的服务包装解决方案,而不是之前版本中默认的 Tomcat 解决方案。这改变了 TeamCity 服务的配置方式(包括数据目录和服务器启动选项,包括内存设置),并在服务和控制台启动之间统一了它。
请参考更新后的 部分,以配置服务器启动属性。
代理 Windows 服务开始利用操作系统提供的环境变量。 一旦 Agent 服务器(和 JVM)是 x86 进程,agent 将报告 x86 环境变量。 这个变动可能会影响您的 CPU 位数检查。 请查看 MSDN Blog 上关于如何通过报告的环境变量来检查机器是否支持 x64 的方法。
使用 Windows 安装程序安装时,TeamCity 数据目录的默认位置
这仅与使用 Windows 安装程序进行的全新 TeamCity 安装相关。 如果您升级现有的安装程序,现有的设置将被保留。
Windows 安装程序现在将 %ALLUSERSPROFILE%\JetBrains\TeamCity
位置作为 TeamCity 数据目录的默认位置。 在 TeamCity 7.0 和以前的版本中,情况曾经是 %USERPROFILE%\.BuildServer
。
Windows 域登录模块
当 TeamCity 服务器在 Windows 下运行并使用 Windows 域用户身份验证时,TeamCity 现在使用另一个库(Waffle)与 Windows 域进行通信。 在 Linux 下,行为保持不变:jCIFS 库的使用方式与以往相同。
除非您在 ntlm-config.properties 文件中为 jCIFS 库指定了特定设置,否则您的安装应该不会受到影响。
如果您在升级后使用 Windows 用户名 / 密码登录 TeamCity 时遇到任何问题,请提供详细信息 给我们。 在此期间,您可以切换到使用旧的 jCIFS 库。 为此,请在 内部属性文件 中添加 teamcity.ntlm.use.jcifs=true
行。
请注意,jCIFS 库的方式可能在 TeamCity 的未来版本中被废弃,因此,如果您可以不使用此属性,那么我们不建议您进行属性规范。
为 Git 和 Mercurial 更改检出目录
拥有 Git 或 Mercurial VCS 根,并使用默认检出目录的构建配置将在升级时执行清理检出。 当默认检出目录名称发生变更时,将触发干净的检出。 进一步的构建将更积极地重用检出目录(所有使用不同分支但使用相同VCS根目录的构建将使用相同的目录)。 这会影响代理端和服务器端的检出。
Perforce 代理检出工作空间名称的变更
使用 Perforce 代理侧检出的构建配置将在服务器升级后执行一次清理检出。 这与自动生成的 Perforce 工作区更改的名称有关。
SVN 修订格式
对于在外部仓库中检测到的变更,SVN 修订采用了 NNN_MMM:EXTUUID_CHANGEDATE
格式,其中 NNN
- 主仓库的修订, MMM
- 外部仓库的修订, EXTUUID
- 外部仓库的 UUID, 更改日期
- 变更时间戳。 这次更改可能会影响使用最后一次构建更改的修订版的插件 / REST api 客户端。
使用 Microsoft SQL Server 作为外部数据库时的默认模式
从 7.1 版本开始,TeamCity 只能与单一的数据库模式一起工作,这与它能在数据库服务器的任何模式中工作的前几个版本不同。
与 TeamCity 相关的表应位于数据库模式中,该模式被设定为 TeamCity 用于连接数据库的数据库用户的默认模式。
这个更改可能需要重新配置数据库,为 TeamCity 服务器用于连接数据库的用户设置默认模式。
请在执行升级操作前,检查所有与 TeamCity 相关的表是否都位于默认用户的模式中。
如果默认用户的模式设置不正确,TeamCity 可能会报告 “TeamCity 数据库为空或不存在。 如果您继续,将在首次启动较新的 TeamCity 时创建一个新的数据库。
要更改用户的默认模式,请使用 'alter user' SQL 命令。
对于默认模式的描述,请参阅 相应的文档 中的 "默认模式" 部分。
Open API 更改
请参阅 详情
从 7.0.1 版到 7.0.4 版的更改
没有潜在的破坏性更改。
从 7.0 更改为 7.0.1
HTML 报告标签 URL 更改
如果您使用构建级别或项目级别的 报告标签 的直接链接,请更新链接,因为它们将在升级后 变更。 这项变更是为了使功能更加可靠而必要的。
从 6.5.x 到 7.0 的变更
(已知问题) 构建可能会挂起或者对 NUnit 和其他 .Net 测试运行器产生内存错误
受影响的包括:.Net 测试运行器(NUnit,MSTest,MSpec)以及 TeamCity NUnit 控制台启动器。
在测试程序集的路径有几个深路径且无通配符("*")时复现。
可见的结果:在构建日志中的“开始 ... JetBrains.BuildServer.NUnitLauncher.exe”链接之后,构建挂起或因 OutOfMemoryException 错误而失败。
问题(TW-20482)已修复,且该修复将在下一版本中包含。
带有修复的补丁可用。
Ant Runner 支持的最低项目 JDK 版本
从这个版本开始,Ant runner 在 运行时构建部分至少需要 JDK 1.4(之前是 1.3)。 这意味着,如果您的项目使用 JDK 1.3 进行编译或测试运行,您将无法使用 TeamCity Ant runner。对于需要 JDK 1.3 的项目,您可以改用命令行 runner,并配置 "XML 报告处理" 构建功能来解析测试报告。
支持服务器和代理的 Java
从这个版本开始,以下要求
TeamCity server 应运行在 JRE 1.6 或更高版本(之前是 1.5 版本)。 TeamCity .exe 发行版已经与适当的 Java 捆绑在一起。 对于 .tar.gz 或 .war 的 TeamCity 分发版本,您可能需要手动安装并配置服务器 manualy。
TeamCity 代理 应运行在 JRE 1.6 或更高版本(以前是 1.5)。 Agent .exe 分发已经捆绑了适当的 Java。 如果您使用了 .zip 代理分发或者安装了 TeamCity 5.0 或更早版本的 TeamCity 代理,您可能需要 手动操作。 如果您正在运行 TeamCity 6.5.x,请检查现有 TeamCity 服务器的“代理”页面:如果任何已连接的代理运行的 JDK 少于 1.6,该页面将出现黄色警告。
项目/模板参数覆盖
在 TeamCity 7.0 中,项目参数比模板中定义的参数具有更高的优先级,即,如果项目中有一个参数具有某个名称和值,并且在同一项目的模板中有与之相同名称但不同值的参数,那么将使用来自项目的值。 在 TeamCity 6.5 中并非如此,而是在模板属于其他项目时 更改为更灵活。如常规,构建配置参数具有最高优先级。
不再支持 Sybase
从这个版本开始,将 Sybase 作为外部数据库的支持已回归“实验”状态。
做出这个决定的原因是,看起来并没有声势活跃的 TeamCity 数据库,而且支持它需要 TeamCity 团队付出重大努力,而这份努力其实可以用来改进产品的重要领域。
虽然有可能,我们还是不推荐使用 Sybase 作为外部数据库,我们也没有计划提供有关 Sybase 的问题的支持。
请考虑使用其他支持的数据库。 如果您使用 Sybase,请在升级 TeamCity 之前迁移到其他数据库。
REST API 变更
多个对象获得了额外的属性和子元素(例如,BuildType,VcsRoot)。 请检查您的解析代码是否仍然可以运行。 /buildTypes/ 路径:BuildType 对象删除了 runParameters 字段(同样也删除了 /<locator>/runParameters 路径),转而支持 steps 集合和 /<locator>/steps/ 路径。
一项 bug 已被修复,此 bug 导致在某些资源中,单个元素数组的 JSON 表示不是数组。 请检查您的代码是否受到影响。
在构建对象中,"dependency-build" 元素已被重命名为 "snapshot-dependencies",revisions / revision / vcs-root 已被重命名为 revisions / revision / vcs-root-intance(现在它指向已解析的 VCS 根实例),revisions / revision / display-version 已被重命名为 "version"。
在 buildType 对象中,"vcs-root" 元素已被重命名为 "vcs-root-entries"
旧版本的 REST API 可通过在 TeamCity 7.0 中的 /app/rest/6.0/...
URL 获取。 请更新您使用 REST 的代码,因为 TeamCity 的未来版本可能会取消对 6.0 协议的支持。
支持的 Tomcat 的最低版本
如果您使用 TeamCity .war 发行版,请注意,Tomcat 5.5 不再受支持。 请将 Tomcat 更新到 6.0.27 或更高版本(推荐使用 Tomcat 7)。
Swabra
swabra.handle.exe.path 和 handle.exe.path 配置参数不再支持在代理上提供 Sysinternals handle.exe 的路径。 参阅 插件页面 以获取详细信息。
Open API 变更
来自 jetbrains.buildServer.messages.serviceMessages 包的类,例如 jetbrains.buildServer.messages.serviceMessages.BuildStatus,不再依赖于 jetbrains.buildServer.messages.Status 类。 为了使您的代码与 TeamCity 6.0 - 7.0 兼容,您可以使用 jetbrains.buildServer.messages.serviceMessages.ServiceMessage#asString 方法,例如:
另请参阅 Open API 更改
从 6.5.4 版本升级至 6.5.6 版本
没有潜在的破坏性更改。
从 6.5.4 版更改至 6.5.5 版
(已知问题索引 6.5.6 ).NET Duplicates finder 可能停止工作,补丁已有,请参见此评论:https://youtrack.jetbrains.com/issue/TW-18784#comment=27-261174
从 6.5.3 版到 6.5.4 版的更改
没有潜在的破坏性更改。
从 6.5.2 变更到 6.5.3
没有潜在的破坏性更改。
从 6.5.1 版本到 6.5.2 版本的变更
Maven runner
与 MAVEN_OPTS 的工作方式再次发生了变化。 希望这是 6.5.x 迭代中的最后一次。 (参见 https://youtrack.jetbrains.com/issue/TW-17393)
现在 TeamCity 的行为如下:
如果已设置 MAVEN_OPTS,TeamCity 会从 MAVEN_OPTS 中获取 JVM 参数
如果在运行器设置中提供了 "JVM 命令行参数",那么它们将取代 MAVEN_OPTS 和 MAVEN_OPTS 将被这个值覆盖,以将其传播到嵌套的 Maven 执行。
那些在升级到 6.5 版本后遇到无法使用 MAVEN_OPTS,并且不得不将其值复制到“JVM 命令行参数”以使其构建工作的人,现在无需在他们的配置中做任何改变。 构建将以与 6.5 或 6.5.1 中相同的方式运作。
从 6.5 变为 6.5.1 的更改
(已修复已知问题)在 Oracle 下的长时间升级和缓慢清理
从 6.0.x 变更至 6.5
(已知问题)Oracle 下的升级时间较长且清理较慢
在首次升级服务器启动时,数据库结构将被转换,如果您使用 Oracle 外部数据库(TW-17094),则此过程可能需要很长时间(在大型数据库上可能需要几个小时)。 这已在 6.5.1 中修复。
Agent JVM 升级
在这个版本的 TeamCity 中,我们添加了由代理使用的 JVM 的半自动升级功能。 如果代理上已安装 Java 1.6,而该代理仍在 Java 1.5 下运行,TeamCity 将要求切换代理到 Java 1.6。 您需要做的就是检查检测到的 Java 路径是否正确,并确认此切换,其余的应该会自动完成。 此操作是针对每个代理进行的,您需要分别为每个代理进行操作。 请注意,我们建议您切换到 Java 1.6 ,因为在某种程度上,TeamCity 将无法与 Java 1.5 兼容。 确保新选择的 java 进程具有相同的防火墙规则(即,开放 9090 端口以接受来自服务器的连接)。
IntelliJ IDEA 覆盖率数据
只有在 IntelliJ IDEA 10.5+ 中,才能加载由与 TeamCity 6.5 绑定的 IntelliJ IDEA 覆盖率引擎产生的覆盖率数据。 由于覆盖率数据格式的改变,旧版本的 IntelliJ IDEA 将无法从服务器加载覆盖率。
IntelliJ IDEA 8 不再受支持
针对 IntelliJ IDEA 的插件已不再支持 IntelliJ IDEA 8。
不支持的 MySQL 版本
由于 MySQL 5.1.x 中的bugs,TeamCity 不再支持范围为 5.1 - 5.1.48 的 MySQL 版本。 如果检测到不支持的 MySQL 版本,TeamCity 将不会以适当的消息启动。 请将您的 MySQL 服务器升级到 5.1.49 版本或更高版本。
已完成构建的属性已显示
现在,已完成的构建在 "参数" 标签页上显示其在构建中使用的所有属性。 这可能会暴露其他构建(即给定构建作为工件或快照依赖项的构建)的参数名称和值。 请确保这在您的环境中是可接受的。 您还可以管理那些具有“查看构建运行时参数和数据”权限的用户,此权限默认情况下分配给“项目开发者”角色。
PowerShell 运行器已被捆绑在一起
如果您已手动安装 PowerShell 插件,请将其从 .BuildServer/plugins
中删除,因为现在 TeamCity 已捆绑了一个新版本。
更改设置位置
XML 测试报告设置已从运行器设置中移至专用的 构建功能。
"上一次完成的构建"的构件依赖在具有快照依赖的构建时会自动转换为专用的"来自同一链的构建"源构建设置。
Responsibility 被重命名为 Investigation
现在,分配给失败构建配置或测试的责任被称为 Investigation。 这只是一个术语更改,旨在使操作更中性。
如果您有任何关于 TeamCity 调查任务活动的电子邮件处理规则,请检查是否需要更新以使用新的文本模式。
REST API 更改
有几个对象获得了额外的属性和子元素(例如,构建中的 "startDate",更改中的 "personal")。 请检查您的解析代码是否仍然可以运行。
清理非默认检出目录
在以前的版本中,如果您使用绝对路径明确指定了构建 检出目录,TeamCity 不会清理该目录的内容以释放磁盘空间。
现在不再是这样。
因此,如果您为检出目录指定了绝对路径,并且您需要该目录出现在其他构建或机器环境的代理上,请将 system.teamcity.build.checkoutDir.expireHours
属性 设置为 "永不",然后重新运行构建。 请注意,我们不建议使用 自定义检出目录。
如果您正在使用 system.teamcity.build.checkoutDir.expireHours 属性之一,并将其设置为 "never" 以防止自动删除检出目录,那么在 TeamCity 升级后,该目录可能会被删除一次。 在升级后(且距离上一次构建在8天以内)只要在构建配置中运行一次构建,就能确保目录保留“受保护”的行为,而不会被 TeamCity 自动删除。
剩余磁盘空间
此版本在 UI 中公开了先前仅通过设置构建配置属性才能使用的 剩余磁盘空间功能。
尽管旧的属性仍然有效并优先使用,但我们强烈建议您删除它们,并通过 "磁盘空间" 构建功能指定值。 未来的 TeamCity 版本可能不再考虑手动指定的属性。
命令行运行器
@echo off
已经添加到由“自定义脚本”运行器参数提供的脚本中,它能关闭命令回显。 要启用命令回显,将 @echo on
添加到脚本中。
Windows Tray Notifier
您需要通过卸载然后重新安装来升级 windows tray notifier。 遗憾的是,由于旧版本的 Windows Tray Notifier 存在问题,自动升级将无法工作。
Maven 运行器
在早期的 TeamCity 版本中,通过调用 'mvn' shell 脚本来执行 Maven。 您可以在 MAVEN_OPTS 中指定一些参数,也可以在 UI 中指定一些参数。 Maven 构建运行程序通过拼接这两个(
%MAVEN\_OPTS%\+jvmArgs
)创建了自己的 MAVEN_OPT。 在这种情况下,如果某个参数在 MAVEN_OPTS 和 UI 中都被指定了两次,只有在 MAVEN_OPTS 中指定的参数才会生效。 从 TeamCity 6.5 开始,Maven runner 形成了直接的 java 命令。 尽管这种方法解决了许多不同的问题,但这也意味着 MAVEN_OPTS 不再有效,所有的 JVM 命令行参数应该在构建运行程序设置中指定,而不是在 MAVEN_OPTS 中。那些曾经需要在 TeamCity 6.0.x 中为 Maven 发布构建手动设置 surefire XML 报告,因为否则测试不会被报告的人,现在可以忘记那件事了。 自 TeamCity 6.5 版本开始,通过 release:prepare 或 release:perform 目标运行的 surefire 测试将自动被检测。 所以,请不要忘记在构建配置设置中关闭 surefire XML 报告,以避免重复报告!
电子邮件发送设置
请在升级后检查电子邮件发送设置是否正常工作(通过在管理 > 服务器配置 > EMail Notifier 上进行测试连接)。 如果不需要认证,请确保登录和密码字段为空。 非空字段可能导致电子邮件发送错误,如果 SMTP 服务器未预期认证请求。
XML 报告处理
来自 Ant JUnit XML 报告的测试可能会被报告两次(见 TW-19058),因为我们不再自动忽略 TESTS-xxx.xml 报告。
为了解决这个问题,避免使用 *.xml 掩码并指定更具体的规则,如 TEST-*.xml 或类似的,不会与以 "TESTS-" 开头的报告名称匹配。
Open API 变更
TeamCity 开放 API 中的一些返回类型发生了变化,因此插件可能需要针对新版本的 TeamCity 重新编译以继续使用。
另外,一些 API 已被弃用,并将在以后的版本中停用。 建议更新插件以避免使用已弃用的 API。
另见 Open API 变更
从 6.0.2 版本到 6.0.3 版本的变更
没有潜在的破坏性更改。
从 6.0.1 变更到 6.0.2
Maven 和 XML 测试报告在 Agent 上加载 CPU
如果您使用 Maven 或 XML 测试报告,且您的构建是 CPU 密集型的,那么您可能会发现已知问题的重要性。 补丁已可用,已在以下更新中修复。
从 6.0 版到 6.0.1 版的变化
没有潜在的破坏性更改。
从 5.1.x 更改至 6.0
Visual Studio 插件和 Perforce
在启用 Perforce 的情况下,TeamCity 6.0 VS 插件中存在一个严重的错误。 这可能会导致 Visual Studio 出现挂起和崩溃。 固定的插件版本现已可用。 (相关的 问题)。 此问题已在 TeamCity 6.0.1 中得到解决。
在代理上的 TFS 检出
在代理上的 TFS 检出可能会拒绝工作,并出现错误。 修补程序已经可以使用,参见 评论。 相关的 issue。 此问题已在 TeamCity 6.0.1 中得到解决。
错误更改优先级类别
您可能在更改优先级类别的优先级数字时遇到浏览器错误。 一个补丁可以在相关的 issue 中找到。 此问题已在 TeamCity 6.0.1 中得到解决。
IntelliJ IDEA 兼容性
在 TeamCity 插件中,不再支持 IntelliJ IDEA 6 和 7。
另外,如果您计划升级到 IntelliJ IDEA X(或其他 JetBrains IDE),请查看此 已知问题。
构建失败通知
TeamCity 6.0 在运行构建脚本时与准备构建时的构建失败情况进行了区别。 在后者情况中出现的错误被称为 "无法启动" 错误,并默认在网页用户界面中隐藏(请查阅 "显示已取消和无法启动的构建" 选项在构建配置页面上)。
自 TeamCity 6.0 版本以来,有一条独立的通知规则 "构建启动失败" ,适用于 "启动失败" 的构建。 所有其他构建失败通知都与构建脚本相关的失败有关。
请注意,在升级过程中,所有已开启 "The build fails" 通知的用户将自动获得 "The build fails to start" 选项,以保持旧的操作行为。
属性更改
teamcity.build.workingDir
属性不再应用于非运行器设置中。 为了向后兼容,该属性在非运行器设置中得到支持,并解析为第一个定义的构建步骤的工作目录。
Swabra 和 Build Queue Priorities 插件已被捆绑
如果您之前已经安装了这些插件,请在启动升级版的 TeamCity 之前将它们移除(通常来自 .BuildServer/plugins
)。
Maven runner
Java 1.5 以下的版本已不再被 Maven runner 的代理部分支持。 请确保您在 Maven 运行器设置中指定了 1.6+ 的 JVM,或确保 JAVA_HOME 指向此类 JVM。
NUnit 和 MSTest 测试
如果您在 TeamCity UI(sln 和 MSBuild 运行器)中配置了 NUnit 或 MSTest 测试,那么这些设置将从运行器中提取出来,并转换为相应类型的新运行器。
请注意,测试启动的实施方式已经更改,这影响了相对路径的使用:在 TeamCity 6.0 中,工作目录和所有界面明示的通配符都是基于构建的检出目录进行解析的,而它们过去是基于包含 .sln 文件的目录进行解析的。 简单的设置在 TeamCity 升级后会被转换,但您可能需要核实运行器是否包含适当的设置。
在构建配置属性中的 "%" 转义
现在,构建配置设置中定义的值里的两个百分号(%%)被视作单个百分号的转义字符。 为了保持如同以往版本的功能一样,您现有的设置在升级时将转换。 然而,您可能需要检查设置,以查找可能出现的与 "%" 符号相关的意外问题。
.Net Framework 属性被报告为配置参数
在之前的 TeamCity 版本中,安装的 .Net Frameworks、Visual Studios 和 Mono 被报告为构建代理的系统属性。
这使得属性在构建脚本中可用。为了减少推送到构建脚本中的 TeamCity 特定属性的数量,现在这些值通过配置参数报告(即,没有 "system." 前缀),并且默认情况下在构建脚本中不可用。 他们仍然可以在 Build Configuration 设置中通过使用以前的名称和百分比引用来使用,只是没有 "system." 前缀。
Ipr runner 已被弃用,推荐使用 IntelliJ IDEA Project runner
IntelliJ IDEA 项目的运行器已经被完全重写。 它并未被命名为 "IntelliJ IDEA Project" 运行器。 以前可用的 Ipr runner 也得到了保留,但已被标记为已弃用,并将在 TeamCity 的后续主要版本中被移除。 强烈建议将您现有的构建配置迁移到新的 runner。
请注意,新的 runner 使用不同的测试运行方法:您需要在 IntelliJ IDEA 中创建一个共享的 Run Configuration,并在 runner 的设置中引用它。
清理检查和重复数据的清理
从 6.0 版开始,当历史记录中清理构建时,将清理构建的检查和重复报告,而不是像以前那样在清理构建的工件时进行清理。
检查和重复运行器需要 Java 1.6
"检查"和"重复(Java)"运行器现在需要 Java JDK 1.6。 请确保 Java 1.6 已安装在相应的代理上,并检查是否在跑步者的 "JDK home path" 设置中指定了它。
XML 报告验证
如果您在构建运行程序的 "XML 报告处理" 部分设置了无效的设置,那么在升级过程中,您可能会发现构建配置报告 "必须指定报告路径" 的消息。 在这种情况下,请转到运行器设置并更正配置。 (相关的 问题)
Open API 变更
请查看 Open API 变更 devPackage
中的几个 jars 已经重新排序,部分移至 运行时
子目录下。 请更新您的插件项目以适应这些变更。
REST API 更改
有几个对象获得了额外的属性和子元素。 请检查您的解析代码是否仍然可以运行。
Perforce Clean Checkout
所有使用 Perforce checkout 的构建都将在服务器升级后进行一次干净的 checkout。 请注意,升级后的首几小时内,这可能会对服务器造成较大负载,而且在许多构建处于“传输源代码”阶段时,服务器可能会无响应。
从 5.1.2 版本到 5.1.3 版本的变更
Command line runner 中的可执行文件路径
这个 bug 已被完全修复。 该行为与 pre-5.1 版本的构建方式相同。
从 5.1.1 版本到 5.1.2 版本的更改
Jabber 通知发送错误再次在网页用户界面中为管理员显示(这些消息在 5.1.1 中被禁用)。 如果您不使用 Jabber 通知,请在 Jabber 设置服务器设置页面暂停 Jabber 通知程序。
从 5.1 变更至 5.1.1
Command line runner 中的可执行文件路径
这个 bug 已经部分修复。 该行为与 pre-5.1 构建中的行为相同,除了您已经指定了工作目录并同时在检出和工作目录中有脚本的情况。 脚本是从工作目录中使用的。
在 Solution 运行器和 MSBuild 运行器中的脚本文件路径
这个 bug已经被修复了。 该行为与 pre-5.1 版本的构建方式相同。
从 5.0.3 到 5.1 的变化
通知模板变更
自 5.1 版本开始,TeamCity 使用 新模板引擎(Freemarker)来生成通知消息。 新的默认模板已经提供,而且在升级之前对模板所做的自定义将不再有效。
如果您在此次升级之前自定义了通知模板,请查看新的通知模板,并在必要时对其进行修改。 旧的通知模板被复制到 <TeamCity 数据目录>/config/_trash/_notifications
目录中。 希望您会喜欢这些新的模板和新增的自定义功能。
外部数据库驱动程序位置
JDBC 驱动程序现在可以放在 <TeamCity 数据目录>/lib/jdbc
目录中,而不是 WEB-INF/lib
。 建议使用新的位置。 请在 设置外部数据库 中查看详细信息。
PostgresSQL jdbc 驱动程序已不再与 TeamCity 安装包捆绑在一起,您需要在升级后自行 安装。
数据库连接属性
数据库连接属性模板文件已更改其名称,并被放置在 数据库.<数据库类型>.properties.dist
文件中,位于 <TeamCity 数据目录>/config
目录下。 他们遵循 .dist 文件约定。
建议您通过将 database.properties
文件与您的数据库的新模板文件进行比较,删除任何您未特别定制的选项。
默认内存选项的更改
我们更改了 PermGen 内存空间的默认内存选项,如果您将 -Xmx
JVM 选项改为约 1.3G,并且正在运行 32 位 JVM,服务器可能无法启动,错误信息如:“虚拟机初始化过程中发生错误 无法为对象堆保留足够空间 无法创建 Java 虚拟机”。
在这种情况下,请考虑以下选项:
Vault 插件已被捆绑
在此版本中,我们捆绑了SourceGear Vault VCS 插件(实验性状态)。 请确保如果您之前安装过此插件,从 .BuildServer/plugins
卸载该插件(只需删除插件的 ZIP 文件)。
Command line runner 中的可执行文件路径引入了一个bug,如果在 runner 中指定了工作目录,就需要更改可执行文件的路径。这个 bug 在 5.1.1 中部分修复,在 5.1.3 中完全修复。
在 Solution runner 和 MSBuild runner 中脚本文件的路径
由于引入了一种 bug,如果在 runner 中指定了工作目录,则需要更改脚本的路径。 此错误已在 5.1.1 中修复。
Open API 更改
请参阅 Open API 更改
从 5.0.2 到 5.0.3 的变更
没有潜在的破坏性更改。
从 5.0.1 版本到 5.0.2 版本的更改
外部更改查看器
现在, relativePath
变量已被文件的相对路径替代 没有检出规则。 前一个值可以通过 relativeAgentPath
来访问。 更多信息请查阅 TW-10801。
从 5.0 变更为 5.0.1
没有潜在的破坏性更改。
从 4.5.6 版本至 5.0 版本的变更
5.0 版本之前的 Enterprise Server 许可证和 Agent 许可证需要升级
随着 5.0 版本的推出,我们宣布升级政策的更改:升级到 5.0 不是免费的。 自5.0版本起购买的每个许可证(服务器和代理)都将适用于自购买许可证之日起一年内发布的任何 TeamCity 版本。 请在官方网站的 许可证和升级 部分查看详细信息。
捆绑插件
如果您使用的是现在在 5.0 中捆绑的独立插件,请不要忘记从 .BuildServer/plugins
目录中删除插件。新捆绑的插件包括:
Mercurial
Git(JetBrains)
REST API (先前已经在 YouTrack 中提供)
其他插件
如果您使用的是任何非随 TeamCity 一起打包的插件,请确保您正在使用的是最新版本,并且它与 5.0 版本是兼容的。 例如,您将需要Groovy plug的最新版本以及其他提供属性的扩展。Pre-5.0的通知插件可能缺乏对每个测试和分配责任通知的支持。
已废弃的属性
系统属性 "build.number.format" 和环境变量 "BUILD_NUMBER_FORMAT" 已被移除。 如果您需要在构建中使用构建编号格式(请告诉我们原因),您可以将构建编号格式定义为 %system.<property name>%
,并在构建配置中定义 <property name> 系统属性(然后它将被传递给构建)。
Oracle 数据库
如果您使用 TeamCity 与 Oracle 数据库,您应该为 TeamCity Oracle 用户添加额外的权限。 为了实施此操作,您需要以 SYS 用户的身份登录 Oracle 并执行。
PostgreSQL 数据库
TeamCity 5.0 支持 PostrgeSQL 8.3+ 版本。
因此,如果您的 PostgreSQL 服务器的版本低于 8.3,那么需要进行升级。
Open API 变更 请参见 Open API 变更
从 4.5.2 版本到 4.5.6 版本的变更
没有潜在的破坏性更改。
从 4.5.1 版本到 4.5.2 版本的更改
这是 4.5.2 版本中 Rake 运行器的一个关键问题。 请参阅 TW-8485 以获取详细信息和修复补丁。
从 4.5.0 版本到 4.5.1 版本的变更
没有潜在的破坏性更改。
从 4.0.2 版到 4.5 版的更改
默认用户角色
被设定为新用户默认的角色将被转移到 "All Users" 组,并且有效地授予已在 TeamCity 中注册的所有用户。
服务器重启时运行构建
请确保在服务器升级过程中没有正在运行的构建。如果在服务器重启期间有构建正在运行,并且这些构建有测试,那么这些构建将被取消并重新添加到构建队列(TW-7476)。
LDAP 设置重命名
如果您之前配置了 LDAP 集成,新服务器首次启动时,将自动转换几个设置。 被重命名的设置是:
formatDN
— 被重命名为teamcity.auth.formatDN
loginFilter
— 被重命名为teamcity.auth.loginFilter
从 4.0.1 版本变更为 4.0.2 版本
首次清理时间增加
更新后的第一次服务器清理可能需要更多的时间。 进一步的清理应恢复到正常时间。 在此首次清理过程中,已删除的构建配置关联的数据将被清理。 这是因为 TeamCity 4.0 和 4.0.1 版本中的一个错误,之前没有被清理。
从 4.0 变更至 4.0.1
"importData" 服务消息参数 id 参数已更名为 type ,而 file 已更名为 path。 这种更改是向后兼容的。 请查看 使用服务消息 章节,以了解新语法的示例。
从 3.1.2 版本到 4.0 版本的更改
初始启动时间
在首次启动 TeamCity 的新版本时,数据库结构将会升级。 这个过程可能会增加服务器启动的时间。 首次启动可能比常规启动多花费20分钟。 这个时间取决于您的构建历史的大小、构建中的平均测试数量以及服务器硬件。
升级后将强制用户重新登录
一旦升级,所有用户都将自动注销,并需要在浏览器中重新登录 TeamCity web UI。 在升级后首次登录后,Remember me 功能将像往常一样工作。
以前的 IntelliJ IDEA 版本支持
此版本的 IntelliJ IDEA 插件与 IntelliJ IDEA 6.x 版本不再兼容。 支持的 IDEA 版本为 7.0.3 和 8.0。
在构建中使用 VCS 版本
build.vcs.number.N
系统属性被替换为 build.vcs.number.<转义的VCS根名称>
属性(或者仅为 build.vcs.number
如果只有一个根)。 如果您在构建脚本中使用了属性,您应手动更新用法,或开启兼容性模式。 构建配置设置中的属性引用会自动更新。 相应的环境变量也已受到影响。 阅读更多。
测试套件
鉴于 TeamCity 开始处理测试套件,因此,定义了套件名称的测试将被视为新测试(因此,这些测试的测试历史可以从头开始。)
工件依赖模式
工件依赖模式现在支持 Ant 类的通配符。
如果您依赖 ""
模式来匹配目录名称,请调整您的模式以使用 "/"
而不是单个 "*"
。
如果您依赖 ""
模式只下载没有扩展名的文件,请更新您的模式以使用 "."
来实现这一点。
通过 Ivy 下载工件
如果您使用 Ivy 任务从构建脚本(如 Ant build.xml)中下载了工件,您应修改您的 ivyconf.xml 文件,并从其中删除除了“integration”之外的所有状态。 您可以参考以下页面的 ivyconf.xml 文件:https://www.jetbrains.com/zh-cn/help/teamcity/4.0/configuring-dependencies.html
浏览器缓存(IE)
为了强制 Internet Explorer 使用更新的图标(即,用于 Run 按钮的),您可能需要强制重新加载页面(Ctrl+Shift+R)或删除“临时互联网文件”。
从 3.1.1 版本到 3.1.2 版本的变更
没有潜在的破坏性更改。
从 3.1 变为 3.1.1 的更改
没有潜在的破坏性更改。
从 3.0.1 到 3.1 的变更
访客用户和代理详情
从版本3.1开始,访客用户无法访问代理详情页面。 这样做是为了减少可能暴露关于代理环境的潜在敏感信息。 在企业版中,可以在 用户和组页面编辑访客用户的角色,以提供所需的权限级别。
StarTeam 支持
正在使用的工作文件夹
自版本3.1开始,当从 StarTeam 仓库中检出文件时,TeamCity 根据工作文件夹的名称在基础上构建目录结构,而不仅仅是像早期版本那样的文件夹名称。 因此,如果您对 TeamCity 在 3.0 版本中处理 StarTeam 文件夹的方式感到满意,请确保工作文件夹的名称与相应的文件夹名称相等(默认情况下就是这样)。
也请注意,尽管 StarTeam 允许使用绝对路径作为工作文件夹,但 TeamCity 仅支持相对路径,且无法检测到绝对路径的存在。 所以请小心并检查您的配置。
StarTeam URL 解析器已修复
在版本3.0中,用户必须遵循错误的 URL 方案。 当用户尝试引用非默认视图时,就像 starteam://server:49201/project/view/rootFolder/subfolder/... 一样无效。 在3.1版本中,使用了原生的 StarTeam URL 解析器。 这意味着您现在无需在 URL 中指定根文件夹,以前的示例应如 starteam://server:49201/project/view/subfolder/... 所示。
从 3.0 到 3.0.1 的更改
Linux 代理升级
由于 Linux 下的 Agent 升级存在问题,Agent 升级后可能会遗留在运行状态的辅助 Launcher 过程。 3.0.1 版本及以上版本修复了这个问题。 为了清除过时的运行进程,在自动代理升级后,请停止代理(通过
agent.sh kill
命令),并结束任何正在运行的java jetbrains.buildServer.agent.Launcher
进程,然后重新启动代理。
从 2.x 变为 3.0 的更改
不兼容的更改
请注意,TeamCity 3.0 引入了与 TeamCity 2.x 不兼容的几项更改:
build.working.dir 系统属性已经被重命名为 teamcity.build.checkoutDir。 如果您在构建脚本中使用了该属性,请更新这些脚本。
runAll.bat
脚本现在接受一个必需的参数:start 以启动服务器和代理,stop 以停止服务器和代理。在 Windows 下,
agent.bat
脚本现在接受一个必需的参数:start 来启动代理,stop 来停止代理。 请注意,在这种情况下,只有当代理变为空闲状态(没有构建正在运行)后,才会停止该代理。 要强制立即停止代理,使用agent.bat stop force
命令,该命令在 Windows 和 Linux(agent.sh stop force
)下都可用。 在 Linux 下,您也可以使用agent.sh stop kill
命令来停止无响应于agent.sh stop force
的代理。
构建工作目录
自从 TeamCity 3.0 引入了可以按每个构建配置来配置 VCS 根的功能,而不是按每个项目,代理上检出的构建配置源的默认目录现在有了生成的名称。 如果您需要知道构建配置使用的目录,您可以参考 <agent home>/work/directory.map
文件,该文件列出了构建配置以及它们所使用的目录。 参见 构建检出目录
从 TeamCity 1.x / 2.x / 3.x Professional 升级到 3.x Enterprise 时的用户角色
当首次从 TeamCity 1.x / 2.x / 3.x Professional 升级到 3.x Enterprise 时,TeamCity 的帐户将默认被分配以下 角色:
管理员成为系统管理员
用户 成为所有项目的项目开发者
Guest 帐户能够查看所有的项目
Default user 的角色被设定为所有项目的项目开发者。
从 1.x 到 2.0 的变更
数据库设置移动
将您的数据库设置从 <TeamCity 安装文件夹>/ROOT/WEB-INF/buildServerSpring.xml
文件移动到位于 TeamCity 配置数据目录( <TeamCity 数据目录>/config
)中的 database.properties
文件。
.NET 检查和重复 继承
teamcity.TruncateIgnoreReasonConverter.copyReasons
:
在上一个版本中引入的 bug with temp tool folders 已经得到修复。