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"
    }
  }
})

宾果!