通过http请求启动jenkins任务

简介: 实战通过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,请求参数有四个,如下列表所示:
参数名 参数值 说明
job hello-world Jenkins上创建的任务名
token 11ccef68782a94c7f393a1bc2247523de2 前面生成的token,远程验证使用
userName Tom 任务中增加的业务参数
cause 123456 这个参数在查询任务详情的时候可以查到
  • 上述所有参数,在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任务的实战就完成了,希望能给您做自动化构建的时候提供一些参考;

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关文章
|
7月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
751 130
|
10月前
|
JavaScript 前端开发 API
Node.js中发起HTTP请求的五种方式
以上五种方式,尽管只是冰山一角,但已经足以让编写Node.js HTTP请求的你,在连接世界的舞台上演奏出华丽的乐章。从原生的 `http`到现代的 `fetch`,每种方式都有独特的风格和表现力,让你的代码随着项目的节奏自由地舞动。
875 65
|
8月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
751 2
|
9月前
|
Go 定位技术
Golang中设置HTTP请求代理的策略
在实际应用中,可能还需要处理代理服务器的连接稳定性、响应时间、以及错误处理等。因此,建议在使用代理时增加适当的错误重试机制,以确保网络请求的健壮性。此外,由于网络编程涉及的细节较多,彻底测试以确认代理配置符合预期的行为也是十分重要的。
346 8
|
9月前
|
缓存
|
jenkins Java Linux
Jenkins环境的部署及任务构建
以上就是Jenkins环境的部署及任务构建的全部内容。希望可以帮助你轻松上手Jenkins,让你的CI/CD之旅更加顺畅!
754 68
|
JSON API 网络架构
HTTP常见的请求方法、响应状态码、接口规范介绍
本文详细介绍了HTTP常见的请求方法、响应状态码和接口规范。通过理解和掌握这些内容,开发者可以更好地设计和实现W
2136 83
|
8月前
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
8月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
9月前
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
358 0

推荐镜像

更多
下一篇
开通oss服务