访问kotlin DSL中的teamcity参数



我正在为TeamCity项目创建一个kotlin DSL,并希望在实际的kotlin脚本中获得当前分支名称。

如果我运行脚本步骤,当前分支将正确呈现

script {
name="print branch"
scriptContent = """echo "Branch is  %teamcity.build.branch%""""
}

从实际的settings.kts来看,我似乎无法访问它

val currentBranch = DslContext.getParameter("teamcity.build.branch") //yields '<placeholder-1>'

如何在Kotlin代码中获取此参数?

所以事实证明这是不可能的——DSL只是用来表示配置,在构建过程中不会调用。在我的例子中,我想根据我是在main上还是在功能分支上启用或禁用一些步骤,所以我创建了2个BuildDefinition对象,这些对象将主构建子类化,并传入分支是否为main的bool。这样,我就可以启用或禁用构建步骤,并为每个构建更新VCS触发器

似乎对我有效的是

object : BuildType({
val changeList = if ("%teamcity.build.branch%" == "master") "" else "-%teamcity.build.branch%"
...
steps {
maven {
jvmArgs = "-Xmx1024m -Xss1g -Drevision=1.1.%build.counter% -Dchangelist=$changeList"
}
}
})

YMMV

假设每个分支都有一个VCS根,DslContent.settingsRoot就是Kotlin执行的VCS根。

来自我们的Kotlin,它用于针对几个不同的分支构建:

val branchName = "${DslContext.settingsRoot}" // DslContext.settingsRoot.name - .name seems to be blank

最新更新