TeamCity Kotlin DSL 中元跑步者的替代品是什么?
What is a replacement for meta runners in TeamCity Kotlin DSL?
显然,在 TeamCity Kotlin DSL 中不支持元运行程序生成。文件保持原样 XML.
如何使用可用的 DSL 功能替换它?假设我想这样做:
steps {
step {
type = "mymetarunner" // compound meta-runner step
}
}
如何使用 Kotlin 定义 mymetarunner
?
目前 (TeamCity 2017.2),无法使用 Kotlin DSL 定义元运行程序。
更新
如果不需要真正的 metarunner,解决方案是 Kotlin DSL
中的一个小练习
为 "metarunner"
所需的设置定义一个容器 class
class MyConfigClass {
var name = "Default Name"
var goals = "build"
var tasks = "build test"
var someUnusedProperty = 0
}
为 steps
块定义一个 extension function
fun BuildSteps.myMetaRunner(config: MyConfigClass.() -> Unit) {
val actualConfig = MyConfigClass() // new config instance
actualConfig.config() // apply closure to fill the config
// use the config to create actual steps
maven {
name = actualConfig.name
goals = actualConfig.goals
}
ant {
name = actualConfig.tasks
}
}
随时随地使用扩展功能
object A_Build : BuildType({
uuid = ...
steps {
myMetaRunner {
name = "This name will be used by maven step"
goals = "build whatever_goal"
tasks = "more ant tasks"
}
}
})
宾果!
显然,在 TeamCity Kotlin DSL 中不支持元运行程序生成。文件保持原样 XML.
如何使用可用的 DSL 功能替换它?假设我想这样做:
steps {
step {
type = "mymetarunner" // compound meta-runner step
}
}
如何使用 Kotlin 定义 mymetarunner
?
目前 (TeamCity 2017.2),无法使用 Kotlin DSL 定义元运行程序。
更新 如果不需要真正的 metarunner,解决方案是 Kotlin DSL
中的一个小练习为 "metarunner"
所需的设置定义一个容器 classclass MyConfigClass {
var name = "Default Name"
var goals = "build"
var tasks = "build test"
var someUnusedProperty = 0
}
为 steps
块定义一个 extension function
fun BuildSteps.myMetaRunner(config: MyConfigClass.() -> Unit) {
val actualConfig = MyConfigClass() // new config instance
actualConfig.config() // apply closure to fill the config
// use the config to create actual steps
maven {
name = actualConfig.name
goals = actualConfig.goals
}
ant {
name = actualConfig.tasks
}
}
随时随地使用扩展功能
object A_Build : BuildType({
uuid = ...
steps {
myMetaRunner {
name = "This name will be used by maven step"
goals = "build whatever_goal"
tasks = "more ant tasks"
}
}
})
宾果!