如何在Jenkins Job Builder中通过单个job-template生成多任务配置
Jenkins Job Builder 单模板批量生成多任务配置方案
问题重现
原配置尝试通过单个模板生成多任务,但运行报错:
- project: name: project-name jobs: - 'alcatel-pipeline': svnurl: "svn://sourcecontrol/java/testing/swright-pipeline-test/trunk" - 'other-pipeline': svnurl: "svn://sourcecontrol/java/testing/swright-pipeline-test/trunk" - job-template: name: '{name}' project-type: pipeline pipeline-scm: scm: - svn: url: '{svnurl}' clean: true script-path: Jenkinsfile lightweight-checkout: true
错误信息:
jenkins_jobs.errors.JenkinsJobsException: Failed to find suitable template named 'alcatel-pipeline'
错误原因:把任务名称当成了模板名称来引用,但Jenkins Job Builder要求project.jobs里的条目必须是已定义的模板名称,而非最终生成的任务名称。
解决方案
方式一:逐个指定模板参数
先给模板定义一个固定的标识名称,再在project.jobs里引用该模板,同时传递每个任务的name和svnurl参数:
# 定义单个模板,指定模板名称为pipeline-template - job-template: name: 'pipeline-template' project-type: pipeline pipeline-scm: scm: - svn: url: '{svnurl}' clean: true script-path: Jenkinsfile lightweight-checkout: true # 引用模板生成多任务 - project: name: project-name jobs: - pipeline-template: name: 'alcatel-pipeline' svnurl: "svn://sourcecontrol/java/testing/swright-pipeline-test/trunk" - pipeline-template: name: 'other-pipeline' svnurl: "svn://sourcecontrol/java/testing/swright-pipeline-test/trunk" # 继续添加更多任务条目
方式二:批量变量生成(适合大量任务)
如果要生成150个任务,用vars列表批量定义所有任务的参数,无需重复引用模板:
- job-template: name: 'pipeline-template' project-type: pipeline pipeline-scm: scm: - svn: url: '{svnurl}' clean: true script-path: Jenkinsfile lightweight-checkout: true - project: name: project-name # 批量定义所有任务的参数 vars: - name: 'alcatel-pipeline' svnurl: "svn://sourcecontrol/java/testing/swright-pipeline-test/trunk" - name: 'other-pipeline' svnurl: "svn://sourcecontrol/java/testing/swright-pipeline-test/trunk" # 依次添加剩下的148个任务参数 jobs: - pipeline-template
以上两种方式都会通过同一个pipeline-template模板,替换{name}和{svnurl}变量,生成对应名称和SCM地址的Pipeline任务。
内容的提问来源于stack exchange,提问作者RhythmicDevil
相关产品推荐
相关产品推荐

