使用Python操作Jenkins(创建,构建,获取Job日志和报告)
模块安装
pip install python-jenkins
使用前准备
首先要获取Jenkins的授权令牌,这样Python才能拿到访问权(自行百度怎么获取)
模块使用方法
1. 初始化Jenkins连接
jk= jenkins.Jenkins(url=Jenkins地址, username=用户名, password=授权令牌)
2. Job基本操作
2.1 创建Job
创建有2种方式,可以创建一个新的,也可以基于已有的Job模板创建
我这里使用Job模板创建
xml= jk.get_job_config(模板job名称)获取模板配置文件jk.create_job(name=新的job名称, config_xml=xml)
2.2 构建Job
构建有2种方式:
普通构建
jk.build_job(name=构建的job名称)
参数化构建
jk.build_job(name=构建的job名称, parameters=构建的参数,字典类型)
2.3 停止一个正在运行的Job
jk.stop_build(job名称,构建编号ID)
2.4 激活Job状态为可以构建
jk.enable_job(job名称)
2.5 变更Job状态为不可以构建
jk.disable_job(job名称)
2.6 删除Job
jk.delete_job(job名称)
3. 获取Job信息
3.1 获取Job的初始配置参数
就是Job的Build with Parameters内容
result = []
for each in jk.get_job_info(job名称)[property]:
if ParametersDefinitionProperty in each[_class]:
data = each[parameterDefinitions]
for params in data:
temp_dict = dict()
temp_dict[name] = params[defaultParameterValue][name]
temp_dict[value] = params[defaultParameterValue][value]
temp_dict[description] = params[description]
result.append(temp_dict)
print(result)
3.2 获取Job任务状态
获取流程:先获取到构建编号,再通过构建编号获取任务状态
这里我们一般是获取最后一次构建的任务状态,所以要先获取到最后一次构建的编号:
last_build_number = jk.get_job_info(job名称)[lastBuild][number]
通过构建编号获取任务状态:
status= jk.get_build_info(job名称, last_build_number)[result]print(status) 状态有4种:SUCCESS|FAILURE|ABORTED|pending
3.3 获取Job控制台日志
通过构建编号获取控制台日志:
result = jk.get_build_console_output(name=job名称, number=last_build_number)print(result)
3.4 获取Job测试报告
通过构建编号获取测试报告:
result = jk.get_build_test_report(name=job名称, number=last_build_number)print(result)
-
上一篇
集成的亮点
DevOps 与 Jenkins 集成紧密且优雅,从构建、部署到使用维护纯云原生方式实现:
一键部署;
一个参数启用 DevOps 功能;
一个 K8s 集群内即可完成从 Jenkins、流水线的全生命周期。
具体集成说明
用户使用 KubeSphere 平台的 DevOps 功能时,调用 devops-api 发送请求,DevOps 收到请求后,部分请求直接调用 jenkins 进行操作,部分请求通过更新 devops-controller 监听的资源,通过 devops-controller 来操作 Jenkins。
运行流水线阶段,Jenkins 配置了 K8s 动态 slave:
Jenkins pod 信息(镜像、卷等)发送给 K8s;
K8s 启动 Jenkins slave pod 并通过远程协议与 Jenkins master 建立连接;
运行流水线;
运行完毕之后根据设置删除/保留创建的 pod。
Jenkins 镜像构建
Jenkins 本身是一个 Java 应用,当前也没有提供官方的云原生方案,KubeSphere 通过下面几个项目定制了自己的镜像:
custom-war-packager[3]定制自己的 Jenkins 并生成 Docker 镜像或者 war 镜像;
formulas[4]通过 formula.yaml 定制自己的 Jenkins,针对中国区优化;
ks-jenkins[5]定制了 KubeSphere 自己的 Jenkins 镜像 使用了 jcli 集成了 cwp。
ks-devops 项目中的 formulas 安装了所有需要的 Jenkins 插件主要有
Blue Ocean 提供了 Jenkins 的 restful API;
kubernetes[6]提供了动态 slave 能力;
kubesphere-token-auth[7]集成 KubeSphere 权限体系;
其他。
Jenkins 与 DevOps 的部署
ks-installer(Ansible) 生成环境变量,主要有:
要不要使用 ksauth;
生成 ksauth 使用的密码;
主要环境变量在 https://github.com/kubesphere/ks-installer/blob/master/roles/ks-devops/templates/ks-devops-values.yaml.j2 ;
helm 部署 DevOps 和Jenkins helm 项目[8]。
ks-devops-helm-chart:
这个项目里面主要有三个 chart。
DevOps
部署 devops-apiserver 和 devops-controller。
KubeSphere与Jenkins的集成解析
-
下一篇
项目地址:https://inedo.com/buildmaster
Jenkins是目前最常用的持续集成工具,拥有近50%的市场份额,它还是很多技术团队的第一个使用的自动化工具。但是随着自动化领域的持续发展,Jenkins值得推荐的13个Jenkins替代方案