6

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

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

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

它工作得很好。但是,我找不到任何方法来删除詹金斯的另一个工作。

请帮忙!

谢谢!

4

2 回答 2

9

要删除作业,您必须在“处理作业 DSL”构建步骤配置中将“已删除作业的操作”选项设置为“删除”。然后从脚本中删除作业并运行种子作业。

于 2015-11-18T19:26:54.043 回答
8

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将被删除。

于 2015-11-23T21:13:32.837 回答