前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python操作jenkins初探

python操作jenkins初探

作者头像
测试加
发布2022-06-21 16:19:19
2.8K0
发布2022-06-21 16:19:19
举报

前言

最近在工作中需要用到在后端代码中触发Jenkins任务的构建,于是想到Jenkins是否有一些已经封装好的API类库提供,用于处理跟Jenkins相关的操作。

由于我们的后端项目是基于python开发的,所以需要python能调用的类库。经过一些调研锁定了"python-jenkins"这个类库。

本文会介绍,"python-jenkins"的一些基础操作,这些操作基本上能满足工作中绝大使用场景。

介绍

python-jenkins是Jenkins REST API的Python包装器,旨在提供一种更传统的Python 方式来控制Jenkins服务器。它提供了一个更高级别的 API,其中包含许多便利功能。

  • 创造新job
  • 复制现有job
  • 删除job
  • 更新job
  • 获取job的构建信息
  • 在工作上开始构建
  • 创建节点

在日常使用中,python-jenkins能满足所有调用jenkins的操作的需求,只有对API使用方法熟练使用,基本上10分钟就能上手使用。

推荐几个实用的文档,使用过程中可以查询使用。

代码仓库: https://github.com/openstack-archive/python-jenkins

官网: https://pypi.python.org/pypi/python-jenkins/

Doc: http://python-jenkins.readthedocs.io/en/latest/index.html

安装

推荐使用pip命令行安装,出现如下图说明安装成功。

代码语言:javascript
复制
sudo pip install python-jenkins

常用操作

构建job

创建jenkins连接

需要定义远程的jenkins master server的url以及port。 jenkins的账号和密码,用于连接jenkins服务器。

代码如下:

代码语言:javascript
复制
# 定义远程的jenkins master server的url,以及port
jenkins_server_url = 'http://106.75.xxx.xxx:8080/'
# 定义用户的User Id 和 API Token,获取方式同上文
user_id = 'admin'
api_token = 'xxxxx'
# 实例化jenkins对象,连接远程的jenkins master server
server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=api_token)
print(server.get_whoami())

创建jenkins后,返回jenkins实例,通过server就可以调用任何API方法。

构建job(不带构建参数)

不带构建参数的job,本身这个job在配置的时候,不需要任何构建参数,直接点构建即可。

代码如下:

代码语言:javascript
复制
server.build_job(name='android_dev')
构建job(带构建参数)

带构建参数,这个job在配置的时候,会配置需要的构建参数,如下图:

代码如下:

代码语言:javascript
复制
param_dict = {"name": "mike"}
server.build_job(name='android_dev_parameters', parameters=param_dict)

如构建成功,查看控制台输出,能看到代码中传递的参数"mike"。

创建job

创建自由风格的job

jenkins中比较常用的job是自由风格的job,特点是job配置可以使用shell脚本执行一些参数。

需要唯一的job名称,如果已存在的job会报错。

还需要配置文件模版,提供字符串模版,如下图:

代码如下:

代码语言:javascript
复制
print(server.create_job(name='android_dev_temp', config_xml=Jenkins_TEMP))

创建pipeline的job 

在jenkins2.x开始流行pipeline的写法,以代码的方式来进行job的构建。

从使用上其实和普通job配置,没什么太大区别。

pipeline的配置模版如下图:

代码如下:

代码语言:javascript
复制
print(server.create_job(name='android_dev_temp_pipeline', config_xml=pipelineBuildTemp))

查询job

获取job信息

查询job信息的名字必须是存在的,如果不存在会报错。

代码如下:

代码语言:javascript
复制
print(server.get_job_info(name='android_dev_parameters'))

查询出来的信息,包含了描述、任务状态、构建节点等信息。

获取job的最后次构建号

在构建完成任务后,不会返回构建号,所以需要执行获取job的最后次构建号的方法。

通过get_job_info方法的返回数据结构中可以拿到最后次构建号。

代码如下:

代码语言:javascript
复制
#获取job名为job_name的job的最后次构建号
print(server.get_job_info(name='android_dev_parameters')['lastBuild']['number'])

输出: 3
获取job的某次构建的执行结果状态

代码如下:

代码语言:javascript
复制
#获取job名为job_name的job的某次构建的执行结果状态
build_number = server.get_job_info(name='android_dev_parameters')['lastBuild']['number']
print(server.get_build_info(name='android_dev_parameters', number=build_number)['result'])

结果状态有几种状态:

  • 构建成功:SUCCESS
  • 构建失败:FAILURE
  • 构建中:None
获取job的某次构建是否还在构建中

代码如下:

代码语言:javascript
复制
print(server.get_build_info(name='android_dev_parameters',number=build_number)['building'])

构建状态有几种状态:

  • 构建中: True  
  • 非构建中: False  
获取job的构建日志

代码如下:

代码语言:javascript
复制
print(server.get_build_console_output(name="auto_blog", number=14))

结语

在之前的项目中,我们会把接口自动化测试、性能压测脚本配置在jenkins服务器上,后端服务的业务逻辑中会动态创建job、构建job、查看构建日志等。

python-jenkins的出现极大了提高的操作jenkins的便捷性,希望大家工作中能用到~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试加 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 介绍
  • 安装
  • 常用操作
    • 构建job
      • 创建jenkins连接
      • 构建job(不带构建参数)
      • 构建job(带构建参数)
    • 创建job
      • 创建自由风格的job
    • 创建pipeline的job 
      • 查询job
        • 获取job信息
        • 获取job的最后次构建号
        • 获取job的某次构建的执行结果状态
        • 获取job的某次构建是否还在构建中
        • 获取job的构建日志
    • 结语
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档