Gitlab CI/CD中部分Job无法读取build.env文件问题排查
问题解决:Kaniko镜像中
source命令报错找不到文件 问题根源
你使用的gcr.io/kaniko-project/executor:debug镜像默认搭载的是sh shell,而source是Bash专属的内置命令,sh并不支持该命令——虽然报错信息显示“build.env: not found”,但实际是sh无法识别source命令,导致了文件不存在的误报。而Terraform镜像使用的是Bash环境,所以source命令可以正常执行。
解决方案
把source build.env替换为POSIX标准的.命令(点命令),这个命令在sh和Bash环境中都能兼容使用。修改后的.docker-build配置如下:
.docker-build: extends: .base stage: deploy image: name: gcr.io/kaniko-project/executor:debug entrypoint: [""] before_script: - pwd - ls - if [ -f build.env ] ; then set -o allexport && . build.env && set +o allexport ; fi
补充说明
. build.env和source build.env功能完全一致,都是读取并执行目标文件中的命令,将文件内定义的环境变量导入当前shell会话。改用.命令后,就能适配Kaniko镜像的sh环境,解决兼容性问题。
内容的提问来源于stack exchange,提问作者s.l
相关产品推荐
相关产品推荐

