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