gitlab cicd variables表达式配置问题
背景介绍
今天在编写 gitlab-ci.yml 文件的时候发现配置的 variables 错误的问题,仔细研究后发现在一定 variables 时在特定情况下不支持表达式。
问题追踪
错误的写法:
1 |
|
我们在全局声明 CI_K8S_REGISTRY_IMAGE 参数,其中携带了系统预设的参数$CI_PROJECT_PATH。
随后在 jobs 的局部变量中进行使用,并拼接上新的参数。
但在执行过程中却发现 $CI_PROJECT_PATH 最终并没有生效。
发现 CUST_APP_K8S_IMAGE_NAME 中使用到的 CI_K8S_REGISTRY_IMAGE 并不是“计算”后的,而是上面定义的表达式。
但单独查找 CI_K8S_REGISTRY_IMAGE 的变量又是正常的:
原因猜想
当我们在局部 variables 中使用全局 variables 时,ci 并不会将计算后的全局 variables 引入,而是将上面定义的表达式当做“值”进行引入,这可能是 ci 机制的一个 bug,也可能是故意为之,这点不是很清楚。
解决方式也很简单,我们将全局 variables 中引入的预设 variables 放到局部 variables 中就可以了。
正确写法
1 |
|
gitlab cicd variables表达式配置问题
https://www.wobushi.top/2021/gitlab-cicd-variables表达式配置问题/