如何使用TeamCity DSL的versionedSettings功能?配置报错如何解决?
报错根因
这个报错是TeamCity版本化设置的层级校验规则触发的,既不是配置语法错误也不是产品Bug。TeamCity默认限制版本化设置只能在根项目层级配置,如果检测到你在相对层级的子项目中配置该特性,就会抛出这个错误。
解决方案
场景1:当前配置的就是根项目
你需要在project配置块中显式声明根项目ID,让DSL识别到你是在根层级操作:
version = "2021.2" project { // 新增这一行,ID和你TeamCity实例的根项目ID保持一致即可 id = "RootProjectId" vcsRoot(TheVCS) features { versionedSettings { mode = VersionedSettings.Mode.ENABLED allowEditingOfProjectSettings = false settingsFormat = VersionedSettings.Format.KOTLIN buildSettingsMode = VersionedSettings.BuildSettingsMode.PREFER_SETTINGS_FROM_VCS } } } // 原有TheVCS配置保持不变
场景2:需要在子项目层级配置版本化设置
2021.2及以上版本的TeamCity支持子项目独立配置版本化设置,你需要先在服务端开启对应特性,然后在versionedSettings块中显式绑定根项目ID:
versionedSettings { // 新增这一行,指定对应根项目ID root = "RootProjectId" mode = VersionedSettings.Mode.ENABLED // 其余原有配置保持不变 }
额外验证步骤
如果修改后还是报错,可以先通过TeamCity UI手动给对应项目开启一次版本化设置,再拉取自动生成的DSL代码对比,和自己写的配置对齐即可。
内容的提问来源于stack exchange,提问作者Tobias Bergman
相关产品推荐
相关产品推荐

