动态包含/排除 Gitlab 管道中的作业

问题描述 投票:0回答:2

我的管道有几个阶段:

detect, test, build, deploy

detect
阶段检测应用程序的类型,
test
build
阶段根据
detect
中的计算结果包含或排除作业。
detect
阶段将其值写入名为
BUILD_MODE
的环境变量。

我正在使用

rules
,如下所示:

ng-build:
  extends:
    - '.ng/job/build'
  stage: build
  rules:
    - if: $BUILD_MODE == "ANGULAR"
      when: always

npm-build:
  extends:
    - '.npm/job/build'
  stage: build
  rules:
    - if: $BUILD_MODE == "NPM"
      when: always

这样做的问题是,

BUILD_MODE
变量是在创建管道时静态评估的,而不是在
detect
阶段运行之后,所以上面的方法永远不会起作用,除非我在顶级 YML 文件中显式设置变量,如下所示:

variables:
 BUILD_MODE: "ANGULAR"

解决这个问题的最佳方法是什么?我想要做的总结是评估某些条件,要么动态设置阶段,要么在创建管道中的阶段之前设置变量本身,以便使用正确评估的规则来创建它们。

gitlab gitlab-ci
2个回答
4
投票

您可以查看动态子管道。也许您可以通过动态创建 npm/ng 构建作业来解决您的问题。


0
投票

如有解决方案请提供。

© www.soinside.com 2019 - 2024. All rights reserved.