jenkins - 使用 Jenkins Rest API 安排 Jenkins 作业
问题描述
我有一个安排在特定时间的 Jenkins 工作。我想以编程方式修改该时间。
我尝试通过安装 Schedule Build 插件来修改构建并使用http://jenkins_url/job/jobname/build?delay=3344sec
. 但这将使工作处于持有 java 线程的安静时期。我希望修改 Schedule 条目而不将其置于安静期。
解决方案
您可以使用Build Triggers -> Build periodically
作业配置选项。使用它来指定开始新构建的确切时间。
如果您需要更改该时间,请使用 Jenkins REST API 来...
- 以编程方式检索 XML 格式的作业配置,然后
- 修改该配置中的调度时间(见下文)
- 重新发布新的作业配置
在 bash 中,这可以通过单行(使用curl
and sed
)修改下面的 XML 部分来完成(示例安排在 2 月 29 日中午运行):
[...]
<triggers>
<hudson.triggers.TimerTrigger>
<spec>00 12 29 02 * </spec>
</hudson.triggers.TimerTrigger>
</triggers>
[...]
笔记:
- 另外,您不会依赖任何补充插件
- 警告:你不能在时间表中指定一年——所以如果你需要提前一年以上安排构建,那么你需要一些魔法。
推荐阅读
- javascript - 通过 URL 对象设置参数值与设置为字符串
- javascript - 范围控件在将它们放入表单后不再起作用(javascript)
- lua - 是否可以转储类型 userdata 变量的属性/方法?
- javascript - 我正在尝试通过访问嵌套属性并检查它的属性值是否包含某个字符串来过滤数组中的项目
- html - 为图像添加黑色透明度
- c++ - 创建 OpenGL 2D 视图相机,但使用模型视图投影相机
- c - 凯撒密码不允许输入
- php - Foreach 循环在 php 的 cronjob 中不起作用
- generics - Unknown size compile error when defining generic trait
- javascript - 浏览器扩展创建带有动态链接的动态按钮