前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过http请求启动jenkins任务

通过http请求启动jenkins任务

作者头像
程序员欣宸
发布2019-05-30 20:16:51
2K0
发布2019-05-30 20:16:51
举报
文章被收录于专栏:实战docker

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

介绍

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

在这里插入图片描述
在这里插入图片描述

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

  1. 安装远程授权的插件"Build Authorization Token Root Plugin"
  2. 全局设置;
  3. 生成授权token;
  4. 将Jenkins任务设置成可以远程触发;
  5. 验证远程触发是否正常;

关于Jenkins的安装和设置

为了节省时间可以在Docker环境下搭建Jenkins,有关细节请参考《docker下的Jenkins安装和体验》

接下来,开始实战;

安装插件

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

  1. 如下图,“系统管理”->“插件管理”:
在这里插入图片描述
在这里插入图片描述
  1. 选中"Avaliable"这个Tab页,搜索插件"Build Authorization Token Root Plugin",然后安装,如下图:
在这里插入图片描述
在这里插入图片描述

设置

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

  1. 如下图,点击"系统管理"->“全局安全配置”:
在这里插入图片描述
在这里插入图片描述
  1. 如下图,取消勾选红框中的"Prevent Cross Site Request Forgery exploits"单选框:
在这里插入图片描述
在这里插入图片描述
  1. 如下图,勾选红框中的"Allow anonymous read access",这样可以远程查询任务状态:
在这里插入图片描述
在这里插入图片描述
  1. 点击页面底部的"保存"按钮;
  2. 如下图,点击右上角的用户名称进入用户设置页面,再点击红框3中的"Add new Token"按钮;
在这里插入图片描述
在这里插入图片描述
  1. 如下图,点击红框中的"Generate"按钮,会生成token:
在这里插入图片描述
在这里插入图片描述
  1. 如下图,红框中就是生成的token,此处保存下来,稍后会用到:
在这里插入图片描述
在这里插入图片描述

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

创建任务

  1. 创建一个自由风格的软件项目:
在这里插入图片描述
在这里插入图片描述
  1. 增加一个参数,字符串类型的,如下图所示:
在这里插入图片描述
在这里插入图片描述
  1. 如下图,Build Triggers的设置勾选第一个"Trigger builds remotely (e.g., from scripts)",红框2中填入前面生成的token:
在这里插入图片描述
在这里插入图片描述
  1. 本次任务的主要工作是在控制台输出脚本,如下图:
在这里插入图片描述
在这里插入图片描述
  1. 点击底部的"Save"按钮保存任务;

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

验证远程触发Jenkins任务

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

  1. Jenkins服务器的IP地址是192.168.1.103,因此整个url地址就是:http://192.168.1.103:8080/buildByToken/buildWithParameters
  2. 请求类型是POST,请求参数有四个,如下列表所示:

参数名

参数值

说明

job

hello-world

Jenkins上创建的任务名

token

11ccef68782a94c7f393a1bc2247523de2

前面生成的token,远程验证使用

userName

Tom

任务中增加的业务参数

cause

123456

这个参数在查询任务详情的时候可以查到

  1. 上述所有参数,在postman上填写的效果如下图所示,注意要选中红框中的tab页填写参数:
在这里插入图片描述
在这里插入图片描述
  1. 在postman页面上点击"Send"按钮发起请求,收到的响应没有body,只有header,返回码是201表示成功,如下图所示:
在这里插入图片描述
在这里插入图片描述
  1. 此时去Jenkins页面上看看,任务已经被触发,并且输出的脚本中把userName参数也成功打印了,如下图:
在这里插入图片描述
在这里插入图片描述

查询任务

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

  1. 如下图,发起GET请求,获取所有构建情况,红框中就是每次任务的id,请求请求地址是:http://192.168.1.103:8080/job/hello-world/api/json
在这里插入图片描述
在这里插入图片描述
  1. 上面已经得到了四个任务ID:1、2、3、4,接下来发四次请求查询每个任务的详情,查询4号任务的地址是:http://192.168.1.103:8080/job/hello-world/4/api/json,得到的结果如下图所示:
在这里插入图片描述
在这里插入图片描述

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年12月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 关于Jenkins的安装和设置
  • 安装插件
  • 设置
  • 创建任务
  • 验证远程触发Jenkins任务
  • 查询任务
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档