什么是TeamCity Kotlin DSL中元跑者的替代品?

时间:2018-01-19 17:38:12

标签: kotlin teamcity dsl

显然,TeamCity Kotlin DSL中不支持metarunners生成。这些文件保留为纯XML格式。

如何使用可用的DSL功能替换它?说我想这样做:

steps {
  step {
    type = "mymetarunner" // compound meta-runner step
  }
}

如何使用Kotlin定义mymetarunner

1 个答案:

答案 0 :(得分:3)

目前(TeamCity 2017.2),没有办法使用Kotlin DSL定义元游戏。

<强>更新 如果不需要真正的metarunner,解决方案是Kotlin DSL

中的一个小练习

为“metarunner”

定义所需设置的容器类
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"
    }
  }
})

宾果!