首页 文章

Gitlab CI Git Flow:如何分离分支构建?

提问于
浏览
1

我开发了一个复杂的Web应用程序,使用 git flow ,Gitlab和CI管道将测试版本部署到测试机器,并将构建版本构建到实时的临时系统 .

两个系统的构建管道是相同的,只有不同的部署作业:

require:
  stage: require
  only:
    - develop
    - tags
  tags:
    - require
  script:
    - npm install

build:
  stage: build
  only:
    - develop
    - tags
  script:
    - grunt

deploy_testing:
  stage: deploy
  only:
    - develop
  script:
    - (...)

deploy_master:
  stage: deploy
  only:
    - tags
  script:
    - (...)

现在我做一个Git Flow修补程序,在我的 develop 分支上创建一个提交,在 master 上创建一个标记的提交 . 推送后,Gitlab CI将按以下顺序运行作业:

  • require (在 develop 上查看提交A)

  • require (在 master 上签出标记的提交B)

  • build

  • build

  • deploy_testing

  • deploy_master

遗憾的是,只有一个跑步者,这意味着只有一个文件夹可以运行作业 . 这意味着, step 3 will be executed with files from step 2, which is on a different branch ,依此类推 . 在运行整个管道之后,测试系统包含与主/实时分段系统类似的状态,这根本不是我想要的 .

如何将这两个过程分开?我已经为 developtags 明确地尝试了单独的 requirebuild 作业,但这并没有按预期工作 .

有没有办法让不同的构建文件夹,或强制Gitlab CI以不同的顺序运行不同的乒乓球作业?

1 回答

  • 1

    本文档可以为您提供帮助

    也许有些代码喜欢

    require:
      stage: require
      only:
        - develop
        - tags
      tags:
        - require
      script:
        - npm install
    
    build_develop:
      stage: build
      only:
        - develop
      script:
        - grunt
      artifacts:
        paths:
        - folder_path_attached_to_deploy_job_develop
    
    build_master:
      stage: build
      only:
        - tags
      script:
        - grunt
      artifacts:
        paths:
        - folder_path_attached_to_deploy_job_master
    
    deploy_testing:
      stage: deploy
      only:
        - develop
      script:
        - (...)
      dependencies:
      - build_develop
    
    deploy_master:
      stage: deploy
      only:
        - tags
      script:
        - (...)
      dependencies:
      - build_master
    

相关问题