如何解决Jenkins流水线CD阶段'script returned exit code 15'错误
解决Docker-Compose YAML语法错误(行229)及Exit Code 15问题
1. 定位并修复核心YAML语法问题
聚焦docker-compose.yml第229行,"mapping values are not allowed in this context"错误通常由以下场景导致:
- 字符串中未转义特殊字符(如冒号
:、感叹号!,需用双引号包裹含特殊字符的字符串) - 缩进不规范(YAML严格要求用空格缩进,禁止制表符,且层级必须对齐)
- 键值对格式错误(键后的冒号必须紧跟空格,如
key: value而非key:value)
示例错误与修正:
# 错误写法:含冒号的字符串未加引号 environment: DB_URI:postgres://user:pass@db:5432/dbname # 正确写法 environment: DB_URI: "postgres://user:pass@db:5432/dbname"
直接检查仓库中对应行的代码,修正后重新触发流水线。
2. 验证YAML语法合法性
在本地或Jenkins节点使用yamllint工具做语法校验,能获取更详细的错误提示:
# 安装yamllint(Debian/Ubuntu环境) sudo apt-get install yamllint # 或通过pip安装 pip install yamllint # 检查目标文件 yamllint docker-compose.yml
3. 排查Jenkins脚本中YAML文件的完整性
若本地验证YAML无问题,但Jenkins执行时出错,需检查Shell脚本中文件下载环节:
- 确认
curl/wget等下载命令未导致文件截断(可添加--fail参数确保下载完整) - 排查是否有后续脚本操作(如环境变量替换)篡改了YAML结构
可在Jenkins流水线中添加步骤,打印下载后的文件内容对比:
cat docker-compose.yml
4. 关于Exit Code 15
该退出码是docker-compose因YAML解析失败返回的标准错误码,修复YAML语法问题后,此错误会自动消失。
内容的提问来源于stack exchange,提问作者naruto007
相关产品推荐
相关产品推荐

