【问题标题】:Run gitlab-ci.yml only when merge request to master made仅在向 master 发出合并请求时运行 gitlab-ci.yml
【发布时间】:2017-10-25 00:59:18
【问题描述】:

我目前在 GitLabHeroku 中有我的项目。我想做的是,一旦我要求与我的功能分支合并请求(我们称之为crud-on-spaghetti),我想自动在这个分支上运行测试(基本上是npm test,使用Mocha/Chai),然后他们成功了,将这个crud-on-spaghettimaster 合并,提交并将其推送到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


【解决方案1】:

限制合并请求的阶段:

要让您的 test 阶段仅在打开合并请求 (MR) 时执行,请使用

   only:
     - merge_requests

根据Gitlab docs,您可以进一步将其限制为仅对具有特定目标分支的 MR 执行,例如仅限master的MR

   only:
     - merge_requests
   except:
     variables:
       - $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != "master"

这会为所有不是master 的目标分支添加一个例外。

或者使用rules:

  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'

将阶段限制为分支:

正如@marcolz 已经提到的,这是通过

   only:
     - master

只执行推送到主分支的阶段。

【讨论】:

    【解决方案2】:

    试试

    only:
      - master
    

    origin 只是遥控器的名称。 master 是分支的名称。

    当提交被推送到存储库时,GitLab-CI 会触发运行器,所以不会在合并请求时触发。

    您可以使用trigger 触发管道,然后从integrations 中的合并请求事件调用该触发器。

    【讨论】:

    • 这是我在推送更改后收到的内容prntscr.com/fblm8h
    • @alwaysone 你可以在 GitLab 上查看该阶段的输出。您的跑步者是否拥有所需的所有工具,例如 node / npm ?
    • 是的,我忘了image: node:latest。但是,我无法进入 Heroku,因为我需要定义 Heroku 的 API 密钥。我怎么做?通过dpl工具?
    • 对我最新评论的一点更新:通过 VSC (Gitlab) 将 Heroku API 密钥定义为 config var
    猜你喜欢
    • 2020-02-07
    • 2021-11-11
    • 2021-12-04
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2020-06-22
    相关资源
    最近更新 更多