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&
将以“分离”模式运行该命令,这意味着它将继续在后台运行,但不会阻塞终端。请参阅此处以获得更详细的解释:我认为这会起作用,但是无论如何,您必须终止分离的实例。