zoukankan      html  css  js  c++  java
  • 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:guchenvenvlibsite-packagesjenkinsapijenkins.py", line 174, in build_job
        self[jobname].invoke(build_params=params or {})
      File "E:guchenvenvlibsite-packagesjenkinsapijob.py", line 209, in invoke
        allow_redirects=False
      File "E:guchenvenvlibsite-packagesjenkinsapiutils
    equester.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)

    刚开始还可以,写博客时又不行了!!!懵了

  • 相关阅读:
    Java中的位运算符
    华为2019年NE40E-X8,承诺命令
    华为网络设备修改console密码
    MySQL5.7 多实例
    华为防火墙域间策略全开命令
    Linux基础命令---ntpstat显示时间服务器同步
    【转载】Java程序模拟公安局人员管理系统
    redis cluster集群动态伸缩--删除主从节点
    DBUtils的使用之查询的操作
    服务治理-Resilience4j(限流)
  • 原文地址:https://www.cnblogs.com/gcgc/p/10184666.html
Copyright © 2011-2022 走看看