我有一个参数化的工作,我想安排它在特定时间运行。无论如何我可以选择我的参数并安排它运行。
提前致谢
答案 0 :(得分:22)
至少有两种处理方法,
但你必须提前知道所需的值:
将作业的默认值设置为您需要的值,
然后安排它随时运行。
而不是安排参数化作业,
创造另一个将触发的工作
通过相关的参数化工作
值参数
(这也允许您启动目标作业
具有不同的价值观。)
编辑:
第三种方法允许您根据需要更新参数值:
注意在每次运行之前修改此文件是不好的做法,
因为有更好的方法可以自动启动带参数的Jenkins-jobs。
答案 1 :(得分:4)
当使用构建触发器来启动构建时,无法传递参数。由于作业已参数化,因此自动启动作业将使用默认参数运行。
如果这足够好,那么您只需通过作业配置页面的“构建触发器”部分设置您希望它运行的计划,然后您可以选择“定期构建”复选框并添加适当的值(使用cron的语法)。让默认参数生效。
但是,您可以将jenkins作为触发器发布,并传递您希望的确切值。然后,您可能需要使用可能的shell脚本直接使用CRON,因此您可以设置参数值。
例如,
http://example.com/jenkins/job/this_job/buildWithParameters?PARAMETER=Value
答案 2 :(得分:4)
根据Gonen的回答,您可以使用Build Flow Plugin让自己更轻松一点。安装后,创建一个新作业并将类型设置为“Build Flow”。将此作业配置为在所需的计划时间运行。在此作业的“使用流DSL定义构建流程”部分中,指定要构建的作业:
build( "Job You Want Built", param1:"whatever", Param2:"whatever")
您可以通过添加更多行来指定要构建的更多作业,或者重复相同的行并更改参数以使用不同的参数多次构建作业。
完成后,您的Build Flow作业将在预定时间运行,并使用指定的参数启动所需的作业。
答案 3 :(得分:4)
Jenkins crontab允许安排作业在特定时间运行,但还不允许传递参数。
然而,有this Jenkins feature request扩展它以传递参数。一旦可用,它将让你做你想做的事情,而不需要像其他一些答案那样创建额外的Jenkins工作。
如果能帮助您,可以投票支持将此功能更快地包含在Jenkins中。
答案 4 :(得分:3)
您可以使用Parameter Scheduler Plugin
它允许您在cron计划之后指定参数,例如:
H(0-29)/10 * * * * % name=value; othername=othervalue
将%后的名称值对解释为参数。
答案 5 :(得分:1)
可以为参数化作业的参数手动设置一次值,这些值将在以后的计划运行中重新使用。
为此,您需要为参数定义一个默认值,如下所示:
parameters {
string(name: 'testUserName', defaultValue: params.testUserName ?: 'defaultTestUser')
}
查看我的详细答案here