gpt4 book ai didi

node.js - 仅在对 master 发出合并请求时运行 gitlab-ci.yml

转载 作者:搜寻专家 更新时间:2023-10-31 22:47:06 24 4
gpt4 key购买 nike

我目前在 GitLabHeroku 中进行我的项目。我想做的是,一旦我请求与我的功能分支合并请求(我们称之为 crud-on-spaghetti),我想在这个分支上自动运行测试(npm测试 基本上,使用 Mocha/Chai),在他们成功之后,将这个 crud-on-spaghettimaster 合并,提交并推送到 origin/master(在 GitLab 上是远程的)和 git push heroku master 之后(基本上,将其推送到 Heroku 中的主分支,我的应用程序存储在那里)。我读过几篇关于 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 中写什么才能自动执行所有这些“操作”(上文)?

附言。还有另一个(理论上的)后续问题:GitLab-CI Runner 是如何触发的?例如,如果我希望它在与 master 的合并请求时触发,我是否只使用 .gitlab-ci.yml 中的 : ... 来做到这一点?

最佳答案

限制合并请求的阶段:

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

   only:
- merge_requests

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

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

这为所有不是 master 的目标分支添加了一个异常(exception)。

或者使用规则::

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

将阶段限制在分支机构:

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

   only:
- master

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

关于node.js - 仅在对 master 发出合并请求时运行 gitlab-ci.yml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44162500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com