升级GitLab至16.1.5后CI流水线报YAML无效错误,求原因及解决方法
问题原因
GitLab 16.1版本对CI配置的校验规则做了收紧,禁止同时在.gitlab-ci.yml的顶层和default:块中定义image字段。你的配置文件里同时存在这两处image定义,在16.0.2版本时该校验规则未强制执行,因此能正常运行;但升级到16.1.5后,新的校验逻辑触发,导致流水线创建失败并提示YAML无效。
解决方法
根据实际需求选择以下任意一种方式修改.gitlab-ci.yml:
- 保留顶层的
image定义,删除default:块中的image字段 - 保留
default:块中的image定义,删除顶层的image字段 - 如果不同作业需要使用不同镜像,可在具体的作业(job)块中单独定义
image,替代全局层面的重复定义
示例修改
原违规配置:
# 顶层镜像定义 image: node:18 default: image: node:20 before_script: - npm install
修改后(保留顶层镜像):
image: node:18 default: before_script: - npm install
或修改后(保留default块镜像):
default: image: node:20 before_script: - npm install
内容的提问来源于stack exchange,提问作者Abdullah Khawer
相关产品推荐
相关产品推荐

