使用 job dsl 设置 Jenkins 参数化调度程序插件

cbw*_*rts 6 cron dsl crontrigger jenkins jenkins-job-dsl

我正在尝试使用 jenkins job dsl 添加参数化的 cron 作业。但是,每次我尝试添加作业时都会看到以下错误:

No signature of method: javaposse.jobdsl.dsl.helpers.triggers.TriggerContext.parameterizedTimerTrigger() is applicable
for argument types: (com.manh.cp.jenkins.script$_createJob_closure3$_closure6$_closure9) values:
[com.manh.cp.jenkins.script$_createJob_closure3$_closure6$_closure9@4f7fa1a2]
Run Code Online (Sandbox Code Playgroud)

我都尝试过:

triggers {
   parameterizedCron('''H 20 * * * %var=a''')
}
Run Code Online (Sandbox Code Playgroud)

triggers {
    parameterizedTimerTrigger {
        parameterizedSpecification('H 20 * * * %var=a')
    }
}
Run Code Online (Sandbox Code Playgroud)

这对其他人还有效吗

参数化调度程序 v0.8 作业 dsl v1.76

kiv*_*ant 4

也许你应该先安装插件:

https://plugins.jenkins.io/parameterized-scheduler/

然后你可以使用 DSL 脚本:

pipelineJob('test') {
  // ...

  parameters {
    textParam('MYVAR',
      '1',
      'Test parameter'
    )
    choiceParam('MYCHOICE',
      ['A',
       'B',
      ],
      'Test choice param'
    )
  }

  properties {
    pipelineTriggers {
      triggers {
        parameterizedTimerTrigger {
          parameterizedSpecification('''
H 18 * * * %MYVAR=1; MYCHOICE=A;
H 18 * * * %MYVAR=2; MYCHOICE=B;
''')
        }
      }
    }

  }
Run Code Online (Sandbox Code Playgroud)

请注意Jenkinsfiles 中的语法不同

pipeline {
  // ...

  parameters {
    text name: 'MYVAR',
      description: 'Test parameter',
      defaultValue: '1'
    choice name: 'MYCHOICE',
      choices: ['A', 'B',],
      description: 'Test choice param'
  }

  triggers {
    parameterizedCron('''
H 18 * * * %MYVAR=1; MYCHOICE=A;
H 18 * * * %MYVAR=2; MYCHOICE=B;
''')
  }

}
Run Code Online (Sandbox Code Playgroud)