powershell - TeamCity Kotlin DSL:如何从位于 DSL 文件夹中的文件运行 PowerShell 脚本
问题描述
我在一个存储库中定义了一个构建配置,它在其他存储库中构建项目。其中一些步骤是 powershell,目前,我在 Kotlin 文件本身中编写了所有逻辑,但它有点难以阅读和维护。我认为,如果它们是分开的 .ps1 文件,则在此脚本中工作会更容易。我知道如果您提供如下路径,则可以选择在文件中运行脚本:
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
}
这将检查工作目录根目录中.teamcity
称为文件夹中的脚本文件夹。tscripts
您当然可以更改目录并添加更多规则。之后,您将能够通过以下步骤调用它们:
powerShell {
formatStderrAsError = true
scriptMode = file {
path = "tcscripts/your_script.ps1"
}
}
推荐阅读
- node.js - 关于在 node js 中使用 sinon 进行单元测试
- javascript - 如何在页面加载的每个会话中运行一次预加载器
- node.js - 找不到名称“需要” - Angular 8
- c++ - std::variant vs 指向 C++ 中异构容器基类的指针
- c# - C# 按 int 排序列表,但如果发现重复值则按另一个 int
- swift - 'PostModel.Type' 类型的值没有下标 swift
- c# - 将 Request.CreateResponse 转换为 .NetCore 3.1
- angular - 输入的值发生变化但未在 DOM 中呈现
- python - python pygame在射击外星人时更新分数
- typescript - 将 API 网关中的速度模板转换为使用 AWS CDK 在 typescript 中传递