【问题标题】:Gitlab CI runs test twice when pushing to masterGitlab CI在推送到master时运行两次测试
【发布时间】:2021-04-20 19:32:44
【问题描述】:

我有一个看起来像这样的 Gitlab CI 配置:

stages:
  - test
  - deploy

test:
  stage: test
  only:
    - merge_request
    - master
  script:
    - jest --coverage

deploy:
  stage: deploy
  only:
    - master
  dependencies:
    - test
  script:
    - make deploy

我只希望在打开合并请求或合并到 master 时运行测试,因为我只使用 gitlab.com 上的免费计划,我想节省我的跑步时间。

如果每次提交都运行单元测试,我们总是会在第 3 周或第 4 周用完分钟。

在大多数情况下,它是有效的。问题来自直接推送到master(这可能时不时发生); test 同时运行两次。

我在 Gitlab 文档上找不到有关如何正确处理此问题的任何内容。任何帮助都会很棒。

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:

    我实际上不明白为什么直接推送到 master 会运行你的测试两次,除非你有一个开放的合并请求,它 master 作为源分支。

    您可以使用workflow 来防止这种情况发生。此外,您应该使用rules 而不是only/except,因为它们不再被积极开发。

    workflow:
      rules:
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
        - if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS'
          when: never
        - if: '$CI_COMMIT_BRANCH'
    
    stages:
      - test
      - deploy
    
    test:
      stage: test
      script:
        - jest --coverage
      rules:
        - if: '$CI_COMMIT_BRANCH == "master" || $CI_PIPELINE_SOURCE == "merge_request_event"'
    
    deploy:
      stage: deploy
      dependencies:
        - test
      script:
        - make deploy
      rules:
        - if: '$CI_COMMIT_BRANCH == "master"'
    

    【讨论】:

    • 就是这样。有一个以master 为源的开放合并请求。这样做不是我们协议的一部分,所以甚至从未考虑过。所以谢谢你。
    猜你喜欢
    • 2014-07-07
    • 2021-09-28
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多