【发布时间】:2017-04-04 09:58:31
【问题描述】:
我的定义中有一个 PowerShell 任务,它自己调用另一个脚本文件,它负责在我的构建代理上运行几件事(启动几个不同的进程) - 模拟器、node.js 应用程序等。
在完成此步骤并继续运行之前,一切都很好。上面提到的所有东西都会在大多数底层进程被杀死的情况下关闭,因此,任何进一步的执行(例如运行测试)都注定会失败。
我的假设是这些过程在某种程度上依赖于 VSTS 为处理该步骤而生成的最外层(临时)脚本。
我尝试使用脚本参数列表中指定的 -NoExit 开关,但无济于事。我还在某处读到了一个建议,默认情况下使用 powershell.exe 的注册表项进行设置 - 仍然没有。
同样的工作流程在 Jenkins 中是可以的。我该如何解决这个问题?
这些是我的任务:
最后一个 PowerShell 任务调用一个指定的 PowerShell 文件,该文件自己调用其他几个。他们确保开始执行测试所需的一些本地依赖项和流程,例如一个正在运行的 Node.js 应用程序(例如在单独的控制台中启动并且运行良好)。
当任务完成并且成功后,最后一个测试将失败,因为 Node.js 应用程序已关闭,以及在上一步中启动的任何其他应用程序都已关闭。它只是停止一切。这就是为什么我目前在同一个任务中运行测试,直到我发现如何克服这种行为。
【问题讨论】:
-
所以最后,我使用了一个调用 bat 文件的任务,其内容如下: powershell -command %1 然后在构建任务本身,我在单个参数中提供 PowerShell 脚本文件的路径和所有参数(设置为来自另一个任务的运行时变量),例如"& '$(MyScriptPath)' $(MyArgs)"
标签: powershell azure-pipelines azure-pipelines-build-task