如何在 Jenkins 中通过环境变量设置定期构建作业的时间表

Posted

技术标签:

【中文标题】如何在 Jenkins 中通过环境变量设置定期构建作业的时间表【英文标题】:How to set schedule of a periodically built job by environment variables in Jenkins 【发布时间】:2018-07-22 11:56:38 【问题描述】:

在 Jenkins 中,您可以设置作业以使用类似 cron 的时间定义定期构建。例如

# switch timezone
TZ=Etc/GMT+6
# build once anywhere between 13:00 - 23:59
H H(13-23) * * *

您还可以配置参数化作业。这意味着您可以在旅途中设置一些将在配置中使用的预定义环境变量的值。例如git上的某个分支,您可以让用户设置环境变量“BRANCH”的值,然后使用

$BRANCH

在配置中。


但这似乎不适用于定期构建作业配置的Schedule 值。

我的问题:

我正在使用 Job-Generator 插件。它基本上是在使用自己的配置作为模板的同时创建新的(未参数化但定期运行的)作业。

为了为不同的存储库生成不同的作业,您使用之前描述的参数化构建,因此在生成的作业配置中,变量名称 $... 被替换为值。

现在我不希望生成器定期运行,但当然只能按需运行。因此,我想用一个变量替换前面提到的 cron 规则,这样它本身就不会在一夜之间构建。

我尝试将 CRON1 (TZ=Etc/GMT+6) 和 CRON2(H H(13-23) * * *) 设置为不可更改的生成器变量并使用

Schedule
    $CRON1
    $CRON2

但这会使 Jenkins 崩溃并在尝试保存生成器配置时抛出错误。

第 1:1 行:意外字符:'$'

如何使用环境变量设置计划值?

(我不想这样做 Jenkins scheduled build Triggers with environment variable? 。我正在使用它,但这并不能解决我的作业生成器本身定期运行的问题,它不应该这样做)

【问题讨论】:

【参考方案1】:

您无法访问该块中的变量,而是可以使用插件来安排作业。 parameterized-scheduler-plugin 这个插件在你的情况下会对你有所帮助。它也与pipeline scripting 有很好的集成。希望这会有所帮助。

【讨论】:

这并没有真正的帮助。如前所述,生成的最终运行作业未参数化,但应定期运行。 paramterized-scheduler-plugin 只允许将参数传递给参数化作业,但这并不能解决我只在生成的作业中设置调度值而不是为生成器本身设置调度值的问题......

以上是关于如何在 Jenkins 中通过环境变量设置定期构建作业的时间表的主要内容,如果未能解决你的问题,请参考以下文章

如何在jenkins构建时调用sbt环境变量

在 Jenkins 中使用多分支管道“定期构建”

如何在 Jenkins 中通过 *** 拉取/克隆 git 存储库?

在执行 maven 之前设置环境变量(在 jenkins 构建中)

如何在 Jenkins/Hudson 中以编程方式设置环境变量?

在当前进程中通过 python 运行 bat 文件