【发布时间】:2018-08-30 12:25:43
【问题描述】:
我开发了一个复杂的 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) buildbuilddeploy_testingdeploy_master
遗憾的是只有一个运行器,这意味着只有一个文件夹运行作业。这意味着,第 3 步将使用第 2 步中的文件执行,该文件位于不同的分支上 , 等等。 运行整个管道后,测试系统包含与主/实时登台系统相似的状态,这根本不是我想要的。
我怎样才能使这两个进程分开?
我已经为develop 和tags 明确地尝试了单独的require 和build 作业,但这并没有按预期工作。
有没有办法拥有不同的构建文件夹,或者强制 Gitlab CI 在没有 ping pong 的情况下以不同的顺序运行作业?
【问题讨论】:
标签: git continuous-integration gitlab gitlab-ci gitlab-ci-runner