Continuous integration 如何优雅地终止从';npm启动';在GitLab CI中?

Continuous integration 如何优雅地终止从';npm启动';在GitLab CI中?,continuous-integration,gitlab,gitlab-ci,Continuous Integration,Gitlab,Gitlab Ci,使用.gitlab ci.yml文件中的npm start命令启动应用程序。应用程序的配置方式使其能够侦听定义端口上的连接。因此,上面的命令永远不会停止,从而阻止执行CI文件中的其他步骤 我试图用(超时30s npm start;退出0)命令停止服务器,但它仍返回代码1,管道失败: $ (timeout 30s npm start; exit 0) > app-srv@1.0.0 start /builds/app/frontend_server > nodemon server

使用
.gitlab ci.yml
文件中的
npm start
命令启动应用程序。应用程序的配置方式使其能够侦听定义端口上的连接。因此,上面的命令永远不会停止,从而阻止执行CI文件中的其他步骤

我试图用
(超时30s npm start;退出0)
命令停止服务器,但它仍返回代码1,管道失败:

$ (timeout 30s npm start; exit 0)
 > app-srv@1.0.0 start /builds/app/frontend_server
 > nodemon server.js
 [nodemon] 2.0.4
 [nodemon] to restart at any time, enter `rs`
 [nodemon] watching path(s): *.*
 [nodemon] watching extensions: js,mjs,json
 [nodemon] starting `node server.js`
 listening on *:4000
 ERROR: Job failed: exit code 1

是否有方法返回代码0并执行下一步?

这是一种解决方法,但在我的情况下,它的作用是:

-timeout 20s npm start>npm|u start.log | | FAILED=true#如果失败,则设置变量
-grep-e'listening on\*:4000'npm_start.log#如果输出中有'listening…',
#表示服务器启动成功;
#如果没有,管道将在此时发生故障
-如果[“$FAILED”==“true”];然后退出0;fi#变量已检查,状态0已确保

如果在
npm start
命令末尾添加一个
&
,是否有效?运行
npm start&
将以“分离”模式运行该命令,这意味着它将继续在后台运行,但不会阻塞终端。请参阅此处以获得更详细的解释:我认为这会起作用,但是无论如何,您必须终止分离的实例。