jenkins - 如何在自定义 groovy 类中使用 Jenkins Job DSL API
问题描述
这样的事情是否可能,即使用主 DSL 脚本之外的类中的 JobDSL API?
//main_jobdsl_script.groovy:
new JobCreator().createJob()
//JobCreator.groovy:
job("new-job") {
steps {
batchFile("Hello World")
}
}
运行它时出现错误
13:03:18 ERROR: No signature of method: JobCreator.job() is applicable for argument types:
(org.codehaus.groovy.runtime.GStringImpl, StartJobCreator$_createJob_closure1)
values: ["new-job", de.dbh.jobcreation.StartJobCreator$_createStartJob_closure1@374d293]
我想避免主脚本变得太大和混乱,而是将代码分成几个脚本/类。
解决方案
对的,这是可能的。当前脚本可以访问所有 API 方法,因此您需要将其传递给自定义类。
//main_jobdsl_script.groovy:
new JobCreator(this).createJob()
//JobCreator.groovy:
class JobCreator {
private final Object context
JobCreator(Object context) {
this.context = context
}
void createJob() {
context.job('new-job') {
steps {
batchFile('Hello World')
}
}
}
}
推荐阅读
- python - 无法在python中使用正则表达式从字符串中获取整个链接
- javascript - 如何对json数据进行分类
- mysql - 在heroku上进行狂欢迁移的Mysql语法错误
- dialogflow-es - 如何在 Web 演示(对话流)中发送连续文本消息?
- scala - 使用 Apache Spark SQL 查找间隔最长且无事故的设施
- php - Laravel - 从另一个表(无关系)获取数据并显示在视图中
- amazon-web-services - 如何查看弹性beantalk实例的公共IP地址以将mongodb atlas列入白名单
- python - 按 ip 地址对元组列表进行排序
- javascript - 替代 flexDirection : '行'
- python - 如何在 np.float64 中找到任意数字的下一个或上一个数字?