我有一个有几个阶段的管道:detect, test, build, deploy
The detect
阶段检测应用程序的类型和test
and build
阶段的作业根据计算结果包含或排除detect
. The detect
stage 将其值写入名为的环境变量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
stage 运行,因此上面的方法永远不会起作用,除非我在顶级 YML 文件中显式设置变量,如下所示:
variables:
BUILD_MODE: "ANGULAR"
解决这个问题的最佳方法是什么?我想要做的总结是评估某些条件,要么动态设置阶段,要么在创建管道中的阶段之前设置变量本身,以便使用正确评估的规则来创建它们。
你可以看一下动态子管道 https://docs.gitlab.com/ee/ci/parent_child_pipelines.html#dynamic-child-pipelines。也许您可以通过动态创建 npm/ng 构建作业来解决您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)