我在一个仓库中定义了一个构建配置,它可以构建其他仓库中的项目,其中一些步骤是Powershell,目前,我在Kotlin文件中写了所有的逻辑,但它有点难以阅读和维护。我想如果把这些脚本分开,会更容易工作。我知道有一个选项可以在文件中运行脚本,如果你提供路径,比如。
powerShell {
scriptMode = file {
path = "path\to\file.ps1"
}
}
问题是,当步骤运行时,它说它不能找到... .teamcity
文件夹,它们就在那里。我不能把它们添加到其他仓库,因为有些脚本在几个项目中都需要。
是否有可能从这一步访问该文件夹,或者我应该继续使用混乱的内联脚本?
所以,根据文档,有一种方法可以读取文件。在.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"
}
}