我开发了一个复杂的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
可悲的是,只有一个跑步者,这意味着只有一个文件夹可以运行作业。这意味着,步骤3将使用步骤2中的文件执行,该文件位于不同的分支 , 等等。 在运行整个管道之后,测试系统包含与主/实时分段系统类似的状态,这根本不是我想要的。
如何将两个流程分开?
我已经仅为require
和build
明确尝试了单独的develop
和tags
个工作,但这并没有按预期工作。
有没有办法让不同的构建文件夹,或强制Gitlab CI以不同的顺序运行不同的乒乓球作业?
答案 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