git - 当 gitlab-CI 管道失败时阻止提交

标签 git testing gitlab push gitlab-ci

如果管道失败,是否有办法阻止推送到 gitlab?

这是一个包含多个作业的 gitlab-ci.yml 示例。每次推送都会触发此管道。

如果其中一项工作失败,我不希望我的代码被推送到我的存储库中。 (我知道 pull 请求存在此功能)。

image: node:9.4.0

cache:
  paths:
  - node_modules/

before_script:
  - npm install

stages:
    - lint
    - test

lint:
  stage: lint
  script:
   - npm run lint

test:
  stage: test
  script:
   - npm run test

最佳答案

对不起,西蒙 - 这不是应该的工作方式。您需要存储库中的内容,以便管道可以运行。

您应该使用分支流程,您只允许将成功的构建/merge 请求 merge 到 develop/master,这样您就不必关心是否在 repo 中添加了失败的代码。您的主要分支始终保持清洁。您可以通过仅允许对 develop/master( protected 分支)进行 merge 而不允许直接推送来强制执行此行为。

对于更简单的事情,您可以使用预提交 Hook ,仅在 npm run lint 成功时才允许推送。但是,运行整个管道对于预提交 Hook 来说太过分了(它可能有效,但这不是最佳实践)。

关于git - 当 gitlab-CI 管道失败时阻止提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413275/

相关文章:

git - 第一次推送时出现新的 git 存储库错误

git - 为什么要保持 git 历史清洁?

git - 从 Jenkinsfile 获取源存储库的详细信息

git - 如何撤消主目录上的 git init?

python - selenium python 检查隐藏错误

android - 如何在命令行中使用 Android Test Orchestrator?

ruby - 如何在 Minitest 中使用 block 语法?

ssh - 您如何找到您的 GitLab 主机名(以测试您的 SSH key )?

macos - 我们可以将 Github mac 应用程序与 GitLab 一起使用吗?

gitlab - 如何在 .gitlab-ci.yml 中重用作业