我开发了一个复杂的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 ,依此类推 . 在运行整个管道之后,测试系统包含与主/实时分段系统类似的状态,这根本不是我想要的 .
如何将这两个过程分开?我已经为 develop
和 tags
明确地尝试了单独的 require
和 build
作业,但这并没有按预期工作 .
有没有办法让不同的构建文件夹,或强制Gitlab CI以不同的顺序运行不同的乒乓球作业?
1 回答
本文档可以为您提供帮助
https://docs.gitlab.com/ee/ci/yaml/#dependencies
https://docs.gitlab.com/ee/ci/yaml/#artifacts
也许有些代码喜欢