TeamCity Kotlin DSL:如何从位于DSL文件夹中的文件运行PowerShell脚本。

问题描述 投票:0回答:1

我在一个仓库中定义了一个构建配置,它可以构建其他仓库中的项目,其中一些步骤是Powershell,目前,我在Kotlin文件中写了所有的逻辑,但它有点难以阅读和维护。我想如果把这些脚本分开,会更容易工作。我知道有一个选项可以在文件中运行脚本,如果你提供路径,比如。

powerShell { 
    scriptMode = file { 
        path = "path\to\file.ps1"
    }
}

问题是,当步骤运行时,它说它不能找到... .teamcity 文件夹,它们就在那里。我不能把它们添加到其他仓库,因为有些脚本在几个项目中都需要。

是否有可能从这一步访问该文件夹,或者我应该继续使用混乱的内联脚本?

powershell kotlin teamcity dsl
1个回答
-1
投票

所以,根据文档,有一种方法可以读取文件。在.teamcity文件夹内. 然而,这只是在DSL上下文中。定义一个脚本路径是行不通的,因为在那部分代码运行的时候,那部分代码并不存在(我试了一下 ls workdir)。) 所以,你要做的是显式地签出该文件夹。要做到这一点,你必须定义 结账规则 喜欢。

vcs {
    root(VCS)
    root(DslContext.settingsRoot, "+:.teamcity/scripts => tcscripts", "+:Configurations => configurations")
    cleanCheckout = true
}

这样就可以检查出scripts文件夹中的 .teamcity 的文件夹中,名为 tscripts 在workdir的根目录下。当然,你可以改变目录,添加更多的规则。之后,你就可以按照如下步骤调用它们。

powerShell {
    formatStderrAsError = true
    scriptMode = file {
        path = "tcscripts/your_script.ps1"
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.