如何在并行 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

您有两个选项可以用于此:

  1. 如果您在此测试作业之前将服务器构建到容器中,您可以 运行 容器作为 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
  1. 您可以使用 nohup linux 命令在后台 运行 您的服务。一旦启动,这将 运行 命令在后台运行,并且当 CI 作业结束时(作为关闭作业的一部分)它会死掉。看起来像这样:
test_job:
  stage: test
  script:
    - nohup npm run dev &
    - npm run test