如何在并行 Gitlab CI/CD 管道中执行 运行 命令?
How to run commands in parallel Gitlab CI/CD pipeline?
我的存储库中有一个测试命令,它应该在我的服务器启动时运行,因为一旦服务器 运行 启动,测试就会与服务器交互。
在我的本地,我在第一个终端 npm 运行 dev 上使用两个命令 - 这会获取服务器 运行ning,在第二个终端上我 运行 命令 npm 运行 测试 运行s 测试只有在第一个命令是 运行ning 时才能通过。我如何在我的 gitlab CICD 测试阶段工作中实现这一目标?
目前我正在做这个
test_job:
stage: test
script:
- npm run dev
- npm run test
所以管道执行 npm 运行 dev,它不会自行终止,我的管道卡住了,似乎找不到解决方案。帮助和建议表示赞赏。 Stack 是 typescript express graphql
您有两个选项可以用于此:
- 如果您在此测试作业之前将服务器构建到容器中,您可以 运行 容器作为
service
,这将允许您通过它的服务别名访问它。那看起来像这样:
test_job:
stage: test
services:
- name: my_test_container:latest
alias: test_container
script:
- npm run test # should hit http://test_container:<port> to access service
- 您可以使用
nohup
linux 命令在后台 运行 您的服务。一旦启动,这将 运行 命令在后台运行,并且当 CI 作业结束时(作为关闭作业的一部分)它会死掉。看起来像这样:
test_job:
stage: test
script:
- nohup npm run dev &
- npm run test
我的存储库中有一个测试命令,它应该在我的服务器启动时运行,因为一旦服务器 运行 启动,测试就会与服务器交互。 在我的本地,我在第一个终端 npm 运行 dev 上使用两个命令 - 这会获取服务器 运行ning,在第二个终端上我 运行 命令 npm 运行 测试 运行s 测试只有在第一个命令是 运行ning 时才能通过。我如何在我的 gitlab CICD 测试阶段工作中实现这一目标? 目前我正在做这个
test_job:
stage: test
script:
- npm run dev
- npm run test
所以管道执行 npm 运行 dev,它不会自行终止,我的管道卡住了,似乎找不到解决方案。帮助和建议表示赞赏。 Stack 是 typescript express graphql
您有两个选项可以用于此:
- 如果您在此测试作业之前将服务器构建到容器中,您可以 运行 容器作为
service
,这将允许您通过它的服务别名访问它。那看起来像这样:
test_job:
stage: test
services:
- name: my_test_container:latest
alias: test_container
script:
- npm run test # should hit http://test_container:<port> to access service
- 您可以使用
nohup
linux 命令在后台 运行 您的服务。一旦启动,这将 运行 命令在后台运行,并且当 CI 作业结束时(作为关闭作业的一部分)它会死掉。看起来像这样:
test_job:
stage: test
script:
- nohup npm run dev &
- npm run test