如何通过Gradle集成job-dsl-plugin本地生成Job DSL XML文件
Gradle配置本地生成Jenkins Jobs DSL XML文件的实践问题
是否有开发者成功配置过Gradle构建流程,实现本地生成Jenkins Jobs DSL对应的XML配置文件?
可参考的官方文档方向:
- 本地系统运行DSL脚本:参考官方User-Power-Moves文档
- Gradle集成配置:参考官方IDE-support文档
当前配置进度
目前已完成基础配置:新增了面向jobs的sourceSet,引入插件依赖,实现了Groovy脚本编译为class文件的流程。接下来需要新增一个执行任务,关联到compile或test生命周期阶段,通过Gradle实现等价于本地standalone命令执行的XML生成逻辑,暂未确定最佳实现方案。
当前已验证可通过classpath获取所需依赖jar包,直接执行命令即可完成生成,参考命令如下:
curl -O https://repo.jenkins-ci.org/public/org/jenkins-ci/plugins/job-dsl-core/@version@/job-dsl-core-@version@-standalone.jar java -jar job-dsl-core-@version@-standalone.jar sample.dsl.groovy
现有build.gradle配置
sourceSets { // 其余sourceSet配置省略 jobs { groovy { srcDirs 'jenkins-job-dsl' compileClasspath += main.compileClasspath } } } dependencies { // 其余依赖配置省略 compile "org.jenkins-ci.plugins:job-dsl-core:$version" } task buildOneUsingClassFile(type: JavaExec) { group = "Execution" classpath = sourceSets.jobs.runtimeClasspath + sourceSets.jobs.compileClasspath main = 'my_pipeline_dsl_job_class_name' } task generateDSLXml(type: JavaExec) { group = "Execution" description = "generate all found groovy dsl files" classpath = sourceSets.jobs.compileClasspath main = 'javaposse.jobdsl.Run' args sourceSets.jobs.groovy .filter { it.path.endsWith('.groovy') } .collect {it.path.toString() } .unique() }
待解决问题
上述配置可覆盖大部分运行场景,但存在部分DSL脚本在同版本Jenkins环境中运行正常、本地生成时却报错的问题;该问题在官方在线测试环境中同样可以复现,初步推测是独立于Gradle配置的其他问题,需要该场景下的最佳配置实践参考。
内容的提问来源于stack exchange,提问作者Peter Kahn
相关产品推荐
相关产品推荐

