Jenkins DSL删除AuthToken

时间:2018-02-01 15:13:17

标签: jenkins groovy jenkins-job-dsl

我想删除现有作业的authToken。当我们运行配置脚本时,它创建了authToken = secret,现在我们要删除它。

这就是它的创建方式:

    configure { project ->
        ( project / 'authToken' ).setValue('secret')
    }                

删除该代码不会删除实际的作业设置。

2 个答案:

答案 0 :(得分:0)

我能够通过删除问题中描述的Jobs DSL来解决问题,但之后还通过在Jenkins UI的控制台窗口中使用以下命令运行脚本来跟进它:

import hudson.security.*

def h = Hudson.getInstance() 

for (item in h.items) {

  if(item instanceof org.jenkinsci.plugins.workflow.job.WorkflowJob) {

    println item.name + ' ' + item.getClass()

    if(item.name == 'test-job-with-token-equals-secret-defined') {
      def pipeline = org.jenkinsci.plugins.workflow.job.WorkflowJob.class 
      def field = pipeline.getDeclaredField("authToken") 
      field.setAccessible(true) 
      field.set(item, null)
    }
  }
}

通过运行此脚本,取消选中作业配置触发器远程构建(例如,从脚本中),这是我正在寻找的最终状态,所以现在它应该在初始化时保持这种状态使用上述Jobs DSL的所有工作。

答案 1 :(得分:0)

这是Jenkins的已知问题,请参阅JENKINS-21017。它已在Jenkins 2.99中修复。