以下“执行系统Groovy脚本”构建任务将更新构建描述,以添加一个按钮,该按钮将提交另一个已参数化的Jenkins作业:
import hudson.model.Cause import hudson.model.Job import jenkins.model.Jenkins final JOB_NAME = 'my-job' final jenkins = Jenkins.instance final job = jenkins.getItemByFullName(JOB_NAME, Job.class) final currentBuild = Thread.currentThread().executable final buildNumber = currentBuild.getNumber() job.builds .findAll { build -> build.number == buildNumber } .each { build -> build.setDescription(""" <button type='button' onclick='javascript: var another_job = function() { parameters = {json: {parameter: [{name: "P4_CHANGELIST", value: "0"}]}}; new Ajax.Request("http://builds/job/another-job/build", { method: "post", parameters: Object.toJSON(parameters) }); }; another_job()'>Continue</button>""") }
但是,单击“继续”按钮后,该请求将返回400 Bad Request。看起来是因为构建参数未正确传递(如果我从另一个作业中删除构建参数并且不传递参数,则一切正常)。
我不确定问题是否是由于引用错误或通过构建参数发送方式引起的。
您需要使用JSON。请参阅提交作业。
以下为我工作:
<button type='button' onclick='javascript: var another_job = function() { new Ajax.Request("http://localhost:8081/job/JReport2/build", { method: "post", parameters: {json: Object.toJSON({parameter: [{name: "foo", value: "fobar"}]})} }); }; another_job()'> Start Job </button>
按下生成列表中生成旁边的按钮,但不能与生成描述本身上显示的按钮一起使用时,可以工作的有点奇怪。