python语言的jenkinapi
# coding:utf-8 from jenkinsapi.jenkins import Jenkins # 实例化Jenkins对象,传入地址+账号+密码
j = Jenkins("http://127.0.0.1:8080", username='chen', password='chen') # 获取所有的job名称
print j.keys()
# 获取pipeline_test这个job最后一次构建成功的构建编号
print j['pipeline_test'].get_last_good_build()
# 获取Jenkins运行的地址
print j.base_server_url()
打印如下
['pipeline_test']
pipeline_test #6
http://127.0.0.1:8080
启动构建
j.build_job('pipeline_test')
提示:
Traceback (most recent call last):
File "E:/guchen/jenkin_api/jenkins_api.py", line 18, in <module>
j.build_job('pipeline_test')
File "E:\guchen\venv\lib\site-packages\jenkinsapi\jenkins.py", line 174, in build_job
self[jobname].invoke(build_params=params or {})
File "E:\guchen\venv\lib\site-packages\jenkinsapi\job.py", line 209, in invoke
allow_redirects=False
File "E:\guchen\venv\lib\site-packages\jenkinsapi\utils\requester.py", line 158, in post_and_confirm_status
response.text.encode('UTF-8')
jenkinsapi.custom_exceptions.JenkinsAPIException: Operation failed. url=http://127.0.0.1:8080/job/pipeline_test/build, data={'json': '{"redirectTo": ".", "parameter": [], "statusCode": "303"}'}, headers={'Content-Type': 'application/x-www-form-urlencoded'}, status=403, text=<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 403 No valid crumb was included in the request</title>
</head>
<body><h2>HTTP ERROR 403</h2>
<p>Problem accessing /job/pipeline_test/build. Reason:
<pre> No valid crumb was included in the request</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/> </body>
</html>
打开对应的:url=http://127.0.0.1:8080/job/pipeline_test/build

提示说必须使用post请求触发构建。
单击Proceed按钮,F12抓取一下通信:

发现这个请求确实需要post方式,而且需要传参数:'Jenkins-Crumb': '2461db55f9ead818bd4ef801ac566bb5', 'json': {'Jenkins-Crumb': '2461db55f9ead818bd4ef801ac566bb5'}
那我们就用代码先get请求一下,再post请求一下看能不能构建成功
requests.get('http://127.0.0.1:8080/job/pipeline_test/build')
payload = {
'Jenkins-Crumb': '2461db55f9ead818bd4ef801ac566bb5',
'json': {'Jenkins-Crumb': '2461db55f9ead818bd4ef801ac566bb5'}
}
requests.get('http://127.0.0.1:8080/job/pipeline_test/build')
requests.post('http://127.0.0.1:8080/job/pipeline_test/build', payload)
刚开始还可以,写博客时又不行了!!!懵了
python语言的jenkinapi的更多相关文章
- 关于《selenium2自动测试实战--基于Python语言》
关于本书的类型: 首先在我看来技术书分为两类,一类是“思想”,一类是“操作手册”. 对于思想类的书,一般作者有很多年经验积累,这类书需要细读与品位.高手读了会深有体会,豁然开朗.新手读了不止所云,甚至 ...
- 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码
Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...
- [Python学习笔记1]Python语言基础 数学运算符 字符串 列表
这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...
- 如何系统地自学一门Python 语言(转)
转自:http://www.phpxs.com/post/4521 零基础情况下,学一门语言充实下自己,Python,简洁.优美.容易使用,是一个很好的选择.那么如何系统地自学Python呢? 有的人 ...
- 用python语言讲解数据结构与算法
写在前面的话:关于数据结构与算法讲解的书籍很多,但是用python语言去实现的不是很多,最近有幸看到一本这样的书籍,由Brad Miller and David Ranum编写的<Problem ...
- 《Selenium2自动化测试实战--基于Python语言》 --即将面市
发展历程: <selenium_webdriver(python)第一版> 将本博客中的这个系列整理为pdf文档,免费. <selenium_webdriver(python)第 ...
- Python语言and-or的用法
[原]python语言的 and-or 常常被用来实现类C语言中的三元运算符 : ? , 更为骚气的写法是 xxx and xxx or xxx and xxx or xxx,这样就可以可以做到 ...
- python语言的优点和缺点
python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路. 龟叔给Python的定位是"优雅"."明确"."简单&qu ...
- python语言switch-case
初学python语言,竟然很久才发现python没有switch-case语句,查看官方文档说是可以用if-elseif-elseif....代替. 讲真,这都不是问题.不就是一个条件判断吗.用if- ...
随机推荐
- Spring实战之通过XML装配bean
尽管Spring长期以来确实与XML有着关联,但现在需要明确的是,XML不再是配置Spring的唯一可选方案.Spring现在有了强大的自动化配置和基于Java的配置,XML不应该再是你的第一选择了. ...
- JavaScript字符串转换日期
JavaScript字符串转换日期 方法1:function strToDate(str){ var val=Date.parse(str); var newDate=new Date(val ...
- nginx的location和rewrite
1 Nginx rewrite基本语法 Nginx的rewrite语法其实很简单.用到的指令无非是这几个 set if return break rewrite 麻雀虽小,可御可萝五脏俱全.只是简单的 ...
- flutter container image FittedBox AspectRatio
当container指定了大小时,里面放入图片后,图片是居中自适应的,根据图片的大小,垂直居中或者水平居中.因为Image的默认自适应就是Contain, BoxFit.Contain 如果conta ...
- Redis作为缓存服务器
1.ICache的Redis实现没有放在'Framework.Cache/Logic'中.如果是以前,我会认为这样不好.我会这样做,'Framework.Cache'项目引用Redis项目或直接从Nu ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十周
---恢复内容开始--- Java学习第十周 本周,学习泛型程序设计,泛型也被称为参数化类型(parameterized type),就是在定义类.接口和方法时,通过类型参数指示将要处理的 ...
- JAVA中Colllection的基本功能
Collection中的add方法: 代码: public static void main(String[] args) { // TODO Auto-generated method ...
- redis入门资源收集汇总
redis安装:http://www.redis.io/download redis命令测试平台:http://try.redis.io/ redis桌面管理工具:http://redisdeskto ...
- Spark internal - 多样化的运行模式(上)
Spark的运行模式多种多样,在单机上既可以以本地模式运行,也可以以伪分布式模式运行.而当以分布式的方式运行在Cluster集群中时,底层的资源调度可以使用Mesos 或者是Hadoop Yarn , ...
- 142. Linked List Cycle II (List; Two-Pointers)
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...