首页 > 解决方案 > 在合并请求期间和合并后运行 GitlabCI

问题描述

如何让 GitLab CI 在合并请求和合并后运行?

两个分支,dev 和 master。两个工作,测试和部署。

在任何分支到 dev 分支的合并请求中,CI 将触发。但我现在只想运行测试作业。当合并请求被合并时,它将继续执行部署作业。这样做的原因是,尽管所有测试都会通过,但我们仍然无法继续部署,因为代码审查中的验证者可能会提出一些开发人员需要解决的评论。只有在解决了这些评论之后,如果单元测试成功,那么它就可以被合并。合并请求合并后,才允许部署。dev 分支将部署到 dev/test,master 将部署到 staging。Prod 将手动部署。

标签: gitlab-ci

解决方案


使用onlyandexcept语法定义不同的作业。如果您要合并到您的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


推荐阅读