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