写点什么

通过 http 请求启动 jenkins 任务

作者:程序员欣宸
  • 2022 年 7 月 24 日
  • 本文字数:1475 字

    阅读完需:约 5 分钟

通过http请求启动jenkins任务

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


  • 由于工作需要,要在程序中通过 http 请求触发 jenkins 任务的构建,并且查询构建状态,在此记录下来作为备忘;

介绍

  • 整体情况如下图所示,通过浏览器提交到 web 服务器的请求,会导致 web 服务器向 Jenkins 发起一次 http 请求,Jenkins 收到请求后开始构建任务;


  • 总的来说,为了达到远程触发 Jenkins 任务的目的,需要做以下操作:


  1. 安装远程授权的插件"Build Authorization Token Root Plugin"

  2. 全局设置;

  3. 生成授权 token;

  4. 将 Jenkins 任务设置成可以远程触发;

  5. 验证远程触发是否正常;

关于 Jenkins 的安装和设置

安装插件

  • 先安装远程授权的插件"Build Authorization Token Root Plugin"。

  • 如下图,"系统管理"->"插件管理":


  • 选中"Avaliable"这个 Tab 页,搜索插件"Build Authorization Token Root Plugin",然后安装,如下图:


设置

  • 为了远程触发任务成功,要先做以下设置:

  • 如下图,点击"系统管理"->"全局安全配置":


  • 如下图,取消勾选红框中的"Prevent Cross Site Request Forgery exploits"单选框:


  • 如下图,勾选红框中的"Allow anonymous read access",这样可以远程查询任务状态:


  • 点击页面底部的"保存"按钮;

  • 如下图,点击右上角的用户名称进入用户设置页面,再点击红框 3 中的"Add new Token"按钮;


  • 如下图,点击红框中的"Generate"按钮,会生成 token:


  • 如下图,红框中就是生成的 token,此处保存下来,稍后会用到:


  • 接下来创建一个任务,来验证远程触发这个任务;

创建任务

  • 创建一个自由风格的软件项目:


  • 增加一个参数,字符串类型的,如下图所示:


  • 如下图,Build Triggers 的设置勾选第一个"Trigger builds remotely (e.g., from scripts)",红框 2 中填入前面生成的 token:


  • 本次任务的主要工作是在控制台输出脚本,如下图:


  • 点击底部的"Save"按钮保存任务;

  • 至此,相关的设置工作已经完成,我们来验证一下吧;

验证远程触发 Jenkins 任务

  • 为了调整参数方便,我这里使用了 postman 来发起 http 请求,您也可以选择写代码发起;

  • Jenkins 服务器的 IP 地址是 192.168.1.103,因此整个 url 地址就是:http://192.168.1.103:8080/buildByToken/buildWithParameters

  • 请求类型是 POST,请求参数有四个,如下列表所示:



  • 上述所有参数,在 postman 上填写的效果如下图所示,注意要选中红框中的 tab 页填写参数:



  • 在 postman 页面上点击"Send"按钮发起请求,收到的响应没有 body,只有 header,返回码是 201 表示成功,如下图所示:


  • 此时去 Jenkins 页面上看看,任务已经被触发,并且输出的脚本中把 userName 参数也成功打印了,如下图:


查询任务

  • 有时候我们通过程序发起 http 请求触发了任务后,还想通过 http 请求获取任务的执行状态,这里介绍一下我这现在的做法:

  • 如下图,发起 GET 请求,获取所有构建情况,红框中就是每次任务的 id,请求请求地址是:http://192.168.1.103:8080/job/hello-world/api/json



  • 上面已经得到了四个任务 ID:1、2、3、4,接下来发四次请求查询每个任务的详情,查询 4 号任务的地址是:http://192.168.1.103:8080/job/hello-world/4/api/json ,得到的结果如下图所示:


  • 注意上图红框中的 note 字段,该字段的值"123456",就是我们在 POST 触发任务时的 cause 字段,所以,这个字段只要能对上,就表示该任务就是您之前远程触发的任务了,因此请在触发的时候保证 cause 字段的唯一性;

  • 至此,远程触发 Jenkins 任务的实战就完成了,希望能给您做自动化构建的时候提供一些参考;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

发布于: 1 小时前阅读数: 5
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
通过http请求启动jenkins任务_Java_程序员欣宸_InfoQ写作社区