我对 Jenkins 和 Job DSL 插件非常陌生。经过一番研究,我发现了如何使用 DSL 创建作业,现在我正在尝试使用 DSL 删除作业。我知道使用以下代码禁用作业:
//create new job
//freeStyleJob("MyJob1", closure = null);
job("MyJob1"){
disabled(true);
}
它工作得很好。但是,我找不到任何方法来删除詹金斯的另一个工作。
请帮忙!
谢谢!
我对 Jenkins 和 Job DSL 插件非常陌生。经过一番研究,我发现了如何使用 DSL 创建作业,现在我正在尝试使用 DSL 删除作业。我知道使用以下代码禁用作业:
//create new job
//freeStyleJob("MyJob1", closure = null);
job("MyJob1"){
disabled(true);
}
它工作得很好。但是,我找不到任何方法来删除詹金斯的另一个工作。
请帮忙!
谢谢!
要删除作业,您必须在“处理作业 DSL”构建步骤配置中将“已删除作业的操作”选项设置为“删除”。然后从脚本中删除作业并运行种子作业。
Job Dsl 插件的每个实例都会跟踪它创建的作业(和视图)。当它再次运行时,您可以配置它对上次运行此实例时存在但这次不存在的作业(和视图)的作用。
假设您有两个用于创建作业的文件。
seed_jobdsl.groovy
:
job('seed_all') {
steps {
dsl {
external('*_jobdsl.groovy')
// default behavior
// removeAction('IGNORE')
}
}
}
test_jobdsl.groovy
:
job('test_stuff') {
steps {
shell('echo "I live!")
}
}
这将使由创建的作业seed_all
保持不变,即使它们不存在于下一次运行种子时创建的作业列表中。
要删除作业,请更改您的种子作业代码:
seed_jobdsl.groovy
:
job('seed_all') {
steps {
dsl {
external('*_jobdsl.groovy')
removeAction('DELETE')
}
}
}
现在,运行seed_all
作业以应用您的更改(seed_all
运行时覆盖其自己的配置)。然后进行以下更改:
test_jobdsl.groovy
:
job('test_other') {
steps {
shell('echo "The job is dead, long live the new job!"')
}
}
再跑seed_all
。你注意到test_stuff
将被删除test_other
并将被创建。如果你删除test_jobdsl.groovy
然后运行seed_all
,test_other
将被删除。