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

时间:2018-03-21 11:39:40

标签: git continuous-integration gitlab gitlab-ci gitlab-ci-runner

我开发了一个复杂的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将按此顺序运行作业:

  1. require(查看develop上的提交A)
  2. require(在master上查看已标记的提交B)
  3. build
  4. build
  5. deploy_testing
  6. deploy_master
  7. 可悲的是,只有一个跑步者,这意味着只有一个文件夹可以运行作业。这意味着,步骤3将使用步骤2中的文件执行,该文件位于不同的分支 , 等等。 在运行整个管道之后,测试系统包含与主/实时分段系统类似的状态,这根本不是我想要的。

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

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

1 个答案:

答案 0 :(得分: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