在jenkins中的特定时间运行参数化作业

时间:2013-05-29 09:51:31

标签: jenkins hudson jenkins-plugins hudson-plugins

我有一个参数化的工作,我想安排它在特定时间运行。无论如何我可以选择我的参数并安排它运行。

提前致谢

6 个答案:

答案 0 :(得分:22)

至少有两种处理方法,
但你必须提前知道所需的值:

  • 将作业的默认值设置为您需要的值,
    然后安排它随时运行。

  • 而不是安排参数化作业,
    创造另一个将触发的工作 通过相关的参数化工作 值参数
    (这也允许您启动目标作业
    具有不同的价值观。)

编辑:

第三种方法允许您根据需要更新参数值:

  • 将作业设置为从配置文件中读取参数值 (通过EnvInject Plugin),然后更新该配置文件的内容
    在开始工作之前。

注意在每次运行之前修改此文件是不好的做法,
因为有更好的方法可以自动启动带参数的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