Kotlin中的TeamCity配置-子项目中的构建ID冲突

时间:2018-09-11 13:49:02

标签: kotlin teamcity

可以基于子项目ID生成构建ID 而不是根项目ID?

我收到验证错误:

BuildType 'RootProjectId_build': id 'RootProjectId_build' is already used
in BuildType(uuid='', id='RootProjectId_build', name='buildA')

对于以下具有2个子项目和内部版本的项目,它们具有相同的类名(但在不同的程序包中)

RootTestProject.kt

package _Self

import A.SubProjectA
import B.SubProjectB
import jetbrains.buildServer.configs.kotlin.v2018_1.Project

object RootTestProject : Project({
    subProject(SubProjectA)
    subProject(SubProjectB)
})

SubProjectA.kt:

package A

import jetbrains.buildServer.configs.kotlin.v2018_1.BuildType
import jetbrains.buildServer.configs.kotlin.v2018_1.Project

object build : BuildType({name = "buildA"})

object SubProjectA : Project({
    name = "SubProjectNameA"
    buildType(build)
})

SubProjectB.kt:

package B

import jetbrains.buildServer.configs.kotlin.v2018_1.BuildType
import jetbrains.buildServer.configs.kotlin.v2018_1.Project

object build : BuildType({name = "buildB"})

object SubProjectB : Project({
    name = "SubProjectNameB"
    buildType(build)
})

出于某种原因,我需要使用相同的类名进行构建,因此我不会简单地将“对象构建”更改为“对象构建A”和“对象构建B”

1 个答案:

答案 0 :(得分:0)

假设包名称与子项目等效 解决方法是:

object build : BuildType({name = "buildB"
    id(this.javaClass.`package`.name +"_"+id.toString().split("_")[1])
})

这种构建ID的方式是:RootProjectId_B_build