我该如何创建一个使用作业DSL运行Groovy代码的作业?

时间:2018-10-25 02:30:50

标签: jenkins jenkins-plugins jenkins-job-dsl

我可以在job dsl项目中运行它:

def pluginsListFile = new File("${plugins}/plugins.txt")
def pluginsList = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
pluginsList.each {
    pluginsListFile.append "${it.getShortName()}: ${it.getVersion()}\n"
}

但是我希望job dsl脚本创建一个运行该常规代码(按计划)的作业。好像systemGroovyCommand是我要使用的,因为我不明白-看来您必须为systemGroovyCommand使用.groovy 文件,这是我想避免的。

1 个答案:

答案 0 :(得分:1)

是的,它是systemGroovyCommand。您不必将此脚本存储在单独的文件中,但这是最佳实践。 systemGroovyCommand接受字符串作为参数,因此您可以通过这种方式传递代码,但请记住转义特殊字符。

用法示例:

def script = '''
def pluginsListFile = new File("${plugins}/plugins.txt")
def pluginsList = jenkins.model.Jenkins.instance.getPluginManager().getPlugins()
pluginsList.each {
    pluginsListFile.append "${it.getShortName()}: ${it.getVersion()}\\n"
}
'''
job('TEST_JOB_SCRIPT') {
    steps {
        systemGroovyCommand(script)
    }
}