我有一个定时执行的 Jenkins 任务。我希望能够通过编程方式修改该定时时间。
我尝试使用安装 Schedule Build 插件来修改构建,然后使用 http://jenkins_url/job/jobname/build?delay=3344sec
进行修改。但是这将使该任务进入静默期,阻塞了 Java 线程。我想要修改 Schedule 条目而不让它进入静默期。
我有一个定时执行的 Jenkins 任务。我希望能够通过编程方式修改该定时时间。
我尝试使用安装 Schedule Build 插件来修改构建,然后使用 http://jenkins_url/job/jobname/build?delay=3344sec
进行修改。但是这将使该任务进入静默期,阻塞了 Java 线程。我想要修改 Schedule 条目而不让它进入静默期。
[...]
<triggers>
<hudson.triggers.TimerTrigger>
<spec>00 12 29 02 * </spec>
</hudson.triggers.TimerTrigger>
</triggers>
[...]
注意:
我无法让它正常工作,但插件的源代码引用了一个“schedule” URL操作和一个“date”参数。
我尝试了类似以下的内容:
http://localhost:8080/job/jobname/job/develop/schedule?date=2020-02-20
它没有被拒绝,但我看不到构建。
以下是在按下按钮以安排时执行的操作的源代码:
var newRequest = function() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
var sumbitScheduleRequest = function(absoluteUrl, quietPeriodInSeconds, isJobParameterized){
if(isJobParameterized){
// if job has parameters, redirect to build page, so user can set parameters
window.location = absoluteUrl + "build?delay=" + quietPeriodInSeconds + "sec";
}else{
// if job has NO parameters, submit build directly
var csrfCrumb;
var csrfRequest = newRequest();
csrfRequest.onreadystatechange = function() {
if (csrfRequest.readyState === 4) {
if (csrfRequest.status === 200 || csrfRequest.status === 201) {
csrfCrumb = JSON.parse(csrfRequest.responseText);
} else {
// csrf might be deactivated
}
// do the actual submit
var xmlhttp = newRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4) {
if (xmlhttp.status === 200 || xmlhttp.status === 201) {
window.location = absoluteUrl;
return false;
} else {
window.location = absoluteUrl;
return false;
}
}
};
xmlhttp.open("POST", absoluteUrl + "build?delay=" + quietPeriodInSeconds + "sec", true);
if (csrfCrumb) {
xmlhttp.setRequestHeader(csrfCrumb.crumbRequestField, csrfCrumb.crumb)
}
xmlhttp.send();
}
};
csrfRequest.open('GET', rootURL + '/crumbIssuer/api/json', false);
csrfRequest.send();
}
}