Jenkins CASC拆分EC2插件AMI模板配置后启动报错求助
问题解决方法
错误原因
单个AMI配置文件开头多了列表符号-,导致SnakeYaml解析后,templates列表里的每个元素变成了包含单个对象的嵌套列表,而非EC2 Cloud配置要求的单个模板对象,因此触发Single entry map expected错误。
修正步骤
调整单个AMI配置文件,删除开头的
-,让文件内容直接是单个模板的键值对:- ami1配置文件修改后:
ami: "ami1-name" ... # 其他模板配置项 - ami2配置文件修改后:
ami: "ami2-name" ... # 其他模板配置项
- ami1配置文件修改后:
主配置文件保持原有结构,继续用
${file()}引用单个模板文件:jenkins: clouds: - amazonEC2: name: "xxxxxx" instanceCapStr: "50" region: "region" sshKeysCredentialsId: "credentialsId" templates: - ${file(path to config of ami1)} - ${file(path to config of ami2)} useInstanceProfileForCredentials: false
验证逻辑
主配置的templates是列表结构,每个- ${file(...)}会加载单个模板的键值对(即一个Map对象),最终合并后templates会成为包含两个Map的列表,和你最初的完整配置结构完全一致,符合CASC插件与EC2插件的解析要求。
内容的提问来源于stack exchange,提问作者Siddharth Seth
相关产品推荐
相关产品推荐

