【发布时间】:2021-09-13 12:35:12
【问题描述】:
我有一个 Node.js Web 服务器,作为 CD 流程的一部分,我想使用 Azure Release Pipeline 将其部署到暂存服务器。问题是,如果我只运行一个 Powershell 脚本:
# Run-Server.ps1
node my-server.js
由于节点进程阻止了 Powershell 会话,因此管道将保持不变。 我想要的是能够启动服务,然后在下一次部署中杀死节点进程并使用新代码再次运行它。
所以我想我会使用Start-Process。如果我在本地运行它:
> Start-Process node -ArgumentList ./server.js
我现在可以退出 Powershell 会话,服务器将继续运行。所以我想我可以在我的发布管道中以同样的方式实现它。
但事实证明,一旦 Release Pipeline 结束运行,服务器就不再可用——节点进程消失了。
你能帮我弄清楚这是为什么吗?还有另一种方法可以实现这一目标吗?我想这是一个非常常见的用例,因此必须有关于如何完成此操作的最佳实践。
【问题讨论】:
-
为什么要将此应用程序作为管道的一部分运行?
-
@KrzysztofMadej - 我认为将应用程序部署到暂存环境是一个非常常见的用例,这样您就可以在将其部署到生产环境之前对其进行测试。有关 Release Pipelines 的文档充满了这一点。
-
是的,但管道基础设施不是您的暂存环境,据我了解,您尝试在构建代理上运行它。
-
我尝试在部署组中配置的服务器上运行它
-
好的。知道了。很抱歉造成误解。
标签: azure-devops azure-pipelines