0

在单个 Jenkins 作业中,我们可以通过指定 aschedulepolling. 但是,在这两种情况下,都会触发构建,并且我配置为构建后步骤(使用PostBuild Task插件)的部署操作也会发生。我希望在轮询检测到更改时进行构建,但部署应该仅根据我提供的时间表进行。

是否可以在一项工作中完成,或者我必须为他们配置 2 个单独的工作?

4

2 回答 2

1

做 2 个工作会更干净。但是,如果你真的需要在一项工作中使用它,你可以使用 Jenkins 插件的组合来完成这项工作。

  • 使用 EnvInject 插件公开 BUILD_CAUSE 和/或 BUILD_CAUSE_SCHEDULED* 环境变量。(这可能不是必需的,默认情况下您可能可以在 Jenkins 配置中引用 Jenkins 变量)
  • 当 BUILD_CAUSE == SCHEDULED 或 BUILD_CAUSE_SCHEDULED == true 时,使用灵活发布插件(构建后操作)设置条件发布步骤。(只需测试一个条件。)请注意,您需要使用 Jenkins 的表达式语法,如下所示:

    ${ENV,var="BUILD_CAUSE_SCHEDULED"}
    

* BUILD_CAUSE_SCHEDULED 不是它的真名,你需要自己找出来,对不起。

于 2012-11-07T05:46:01.520 回答
1

你说你正在使用PostBuild Task插件。这允许在控制台日志上执行正则表达式来确定是否执行任务。

按计划启动的构建将Started by timer位于日志的顶部。您需要做的就是将此表达式添加到“日志文本”字段下的 PostBuild 步骤中。如果您已经在其中使用了某些条件,请单击“添加”按钮以添加另一个“日志文本”字段,并在它们之间使用“AND”运算符

于 2012-11-07T15:07:26.660 回答