Jenkins helm chart部署下JCasC配置Job DSL语法报错问询
报错原因分析
- 核心本质是YAML语法解析错误,并非你导出的Job DSL本身存在语法问题。错误触发在JCasC加载YAML配置的阶段,尚未执行到Job DSL生成Jenkins任务的步骤。
- 第一个错误触发点:你使用了YAML折叠块标识符
>定义script字段的值,但后续的Job DSL代码没有保持和script字段匹配的缩进层级,YAML解析器将pipelineJob('DSL_Seed_Job') {识别为了一个新的YAML键,而非script字段的内容,因此抛出while scanning a simple key、找不到预期的冒号的报错。 - 第二个错误触发点:折叠块
>会自动将换行转换为空格,同时你在代码内额外添加的三重单引号'''、流水线代码里build job:中的冒号,都会被YAML解析器误判为YAML自身的语法符号,而非Job DSL代码的内容,进一步触发解析异常。
修复方案
将script: >替换为YAML字面量块标识符|(保留换行和缩进),调整缩进层级,同时如果流水线代码直接内嵌在DSL中不需要拉取SCM仓库,建议将cpsScm改为cps配置,参考正确配置如下:
controller: JCasC: configScripts: casc-jobs: | jobs: - script: | pipelineJob('DSL_Seed_Job') { definition { cps { script('''pipeline { agent any stages { stage('Trigger disable script approval') { steps { script{ build job: 'Tools/Disable_Script_Approval' } } } stage('Trigger Jobs loading into Jenkins') { steps { script{ build job: 'Tools/Seed_Job_Executor' } } } } }''') sandbox(true) } } }
内容的提问来源于stack exchange,提问作者ליאור יעקובוב
相关产品推荐
相关产品推荐

