首页 > 解决方案 > 如何使用作业 dsl 创建一个运行 groovy 代码的作业?

问题描述

我可以在作业 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"
}

但我希望作业 dsl 脚本创建一个运行这个 groovy 代码的作业(按计划)。看起来 systemGroovyCommand 是我会使用的,但我不明白 - 看起来你必须为我想避免的 systemGroovyCommand使用 .groovy文件。

标签: jenkinsjenkins-pluginsjenkins-job-dsl

解决方案


是的,它是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)
    }
}

推荐阅读