jenkins - 如何使用作业 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文件。
解决方案
是的,它是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)
}
}
推荐阅读
- c - 为什么在 bpf_helpers 中定义了 load_half,但它没有出现在 filter.c 中?
- database - 按具有活动记录 yii2 的计算字段排序
- node.js - 如何修复'字符串\')\'后的未闭合引号。错误
- ios - 带计时器的绘图应用程序。绘图时间少于 20 秒后计时器开始滞后
- java - android从图库中获取图像并保存另一个活动
- javascript - 我认为 Splice(remove) 方法的工作方式与其实际工作完全相反
- python - 使用 Python 请求向 ASP 提交表单的 MAC 验证错误
- angular - 模型变异时未调用 Angular ControlValueAccessor writeValue()
- apache - apache tika 内部使用什么模型 - TensorflowRESTCaptioner
- bash - 如何以有效的方式将多个大型 .gz 文件合并为一个?