首页 > 解决方案 > 如何让 gitlab ci runner 从 docker-compose up some_service 获取其退出代码

问题描述

我正在 GitLab 上使用 cypress 运行 e2e 测试。这是我运行赛普拉斯测试的命令:

docker-compose -f devops/e2e/docker-compose.yml up cypress

赛普拉斯服务只是基于cypress/included:8.4.0图像。

所以在我的 Gitlab 工作中,当测试成功时,我会得到这样的结果:

cypress      |        Spec                                              Tests  Passing  Failing  Pending  Skipped  
cypress      |   ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
cypress      |   │ ✔  login_spec.js                            00:04        1        1        -        -        - │
cypress      |   ├────────────────────────────────────────────────────────────────────────────────────────────────┤
cypress      |   │ ✔  multi_resolution_image_spec.js           00:41        1        1        -        -        - │
cypress      |   ├────────────────────────────────────────────────────────────────────────────────────────────────┤
cypress      |   │ ✔  plain_image_spec.js                      00:40        1        1        -        -        - │
cypress      |   ├────────────────────────────────────────────────────────────────────────────────────────────────┤
cypress      |   │ ✔  signup_spec.js                           00:10        1        1        -        -        - │
cypress      |   └────────────────────────────────────────────────────────────────────────────────────────────────┘
cypress      |     ✔  All specs passed!                        01:36        4        4    

cypress exited with code 0
.
.
.
Job succeeded

但是当测试失败时,我得到:

cypress      |        Spec                                              Tests  Passing  Failing  Pending  Skipped  
cypress      |   ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
cypress      |   │ ✖  annotate_spec.js                         00:02        1        -        1        -        - │
cypress      |   ├────────────────────────────────────────────────────────────────────────────────────────────────┤
cypress      |   │ ✔  login_spec.js                            00:05        1        1        -        -        - │
cypress      |   ├────────────────────────────────────────────────────────────────────────────────────────────────┤
cypress      |   │ ✔  signup_spec.js                           00:13        1        1        -        -        - │
cypress      |   └────────────────────────────────────────────────────────────────────────────────────────────────┘
cypress      |     ✖  1 of 3 failed (33%)                      00:21        3        2        1    

cypress exited with code 1
.
.
.
Job succeeded

问题是在运行测试失败的情况下,我仍然Job succeeded从 Gitlab 获得。如何让 Gitlab CI 运行器从 cypress 服务退出代码中获取其退出代码?

标签: javascriptgitlabgitlab-cicypresse2e-testing

解决方案


您可以尝试使用选项--exit-code-from

docker-compose -f devops/e2e/docker-compose.yml up --exit-code-from cypress

推荐阅读