Python获取Jenkins编译信息

1、安装python-jenkins插件

python中有python-jenkins插件,用来实现python和Jenkins交付。

使用如下命令,安装python-jenkins

pip3 install python-jenkins

 2、python连接Jenkins

python中通过jenkins模块连接Jenkins。代码如下

# Jenkins指定job的名字
job_name = "api_test"

# jenkins登录
jk = jenkins.Jenkins(url='xxx', username='xxx', password='xxx')

其中:

url:Jenkins的网址链接

username:登录Jenkins的用户名

password:该用户的密码

        如果Jenkins的网站是https的方式,那么连接过程中会有证书认证。如果Jenkins的证书是自签的,那么连接可能失败。

可以在连接Jenkins之前,增加如下代码,不认证证书

import os
os.environ['PYTHONHTTPSVERIFY] = '0'

3、获取job信息

获取job的信息,使用get_job_info方法,该方法会返回job的相关信息

代码如下:

# 获取job信息
job_info = jk.get_job_info(job_name)
print(job_info)

返回job信息如下:

{
    "_class":"hudson.model.FreeStyleProject",
    "actions":[
        {

        },
        {

        },
        {

        },
        {

        },
        {
            "_class":"org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction"
        },
        {
            "_class":"com.cloudbees.plugins.credentials.ViewCredentialsAction"
        }
    ],
    "description":"",
    "displayName":"api_test",
    "displayNameOrNull":null,
    "fullDisplayName":"api_test",
    "fullName":"api_test",
    "name":"api_test",
    "url":"http://localhost:8080/job/api_test/",
    "buildable":true,
    "builds":[
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":60,
            "url":"http://localhost:8080/job/api_test/60/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":59,
            "url":"http://localhost:8080/job/api_test/59/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":58,
            "url":"http://localhost:8080/job/api_test/58/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":57,
            "url":"http://localhost:8080/job/api_test/57/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":56,
            "url":"http://localhost:8080/job/api_test/56/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":55,
            "url":"http://localhost:8080/job/api_test/55/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":54,
            "url":"http://localhost:8080/job/api_test/54/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":53,
            "url":"http://localhost:8080/job/api_test/53/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":52,
            "url":"http://localhost:8080/job/api_test/52/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":51,
            "url":"http://localhost:8080/job/api_test/51/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":50,
            "url":"http://localhost:8080/job/api_test/50/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":49,
            "url":"http://localhost:8080/job/api_test/49/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":48,
            "url":"http://localhost:8080/job/api_test/48/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":47,
            "url":"http://localhost:8080/job/api_test/47/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":46,
            "url":"http://localhost:8080/job/api_test/46/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":45,
            "url":"http://localhost:8080/job/api_test/45/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":44,
            "url":"http://localhost:8080/job/api_test/44/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":43,
            "url":"http://localhost:8080/job/api_test/43/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":42,
            "url":"http://localhost:8080/job/api_test/42/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":41,
            "url":"http://localhost:8080/job/api_test/41/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":40,
            "url":"http://localhost:8080/job/api_test/40/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":39,
            "url":"http://localhost:8080/job/api_test/39/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":38,
            "url":"http://localhost:8080/job/api_test/38/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":37,
            "url":"http://localhost:8080/job/api_test/37/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":36,
            "url":"http://localhost:8080/job/api_test/36/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":35,
            "url":"http://localhost:8080/job/api_test/35/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":34,
            "url":"http://localhost:8080/job/api_test/34/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":33,
            "url":"http://localhost:8080/job/api_test/33/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":32,
            "url":"http://localhost:8080/job/api_test/32/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":31,
            "url":"http://localhost:8080/job/api_test/31/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":30,
            "url":"http://localhost:8080/job/api_test/30/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":29,
            "url":"http://localhost:8080/job/api_test/29/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":28,
            "url":"http://localhost:8080/job/api_test/28/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":27,
            "url":"http://localhost:8080/job/api_test/27/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":26,
            "url":"http://localhost:8080/job/api_test/26/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":25,
            "url":"http://localhost:8080/job/api_test/25/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":24,
            "url":"http://localhost:8080/job/api_test/24/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":23,
            "url":"http://localhost:8080/job/api_test/23/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":22,
            "url":"http://localhost:8080/job/api_test/22/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":21,
            "url":"http://localhost:8080/job/api_test/21/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":20,
            "url":"http://localhost:8080/job/api_test/20/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":19,
            "url":"http://localhost:8080/job/api_test/19/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":18,
            "url":"http://localhost:8080/job/api_test/18/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":17,
            "url":"http://localhost:8080/job/api_test/17/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":16,
            "url":"http://localhost:8080/job/api_test/16/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":15,
            "url":"http://localhost:8080/job/api_test/15/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":14,
            "url":"http://localhost:8080/job/api_test/14/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":13,
            "url":"http://localhost:8080/job/api_test/13/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":12,
            "url":"http://localhost:8080/job/api_test/12/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":11,
            "url":"http://localhost:8080/job/api_test/11/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":10,
            "url":"http://localhost:8080/job/api_test/10/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":9,
            "url":"http://localhost:8080/job/api_test/9/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":8,
            "url":"http://localhost:8080/job/api_test/8/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":7,
            "url":"http://localhost:8080/job/api_test/7/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":6,
            "url":"http://localhost:8080/job/api_test/6/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":5,
            "url":"http://localhost:8080/job/api_test/5/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":4,
            "url":"http://localhost:8080/job/api_test/4/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":3,
            "url":"http://localhost:8080/job/api_test/3/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":2,
            "url":"http://localhost:8080/job/api_test/2/"
        },
        {
            "_class":"hudson.model.FreeStyleBuild",
            "number":1,
            "url":"http://localhost:8080/job/api_test/1/"
        }
    ],
    "color":"blue",
    "firstBuild":{
        "_class":"hudson.model.FreeStyleBuild",
        "number":1,
        "url":"http://localhost:8080/job/api_test/1/"
    },
    "healthReport":[
        {
            "description":"Build stability: No recent builds failed.",
            "iconClassName":"icon-health-80plus",
            "iconUrl":"health-80plus.png",
            "score":100
        }
    ],
    "inQueue":false,
    "keepDependencies":false,
    "lastBuild":{
        "_class":"hudson.model.FreeStyleBuild",
        "number":60,
        "url":"http://localhost:8080/job/api_test/60/"
    },
    "lastCompletedBuild":{
        "_class":"hudson.model.FreeStyleBuild",
        "number":60,
        "url":"http://localhost:8080/job/api_test/60/"
    },
    "lastFailedBuild":{
        "_class":"hudson.model.FreeStyleBuild",
        "number":44,
        "url":"http://localhost:8080/job/api_test/44/"
    },
    "lastStableBuild":{
        "_class":"hudson.model.FreeStyleBuild",
        "number":60,
        "url":"http://localhost:8080/job/api_test/60/"
    },
    "lastSuccessfulBuild":{
        "_class":"hudson.model.FreeStyleBuild",
        "number":60,
        "url":"http://localhost:8080/job/api_test/60/"
    },
    "lastUnstableBuild":null,
    "lastUnsuccessfulBuild":{
        "_class":"hudson.model.FreeStyleBuild",
        "number":44,
        "url":"http://localhost:8080/job/api_test/44/"
    },
    "nextBuildNumber":61,
    "property":[

    ],
    "queueItem":null,
    "concurrentBuild":false,
    "disabled":false,
    "downstreamProjects":[
        {
            "_class":"hudson.model.FreeStyleProject",
            "name":"send_feishu_info",
            "url":"http://localhost:8080/job/send_feishu_info/",
            "color":"blue"
        }
    ],
    "labelExpression":null,
    "scm":{
        "_class":"hudson.scm.NullSCM"
    },
    "upstreamProjects":[

    ]
}
  • description:该job的描述信息
  • name:该job的名字
  • url:该job的URL
  • builds:记录所有构建的信息。值是一个列表。每个列表参数介绍如下:
    • number:构建编号
    • url:构建对应的URL
  • color:构建的颜色
    • blue:蓝色,表示构建成功
    • red:红色,表示构建失败
  • concurrentBuild:是否支持并发构建。
    • false:不支持
    • true:支持
  • lastBuild:上一次构建的信息。参数介绍如下:
    • number:构建编号
    • url:构建对应的URL
  • lastFailedBuild:上次失败构建的信息。参数介绍如下:
    • number:构建编号
    • url:构建对应的URL
  • lastSuccessfulBuild:上次失败构建的信息。参数介绍如下:
    • number:构建编号
    • url:构建对应的URL
  • nextBuildNumber:下次构建的编号
  • 其余参数自行了解

获取job的最后构建number,代码如下

# 获取api_test的最后构建number
last_build_number = jk.get_job_info(job_name)["lastBuild"]["number"]
print(last_build_number)

4、获取build信息

获取build信息,使用get_build_info方法,该方法返回job build的信息

代码如下:

# 获取最后一次构建的信息
last_build_info = jk.get_build_info(job_name, last_build_number)
print(last_build_info)

返回build信息如下:

{
    "_class":"hudson.model.FreeStyleBuild",
    "actions":[
        {
            "_class":"hudson.model.CauseAction",
            "causes":[
                {
                    "_class":"hudson.model.Cause$UserIdCause",
                    "shortDescription":"Started by user 袋鼠KK",
                    "userId":"likaikai",
                    "userName":"袋鼠KK"
                }
            ]
        },
        {

        },
        {

        },
        {
            "_class":"org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
        }
    ],
    "artifacts":[

    ],
    "building":false,
    "description":null,
    "displayName":"#60",
    "duration":3263,
    "estimatedDuration":3575,
    "executor":null,
    "fullDisplayName":"api_test #60",
    "id":"60",
    "inProgress":false,
    "keepLog":false,
    "number":60,
    "queueId":138,
    "result":"SUCCESS",
    "timestamp":1683799694501,
    "url":"http://localhost:8080/job/api_test/60/",
    "builtOn":"",
    "changeSet":{
        "_class":"hudson.scm.EmptyChangeLogSet",
        "items":[

        ],
        "kind":null
    },
    "culprits":[

    ]
}
  • building:是否在构建中。
    • true:该job在构建中
    • false:该job已经构建结束
  • displayName:构建对策显示名称
  • duration:构建持续时间,单位:秒
  • fullDisplayName:构建项目名称+编号
  • id:构建编号
  • result:构建结果
    • SUCCESS:构建成功
    • FAILURE:构建失败
  • url:构建对应的URL
  • 其他参数自行了解

5、获取构建build的日志信息

获取构建build的日志信息,使用get_build_console_output方法,该方法返回job build的日志信息

代码如下:

# 获取最后一次构建的日志信息
result_log = rk.get_build_console_output(name=job_name, number=last_build_number)
print(result_log)

6、构建job

构建job,使用build_job方法。

代码如下:

# 构建job
jk.build_job(job_name)

7、其他操作

jenkins的其他方法,参考文档:API reference — Python Jenkins 1.8.0 documentation

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值