如何在Jenkins中使用Job DSL插件(脚本)删除作业?

6

我非常新手Jenkins和Job DSL插件。经过一番调查,我发现了如何使用DSL创建作业,现在我正在尝试使用DSL删除一个作业。 我知道使用以下代码禁用一个作业:

//create new job
//freeStyleJob("MyJob1", closure = null);

job("MyJob1"){
  disabled(true);
}

它完美地运行。但是,我找不到任何删除Jenkins中另一个作业的方法。

请帮忙!

谢谢!

2个回答

10
要删除一个任务,您需要在“处理作业 DSL”构建步骤配置中将“移除的作业操作”选项设置为“删除”。然后从您的脚本中删除该任务并运行种子作业。请注意保留 HTML 标记。

9
每个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_alltest_other将被删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接