【发布时间】:2017-10-25 00:59:18
【问题描述】:
我目前在 GitLab 和 Heroku 中有我的项目。我想做的是,一旦我要求与我的功能分支合并请求(我们称之为crud-on-spaghetti),我想自动在这个分支上运行测试(基本上是npm test,使用Mocha/Chai),然后他们成功了,将这个crud-on-spaghetti 与master 合并,提交并将其推送到origin/master(在GitLab 上是远程的)和git push heroku master 之后(基本上,将它推送到我的应用程序所在的Heroku 的master 分支存储)。我已经阅读了几篇关于 GitLab CI 的文章,我认为这更适合我(而不是 Heroku CI,因为我没有 DEV 和 PROD 实例)。
所以,到目前为止,我手动执行此操作。这是我现在的.gitlab-ci.yml 文件(尚未提交/推送):
stages:
- test
- deploy
test_for_illegal_bugs:
stage: test
script:
- npm test
deploy_to_dev:
stage: deploy
only:
- origin master
script:
- git commit
- git push origin master
- git pull heroku master --rebase
- git push heroku master
因此,我的问题是:我究竟需要在.gitlab-ci.yml 中写些什么才能自动化所有这些“操作”(上图)?
PS。还有另一个(理论上的)后续问题:GitLab-CI Runner 是如何触发的?例如,如果我希望它在与 master 的合并请求时触发,我是否在 .gitlab-ci.yml 中使用 only: ... 来执行此操作?
【问题讨论】:
-
从
only:部分中删除origin。 -
测试阶段由每个分支上的每次提交触发。要将其限制为合并请求,请将
only: merge_requests添加到阶段。
标签: node.js heroku gitlab gitlab-ci