Jenkins基础:API:1:使用方式简介

Jenkins提供了远程访问应用编程接口(Remote Access API)的方式来对于Job等进行控制。这篇文章整理一下常见的使用方式。

应用场景

为什么需要使用API方式进行Job的创建?自然是有很多原因的,比如:

  • 需要创建的Jenkins的Job非常之多,大多又呈现有规律的方式,所以Job的创建成为了一个繁琐而又需要频繁操作的任务。这种场景下,使用API结合脚本进行自动化可以提高效率,降低手工错误的几率。
  • 如果需要动态的生成Jenkins的Job,比如需要根据一定的中间结果在某个触发点进行自动生成,再比如生成的Job需要使用的参数也是动态运行阶段才能取到的值的场景下,事前手工创建Jenkins就不太可行了。
  • 产品或者相关的功能,不希望用户直接使用Jenkins,而将Jenkins作为背后的执行引擎的场景,这种情况下自然也是使用API进行Job的创建更为妥切。

API使用方式

Jenkins在设计的时候就考虑到了Restful的API的实现,可以通过如下三种方式对Jenkins中的对象进行访问控制以达到相关的目的

xml方式

可以使用xml方式进行API的使用,这种方式的优势在于可以使用强大的xpath特性进行相关的访问控制。

JSON方式

使用JSON方式进行操作,因为json基本上已经是应用之间数据交换的准标准格式之一,这种方式比较方便Javascript或者和其他应用的集成。

python方式

可以通过python-jenkins库对Jenkins进行控制操作。此库对Jenkins的API进行了进一步的包装,使用起来更加方便,但是一般需要安装python-jenkins,并通过python脚本的执行来达到集成的方式。可以较为方便的实现如下功能:

  • 创建新Job
  • 拷贝既存Job
  • 删除Job
  • 更新Job
  • 获得Job的构建信息
  • 获取执行中的构建信息
  • 删除构建
  • 清除Job的工作目录
  • 设定构建序号(实际是通过Next Build Number 插件来实现)

所以可以看到常见对于Job和构建操作的需求大多已被包含,除此之外,还能做到如下的一些对于Jenkins的操作,所以对于权限的控制显得非常重要。

  • 获得Master的版本信息
  • 获得插件信息
  • 创建节点
  • 启用/禁用节点
  • 获取节点信息
  • 创建/删除/重新配置视图
  • 设定Jenkins的静默关闭模式

更加具体的功能可以参看如下链接的说明:

这种方式功能较为强大,依赖也非常明显。

  • 首先它是python库,需要python的运行环境支持(当然普通的linux一般都内嵌此环境)。
  • 其次它需要手动安装,比如需要通过执行pip install python-jenkins进行安装,所以pip也需要进行安装。
  • 再者,实际非python的应用中,完成此功能也需要通过执行python的脚本来完成相应的功能。

API功能

从上述对于python-jenkins的介绍中可以看到,通过API可以实现如下功能:

  • 创建或者复制job
  • 进行job的构建
  • 获取Job相关信息
  • 进行Job的删除
  • 停止正在构建的Job

在实际的实践中,对于Jenkins Job的增删改查操作以及执行构建或取消构建等常见操作均可实现,至于需要使用哪种方式,开发者则需要根据自己的情况进行选择。

使用方式与示例

常见操作的URI

操作HTTP动作URI使用示例
创建JobPOST/createItem/createItem?name=Job名称
拷贝JobPOST/createItem/createItem?name=Job名称&mode=copy&from=源Job名称
起用JobPOST/job/job名称/enable/job/job名称/enable
禁用JobPOST/job/job名称/disable/job/job名称/disable
删除JobPOST/job/job名称/doDelete/job/job名称/doDelete
获取Job描述信息GET/job/job名称/description/job/job名称/description
更新Job描述信息POST/job/job名称/description/job/job名称/description
执行JobPOST/job/job名称/build/job/job名称/build
获取Job的API信息GET/job/job名称/api/job/job名称/api
停止执行中的JobPOS/job/Job名称/构建序号/stop/job/Job名称/构建序号/stop
停止尚未执行的JobPOS/queue/cancelItem?id=队列等待序号/queue/cancelItem?id=队列等待序号

返回信息格式

返回信息可以指定为xml/json/python方式,以/api为例,使用方式如下所示。

xml格式返回api信息示例:/api/xml

json格式返回api信息示例:/api/json

python格式返回api信息示例:/api/python

认证方式

如果相关的操作,比如创建Job需要相应的用户权限才能执行的情况下,通过API执行此操作自然也需要进行设定。Jenkins的API支持如下两种方式进行认证:

用户名 + 用户密码

以curl客户端访问为例,通过如下方式进行相关的用户认证

curl -u 用户名:用户密码 http://Jenkins服务的URL/具体操作的URI

用户名 + Token信息

以curl客户端访问为例,通过如下方式进行相关的用户认证

curl -u 用户名:用户Token http://Jenkins服务的URL/具体操作的URI

注:此处使用的Token为在Jenkins中可以查询到的(用户的配置页面可以查询到的API Token即为此处认证所使用的信息,而Token的修改也可以在此页面通过点击Change API Token按钮来进行)
在这里插入图片描述

参考内容

https://wiki.jenkins.io/display/JENKINS/Remote+access+API

淼叔 CSDN认证博客专家 神经网络 TensorFlow NLP
资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页