gitlab-ci - 在合并请求期间和合并后运行 GitlabCI
问题描述
如何让 GitLab CI 在合并请求和合并后运行?
两个分支,dev 和 master。两个工作,测试和部署。
在任何分支到 dev 分支的合并请求中,CI 将触发。但我现在只想运行测试作业。当合并请求被合并时,它将继续执行部署作业。这样做的原因是,尽管所有测试都会通过,但我们仍然无法继续部署,因为代码审查中的验证者可能会提出一些开发人员需要解决的评论。只有在解决了这些评论之后,如果单元测试成功,那么它就可以被合并。合并请求合并后,才允许部署。dev 分支将部署到 dev/test,master 将部署到 staging。Prod 将手动部署。
解决方案
使用only
andexcept
语法定义不同的作业。如果您要合并到您的master
分支,您可以创建一个before-merge
使用以下语法调用的作业:
before-merge:
except:
- master
然后,您的部署作业仅针对向主分支的提交运行:
deploy:
only:
- master
这样,before-merge
作业应该在除master之外的所有分支上执行,并且deploy
只有在合并到master分支后才会执行作业。
参考:https ://docs.gitlab.com/ce/ci/yaml/README.html#only-and-except-simplified
推荐阅读
- gradle - Kotlin Gradle 插件:apiVersion 与 languageVersion
- javascript - React 删除空格
- android - 通话记录权限 Android 的替代方案
- html - 线性渐变在 IE 或 Edge 中不起作用
- java - javax 父子关系的持久化。最后一个孩子又是另一个孩子的父母
- c# - 参数异常参数值超出范围十进制
- postgresql - 与 PostgreSQL 数据库连接时出错:'System.Memory,Version=4.0.1.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51'
- excel - 如何在 64 位 Windows 2010 和 Office 2016 中打开 .xll 文件
- ruby-on-rails - 如何将独角兽与rails 4.2.11匹配
- ios - AppDynamics iOS 阻止我的请求和响应 nil