当前位置: 首页 > 面试题库 >

如何通过REST API提交Jenkins职位?

赵高雅
2023-03-14
问题内容

以下“执行系统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>

按下生成列表中生成旁边的按钮,但不能与生成描述本身上显示的按钮一起使用时,可以工作的有点奇怪。



 类似资料:
  • 我正在尝试使用新的嵌入式可视化功能。我有一个iframe,它指向graphdb服务器,url如下: http://localhost:7200/graphs-视觉化?uri=[…] 这很好,但只适用于默认或以前选择的存储库。我无法找到一种方法来选择存储库,而不必手动转到http://localhost:7200/ 似乎存储库选择存储在一个cookie中,并且HTTP头可用,但似乎没有任何东西可以用

  • 描述 我设置了Jenkins(2.126),以便在推送新标记时构建管道。具体来说,我想标记上的现有提交为,并使其触发构建。根据几个消息来源,我想要的是可能的: https://mohamicorp.atlassian.net/wiki/spaces/DOC/pages/136740885/Triggering詹金斯基于新标签 不幸的是,当我标记一个现有的提交并将其推送到Git存储库时,什么都不会发

  • 问题内容: 我想使用JSoup将一些文本提交到此表单中。我将如何去做呢? 问题答案: 看一下jsoup.connect方法和Connection接口。 准备好要提交的文本后,可以将其作为表单提交发布到URL。 例如: 返回的对象将是帖子的结果页面。

  • 问题内容: 我有一个php表单,该表单具有已知的列数(例如,顶部直径,底部直径,织物,颜色,数量),但是行数未知,因为用户可以根据需要添加行。 我发现了如何采用每个字段(列)并将其放入各自的数组中。 因此,我最终在HTML中得到的是: 我现在想做的是将所有行和列都放入多维数组,然后将其内容通过电子邮件发送给客户端(最好在格式良好的表中)。我还无法真正理解如何将所有这些输入和选择组合到一个不错的数组

  • 我在服务器的/var/lib/hudson目录中安装了一个hudson。当我通过浏览器中的URL访问jenkins时,我会在页面底部看到版本1.411。 有人知道如何通过命令行(CLI)更新詹金斯吗?如果可能的话。 当我进入管理詹金斯页面时,它说:“詹金斯的新版本(1.521)可供下载(变更日志)。” 我觉得下载新的jar并在服务器中提取不安全。

  • 问题内容: 我们公司使用Skype进行通讯,我希望能够在Jenkins构建失败(以及恢复时)向Skype聊天室发送警报。 我怎样才能做到这一点? 问题答案: 我已经使用Skype公共API完成了此操作 我所做的是编写一个Perl脚本,该脚本使用SkypeAPI CPAN模块来处理与Skype的通信。这有点笨拙,因为脚本需要在运行Skype的桌面上运行。我在始终可以在自己的桌面上运行它,但这确实意味