我们使用 TeamCity 作为我们的 CI 服务器,并且最近开始使用它的基于 Kotlin 的 DSL在代码中定义构建配置并将其提交给 git。
昨天,我们用 Kotlin 创建了一个新项目。当我们推送 repo 时,它似乎没有任何错误,当天晚些时候我们成功构建了项目。
然而,今天早上,所有项目(不仅仅是新项目)中的所有构建都失败了,并出现如下错误消息:Failed to apply changes from VCS to project settings (revision c1a8904f01408c77d86794e9d276321ba11ae4d8): Configs generator runs longer than 120 seconds. Please fix the errors in VCS and commit again.
该错误是在构建开始时生成的,即使在生成之后,其余构建似乎仍成功完成。
Google 上没有出现错误信息,我在本地也找不到 Kotlin 有什么问题。是不是我的项目配置出了问题?为什么昨天还能用?
答案1
答案与我们的虚拟化解决方案 - AWS EC2 - 以及我们的 TeamCity 服务器的实例大小有关t2.medium
。T2 实例是“可突发的”,而其他实例类型(例如 M4 实例)是“固定的”。
突发实例具有较慢的基准最低性能级别,并且每小时都会获得“积分”,使其能够使用比基准更多的 CPU 资源运行。当实例是新的,或者它们不经常使用 CPU 时,它们通常会有足够的 CPU 积分来在更高的性能级别上快速运行,但是当这些积分耗尽时,实例将在基准性能级别上运行得非常慢。
这就是我们遇到的情况。显然,基线性能水平太慢了,以至于无法从 Kotlin 生成 TeamCity 的配置2分钟满足我们非常适中的需求(3 个项目中的 7 种构建配置),处于基线性能水平,因此所有构建都失败了。
一旦我们将 TeamCity 服务器更改为使用性能更高的实例大小,TeamCity 就可以再次从 Kotlin 快速生成其配置,我们的问题就解决了。
答案2
或者,除了使用功能更强大的机器之外,您还可以通过将内部属性设置teamcity.versionedSettings.configsGeneratorTimeoutSeconds
为任何更高的秒值来增加 120 秒的超时时间https://your.teamcity.instance/admin/admin.html?item=diagnostics&tab=properties
,方法是转到 ,单击Edit internal properties
然后设置该值,例如,设置为
teamcity.versionedSettings.configsGeneratorTimeoutSeconds=600
。