[Python]python-jenkins 启动需要参数的job
需求:
我要用python通过api,启动这个job,并且启动这个job需要1个参数
安装依赖:
pipenv install python-jenkins
熟悉API的使用方法:
了解一个API的最好办法,就是先看它的 官方文档,
从中找到自己需要的方法 ,弄明白要给方法传什么参,参数类型,返回值类型
然后再做一个小demo,验证自己的想法,顺便也能熟悉一下这个api
我从官方文档中找到下面这2个方法,正是我需要的: build_job用来启动job, get_build_console_output用来获取job的构建日志
build_job
(name, parameters=None, token=None)
Trigger build job.
This method returns a queue item number that you can pass to Jenkins.get_queue_item()
. Note that this queue number is only valid for about five minutes after the job completes, so you should get/poll the queue information as soon as possible to determine the job’s URL.
Parameters: |
|
---|---|
Returns: |
|
get_build_console_output
(name, number)
Get build console text.
Parameters: |
|
---|---|
Returns: |
Build console output, |
创建测试工程:
接下来创建1个测试job,验证自己的想法
启动该job,需要传递1个字符型参数,参数名是Para1,默认值是:参数1
在shell中打印Para1的参数值:
代码示例:
import jenkins #定义远程的jenkins master server 的url以及Port jenkins_server_url = 'http://10.2.1.92:8080/jenkins/' #定义用户的userid 和 apitoken(在jenkins中生成) user_id = 'admin' api_token = '11d8c79994b1e6d554c857b1d96fcf4dfe' #测试服务器 #实例化jenkins对象,连接远程的jenkins master server server = jenkins.Jenkins(jenkins_server_url,username=user_id,password=api_token) print(server) name ='pubTest1' parameters={'Para1':'Python启动带参数的job'} #dict类型
#构建job(带参数) server.build_job(name,parameters)
构建结果:
这样就通过 python启动了带参数的job
接下来,通过get_build_console_output方法 打印job的构建日志
#获取job的最后次构建号 lastbuildNumber=server.get_job_info(name)['lastBuild']['number'] #输出构建日志 log=server.get_build_console_output(name,lastbuildNumber)
print(log)
结果如下:
由用户 admin 启动
构建中 在工作空间 /root/.jenkins/workspace/pubTest1 中
[pubTest1] $ /bin/sh -xe /usr/local/tomcat/apache-tomcat-8.5.40/temp/jenkins3208269061259629186.sh
+ echo Python启动带参数的job
Python启动带参数的job
Finished: SUCCESS
关于如何获取jenkins token和user_id可参考前文:通过jenkins-Python在后台操作Jenkins构建job
原文地址:https://www.cnblogs.com/kaerxifa/p/12004631.html
- PostgreSQL主备环境搭建
- Tomcat集群session复制与Oracle的坑。。
- 用Keras+TensorFlow,实现ImageNet数据集日常对象的识别
- JavaWeb项目架构之Elasticsearch日志处理系统
- 分布式服务防雪崩熔断器,Hystrix理论+实战。
- JavaWeb项目架构之Kafka分布式日志队列
- 如何让Git记住用户名和密码
- 金融系统中正确的金额计算及存储方式
- 如何利用深度学习写诗歌(使用Python进行文本生成)
- 注意:字符串substring方法在jkd6,7,8中的差异。
- JavaWeb项目架构之NFS文件服务器
- 轻松几步搞定SSH连接Git配置
- 免费使用谷歌GPU资源训练自己的深度模型
- Git安装及配置5分钟快速教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 排障集锦:九九八十一难之第二十难!-----使用jenkins镜像出现的问题Can not write to /var/jenkins_home/copy_reference_file.log.
- 人生苦短,我用k8s--------------secret和configmap的配置管理
- Go Colly抓取豆瓣电影Top250
- knative client 使用knative client 使用
- Java_web 学习1 Maven安装和使用2 mybatis的配置文件的详解mybatis缓冲mybatis注解延迟加载${} 与 #{} 区别【笔试题】
- Python3 的面向对象
- 【JVM】Int类型在栈中是否会被缓存?
- Python 【os.path()模块解析】
- Pythonic【15个代码示例】
- Django REST framwork的权限验证实例
- Python任务调度利器之APScheduler详解
- Django Admin后台添加数据库视图过程解析
- Python 线性回归分析以及评价指标详解
- Python实现从N个数中找到最大的K个数
- .NET开源工具类库-Masuit.Tools