javascript - 如何让 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 服务退出代码中获取其退出代码?
解决方案
您可以尝试使用选项--exit-code-from
:
docker-compose -f devops/e2e/docker-compose.yml up --exit-code-from cypress
推荐阅读
- jenkins - 具有强制阶段的 Jenkins 声明式管道
- c++ - 遍历预处理器定义并处理它们
- flutter - 如何解决此错误“方法'/'在null上被调用”
- javascript - 如何在打字稿中显示具有多维数组的json
- git - 如何修复会破坏现有标签的问题
- c# - EF Core 一对多映射到没有键的表
- rust - 使用 rust 将文件名收集到向量中时,借用值的寿命不够长
- sql - 使用相同的主键将值从一行添加到另一行 - Oracle SQL
- wpf - 当 TabControl.TabItem 具有固定值时,如何删除 Header 和 ContentPresenter 之间的线?
- c# - .Net Core 自定义属性中的依赖注入