美文网首页赏味不足程序员软件测试
3.【小试】Python远程操作Jenkins

3.【小试】Python远程操作Jenkins

作者: cooling2016 | 来源:发表于2018-01-23 11:52 被阅读211次

    Jenkins除了有GUI界面,还提供了RestAPI的方式来方便用户,使用代码(Python、Java)控制Jenkins的工作流。

    【本文要点】

    • 使用python-jenkins库和python3.6.3作为基础。
    • Jenkins被安装在虚拟机上,开放部分Jenkins的“安全设置”
    • 设置Jenkins中当前登录用户API Token
    • 在Pycharm中写一些简单的代码来控制远程的Jenkins。

    1.Python-Jenkins库

    1.1 What is python-jenkins?

    Python Jenkins is a python wrapper for the Jenkins REST API which aims to provide a more conventionally pythonic way of controlling a Jenkins server. It provides a higher-level API containing a number of convenience functions.

    1.2 Python-Jenkins能做什么?

    Python-Jenkins可以做很多事情见图1所示:


    图1 Python-Jenkins能做什么?
    1.3 Python-Jenkins的安装

    如果你的Python环境中有pip管理工具,请使用pip进行python-jenkins库文件的安装,安装命令如下所示。【PS:建议python版本使用3.x】

    #使用pip进行python-jenkins库的安装
    
     $ pip install python-jenkins
    

    2.修改Jenkins的“安全设置”

    笔者所用的Jenkins版本为2.89.3,对于Jenkins2.x以上的版本,安全防护更加的严格。因此,我们需要降低一点Jenkins的安全防护级别,将“安全矩阵”替换为“登录用户可以做任何事”。图2和图3为具体更改后的安全配置情况。

    图2 具体更改后的安全配置情况--上半部分
    图3 具体更改后的安全配置情况--下半部分

    修改完“全局安全配置”后,请重启您的Jenkins服务

    [PS]重启Jenkins服务可以采用在地址栏输入http://ip:port/restart的方式。


    3.Jenkins中设置当前登录用户的 API Token

    只有已登录的用户才能设置自己相对应的API Token,API token是用户登录操作Jenkins的另外意义上的Password,可以将API Token 等价于Password。

    3.1 启用用户所属的API Token

    当你成功登录进Jenkins系统,根据图3所示的操作进行Show API Token 的操作,你就会得到当前用户唯一的API Token,API Token的用法见本文第四节(编写python控制jenkins的代码)

    图3 启用用户所属的API Token
    3.2 修改用户所属的API Token

    如果,你想修改你的API Token,请根据图4所示进行修改操作。


    图4 修改用户所属的API Token

    4.编写python控制jenkins的代码

    下面是一个获取Jenkins版本号的小Demo:

    import jenkins
    
    #远程Jenkins的地址
    jenkins_server_url = 'http://192.168.1.13:8080'
    
    #用户名
    user_id = 'admin'
    
    #用户的token值(每个user有对应的token----如本文第3.1节所示)
    api_token = 'ea8c65123036cf95cd038b1d8e5cc3c9'
    
    #登录密码
    #passwd = 'admin'
    
    #server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=passwd)
    
    #使用  API_Token    进行Jenkins登录操作
    server = jenkins.Jenkins(jenkins_server_url, username=user_id, password=api_token)
    
    #使用get.version()方法获取版本号
    version = server.get_version()
    
    print(version)
    #server.build_job('oschina_selenium_docker')
    

    图5为Jenkins GUI上的版本号信息

    图5 Jenkins GUI上的版本号信息

    图6为Python代码执行后获取Jenkins版本号的结果

    图6 Python代码执行后获取Jenkins版本号的结果

    笔者遇到的坑点填坑
    【坑点1】一定要修改Jenkins的“全局安全设置”,不然代码运行时就会报错“jenkins.BadHTTPException: Error communicating with server[http://192.168.1.13:8080/]”
    【填坑1】要想解决坑点1,请具体本文【图2图3】进行设置Jenkins的【全局安全配置】即可。

    更多Python代码方式操作Jenkins的事例代码请访问Pthon-Jenkins官方

    本文END,请换一种方式体验下Jenkins的不同玩法!

    相关文章

      网友评论

      本文标题:3.【小试】Python远程操作Jenkins

      本文链接:https://www.haomeiwen.com/subject/wgtsaxtx.html