我试图完全自动化Jenkins的创建。我使用groovy脚本完成了大部分设置工作。我的最后一个障碍是使用DSL创建一份工作。我可以使用xml通过以下方式创建作业:
import jenkins.model.*
def jobName = "jobname"
String configXml = new File('/jobname.xml').getText('UTF-8')
def xmlStream = new ByteArrayInputStream( configXml.getBytes() )
Jenkins.instance.createProjectFromXML(jobName, xmlStream)
但是,XML文件难以维护且不易理解。所以我想切换到使用DSL语法,但我无法修复API以使用createPrjectFromDSL等替换createProjectFromXML(...)?
我的问题是如何使用DSL创建新工作?我让这部分工作了,谢谢。
然而我的下一个问题是我在哪里放置这个文件,以便Jenkins在创业时创建工作?当我尝试将其复制到/var/jenkins_home/init.groovy.d时我在启动时遇到以下异常:
警告:无法运行脚本文件:/var/jenkins_home/init.groovy.d/neoconfig-dsl.groovy groovy.lang.MissingMethodException:没有方法签名:neoconfig-dsl.job()适用于参数类型:(java.lang.String,neoconfig-dsl $ _run_closure1)值:[neo,neoconfig-dsl $ _run_closure1 @ 7d799f93] 可能的解决方案:run(),run(),any(),wait(),grep(),dump()
答案 0 :(得分:2)
Jenkins Job DSL插件提供了您正在寻找的内容:用于定义作业的基于Groovy的DSL。
简单的作业定义如下:
lib
编辑:要在定义后自动启动此作业,请添加以下代码:
def repo = 'DSL-Tutorial-1-Test'
job(repo) {
scm {
git('git://github.com/quidryan/aws-sdk-test.git')
}
triggers {
scm('H/15 * * * *')
}
steps {
maven('-e clean test')
}
}
可以在tknerr/jenkins-pipes-infra中找到创建自引导docker容器的设置的完整示例。我(大多数情况下)使用相同的方法here。