【问题标题】:Running a parameterized job at a particular time in jenkins在詹金斯的特定时间运行参数化作业
【发布时间】:2013-05-24 12:38:25
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: jenkins hudson jenkins-plugins hudson-plugins


    【解决方案1】:

    至少有两种方法可以解决这个问题,
    但您必须提前知道所需的值:

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

    • 而不是调度参数化作业,
      创建另一个将触发
      参数化作业同时传递相关
      参数值
      (这也允许您启动目标作业
      具有不同的值集)。

    编辑:

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

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

    请注意,在每次运行之前修改此文件是不好的做法,
    因为有更好的方法可以使用参数自动启动 Jenkins 作业。

    【讨论】:

    • 嘿@gonen,这可能很愚蠢,但我们如何“设置作业的默认值”?
    • @Maulzey,Jenkins 作业中的每个参数都有一个默认值 - 文本字段的内容、复选框的状态(设置或取消设置)、保管箱的第一项等.如果不确定,默认值是您选择“立即构建”时看到的值。
    • TY !搞定了:D
    • 谢谢。我不得不使用额外的工作,它用参数调用另一个工作,因为我的工作更通用,可以处理多个分支和环境,但这增加了我已经拥有的工作数量的快速增长。
    【解决方案2】:

    当使用构建触发器启动构建时,无法传递参数。由于作业是参数化的,因此自动启动作业将使用默认参数运行。

    如果这足够好,那么您可以通过作业配置页面的“构建触发器”部分简单地设置您希望它运行的计划,然后选择“定期构建”复选框并添加适当的值(使用 cron 的语法)。让默认参数生效。

    但是,您可以将 POST 作为触发器发送到 jenkins,并传递您希望的确切值。然后,您可能必须通过 shell 脚本直接使用 CRON,这样您就可以设置参数值。

    例如,

    http://example.com/jenkins/job/this_job/buildWithParameters?PARAMETER=Value

    【讨论】:

      【解决方案3】:

      在 Gonen 的回答的基础上,您可以使用 Build Flow Plugin 让自己更轻松一些。安装后,创建一个新作业并将类型设置为“构建流程”。将此作业配置为在所需的预定时间运行。在此作业的“使用流 DSL 定义构建流程”部分中,指定您希望它构建的作业:

      build( "Job You Want Built", param1:"whatever", Param2:"whatever")
      

      您可以通过添加更多行来指定要构建的更多作业,或者重复同一行并更改参数以使用不同的参数多次构建作业。

      完成后,您的构建流程作业将在预定时间运行,并使用指定的参数启动所需的作业。

      【讨论】:

        【解决方案4】:

        您可以使用Parameter Scheduler Plugin

        它允许您在 cron 调度之后指定参数,例如:

        H(0-29)/10 * * * * % name=value; othername=othervalue
        

        % 之后的名称值对被解释为参数。

        【讨论】:

          【解决方案5】:

          Jenkins crontab 允许安排作业在特定时间运行,但还不允许传递参数。

          不过有this Jenkins feature request 可以扩展它来传递参数。一旦可用,它就可以让你做你想做的事,而无需像其他一些答案所建议的那样创建额外的 Jenkins 工作。

          如果对您有帮助,您可以投票支持该功能尽快包含在 Jenkins 中。

          【讨论】:

          • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
          • @Prune 我链接到的功能一旦实现就会实现作者想要的功能,所以我认为它对其他人知道它的存在很有帮助和相关性。我已经重新措辞了我的答案,以使这一点更清楚。
          • 操作短语是“一旦实施”。是的,这很有帮助且相关:作为评论,我会投赞成票。
          • 票证已关闭,参考Parameterized Scheduler 是固定的,这是this answer 中建议的解决方案。
          【解决方案6】:

          可以手动设置一次参数化作业的参数值,这些值将在后续计划运行中重复使用。

          为此,您需要为参数定义一个默认值,如下所示:

          parameters {
              string(name: 'testUserName', defaultValue: params.testUserName ?: 'defaultTestUser')
          }
          

          看我的详细回答here

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多