# 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的更多相关文章

  1. 关于《selenium2自动测试实战--基于Python语言》

    关于本书的类型: 首先在我看来技术书分为两类,一类是“思想”,一类是“操作手册”. 对于思想类的书,一般作者有很多年经验积累,这类书需要细读与品位.高手读了会深有体会,豁然开朗.新手读了不止所云,甚至 ...

  2. 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码

    Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...

  3. [Python学习笔记1]Python语言基础 数学运算符 字符串 列表

    这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档: ...

  4. 如何系统地自学一门Python 语言(转)

    转自:http://www.phpxs.com/post/4521 零基础情况下,学一门语言充实下自己,Python,简洁.优美.容易使用,是一个很好的选择.那么如何系统地自学Python呢? 有的人 ...

  5. 用python语言讲解数据结构与算法

    写在前面的话:关于数据结构与算法讲解的书籍很多,但是用python语言去实现的不是很多,最近有幸看到一本这样的书籍,由Brad Miller and David Ranum编写的<Problem ...

  6. 《Selenium2自动化测试实战--基于Python语言》 --即将面市

    发展历程: <selenium_webdriver(python)第一版>   将本博客中的这个系列整理为pdf文档,免费. <selenium_webdriver(python)第 ...

  7. Python语言and-or的用法

    [原]python语言的 and-or 常常被用来实现类C语言中的三元运算符 : ?   , 更为骚气的写法是  xxx and xxx or xxx and xxx or xxx,这样就可以可以做到 ...

  8. python语言的优点和缺点

    python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路. 龟叔给Python的定位是"优雅"."明确"."简单&qu ...

  9. python语言switch-case

    初学python语言,竟然很久才发现python没有switch-case语句,查看官方文档说是可以用if-elseif-elseif....代替. 讲真,这都不是问题.不就是一个条件判断吗.用if- ...

随机推荐

  1. keil5破解

    没有破解之前的keil只能编译限制大小的代码,72K好像我忘了?太长的话会报错. 注册机网址:http://bbs.armfly.com/read.php?tid=2346 1.在keil5左上角的F ...

  2. **利用列表和super实现有序字典

    class MyDict(dict): def __init__(self): self.temp_list = [] super(MyDict,self).__init__() def __seti ...

  3. Embarcadero RAD Studio 2016 Product Approach and Roadmap

    delphi  2016 路线图 http://community.embarcadero.com/article/news/16211-embarcadero-rad-studio-2016-pro ...

  4. Docker remote api 开启

    https://www.cnblogs.com/520playboy/p/7921633.html ExecStart=/usr/bin/dockerd-current -H unix:///var/ ...

  5. objective-C中的"非正式协议"和“正式协议”

    objective-C中的接口与泛型 先承认我是标题党,因为在obj-c的世界中,官方根本没有"接口"与"泛型"这样的说法. 不过在obj-c中有二个与之接近的 ...

  6. Spring IOC的配置使用

    1.1.1 XML配置的结构一般配置文件结构如下: <beans> <import resource=”resource1.xml” /> <bean id=”bean1 ...

  7. jsp get 乱码

    String str=request.getParameter("name");str=new String(str.getBytes("iso8859-1") ...

  8. apply-register-acl 参数允许FreeSWITCH分机注册/拨打不验证密码

    今天调试 发现 注册的分机 的 `Auth-User` 居然是 `unknown` !!! 怎么回事? 仔细对比检查 发现, internal profile 指定了 `apply-register- ...

  9. Python基础:面向对象基础(二) 继承

    子类在继承的时候,在定义类时,小括号()中为父类的名字,父类的属性.方法,会被继承给子类,Python中允许多继承. 多继承 # 父类 Master class Master(object): def ...

  10. out.write(b,0,len)怎么解释?

    参数 缓冲区——要写的数据 从——开始偏移量数据 len——写的字节数 返回值 这个方法不返回一个值. 异常 IOException