Jenkins:使用DSL自动创建工作

时间:2017-10-12 17:49:36

标签: jenkins groovy automation

我试图完全自动化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()

1 个答案:

答案 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