我如何安排一项工作在将来运行,但只有一次

时间:2016-01-27 05:24:32

标签: jenkins

我想安排一个在未来的指定时间最多执行一次的工作(通常那个时间会在那个晚上,几小时后)。我想用Jenkins来做这件事。如果詹金斯在那段时间碰巧失败了,那工作就不会开火 - 那没关系。

目前,我打算在启用“定期构建”的情况下开始新工作,并将时间表设置为“0 19 29 01 *”。

目的是安排工作在1月29日19:00运行。

缺点是,每次我这样做,我必须记得在明年之前的某个时间删除/禁用该作业,否则它将再次运行(这将是不好的)。无论如何,我会手动检查作业的结果,所以不要太难。我只是希望有人能够指出一种安排Jenkins“一次性”工作的方法 - 这样我就不会因为忘记禁用这项工作而搞砸了。

2 个答案:

答案 0 :(得分:7)

安装“Schedule Build Plugin”。 “添加了为以后的某个时间点安排构建的功能。询问用户的日期和时间,并将构建添加到构建队列中,并显示相应的静默期。”

即使您看到预定构建的图标,也需要在插件安装后重新启动jenkins。

https://wiki.jenkins-ci.org/display/JENKINS/Schedule+Build+Plugin

当心:初次安装后(使用jenkins 2.2)我收到警告“插件提供GET”。似乎确实安排了一些工作,并表示它“在13小时后到期”,这在我安排的时间是正确的。它没有完成这项工作。 : - (

警告:

You must use POST method to trigger builds. (From scripts you may instead pass a per-project authentication token, or authenticate with your API token.) If you see this page, it may be because a plugin offered a GET link; file a bug report for that plugin.

网址,大概是GET:

http://jenkins:xxxx/job/jobname/build?delay=47212sec

这是使用Jenkins 2.2和Schedule Build Plugin 0.3.4

我现在正在为我工​​作jenkins 2.7.4和从源构建的Schedule Build Plugin。

解决方案:使用最新的jenkins并等待新版本的插件(> 0.3.4)。 。 。 (或从源代码构建)。 在GET问题的插件上已经打开了一个错误,并且在源代码中有一个修复但在最新版本中还没有。 2016年9月26日:https://issues.jenkins-ci.org/browse/JENKINS-28961从源代码构建schedule_build.hpi这个插件有效。对于jenkins 2.2,如果在jenkins中禁用CSRF保护,它就起作用了。

答案 1 :(得分:0)

假设您正在运行linux,可以使用curl从'at'命令调用Jenkins rest API

at 9:30 PM Fri

curl -X POST JENKINS_URL/job/JOB_NAME/build \
  --data token=TOKEN \
  --data-urlencode json='{"parameter": [{"name":"id", "value":"123"},\
     {"name":"verbosity", "value":"high"}]}'^D
job 2 at Fri Jan 29 21:30:00 2016

然后用

查看
at -c 2

输出

#!/bin/sh
# atrun uid=501 gid=20

#some environment

SECURITYSESSIONID=186a8; export SECURITYSESSIONID
_=/usr/bin/at; export _
cd /xxxxxxx || {
     echo 'Execution directory inaccessible' >&2
     exit 1
}
OLDPWD=/xxxxxxxxx; export OLDPWD

    curl -X POST JENKINS_URL/job/JOB_NAME/build \
      --data token=TOKEN \
      --data-urlencode json='{"parameter": [{"name":"id", 
          "value":"123"}, {"name":"verbosity", "value":"high"}]}'

REST API wiki