自动化Jenkins管理?使用python-jenkins管理Jenkins

这篇具有很好参考价值的文章主要介绍了自动化Jenkins管理?使用python-jenkins管理Jenkins。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践

自动化Jenkins管理?使用python-jenkins管理Jenkins

今天是「DevOps云学堂」与你共同进步的第 26 

如果这篇文章对您有帮助,欢迎转发点赞分享。您的关注是我持续分享的动力!


自动化Jenkins管理?使用python-jenkins管理Jenkins

简介

本次我们将要学习JenkinsAPI接口,我们先用Python-jenkins这个库完成。

仓库Pypi :https://pypi.org/project/python-jenkins/

在线文档: http://python-jenkins.readthedocs.org/en/latest/

当前环境Python版本 v3.7.0

功能

  • Create new jobs  创建新项目    

  • Copy existing jobs   复制已存在的项目

  • Delete jobs  删除项目

  • Update jobs  更新项目

  • Get a job’s build information   获取一个项目的构建信息

  • Get Jenkins master version information   获取Jenkins master的版本信息

  • Get Jenkins plugin information  过去jenkins插件信息

  • Start a build on a job  构建一个项目

  • Create nodes  创建一个节点  

  • Enable/Disable nodes  启用/禁用节点

  • Get information on nodes  获取节点信息

  • Create/delete/reconfig views  创建/删除/更新视图

  • Put server in shutdown mode (quiet down)  关机

  • List running builds  列出构建中的项目

  • Delete builds  删除构建

  • Wipeout job workspace  

  • Create/delete/update folders  创建/删除/更新文件夹

  • Set the next build number 设置下次构建ID

  • Install plugins   安装插件

使用思路

例如我要创建一个项目

  1. 要先找到创建项目的方法

  2. 然后根据API文档查阅如何使用 每个接口的使用方法

  3. 打开一个python解释器调试

初始化配置

安装python-jenkins

pip install python-jenkins==1.6.0

测试

ZeyangdeMacBook-Pro:~ zeyang$ python3
Python 3.7.4 (v3.7.4:e09359112e, Jul  8 2019, 14:54:52)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import jenkins
>>> server = jenkins.Jenkins("http://127.0.0.1:8080",username="admin",password="admin")
>>> server.get_whoami()
{'_class': 'hudson.model.User', 'absoluteUrl': 'http://127.0.0.1:8080/user/admin', 'description': '', 'fullName': 'admin', 'id': 'admin', 'property': [{'_class': 'jenkins.security.ApiTokenProperty'}, {'_class': 'jenkins.security.LastGrantedAuthoritiesProperty'}, {'_class': 'hudson.model.MyViewsProperty'}, {'_class': 'hudson.model.PaneStatusProperties'}, {'_class': 'hudson.security.HudsonPrivateSecurityRealm$Details'}, {'_class': 'org.jenkinsci.main.modules.cli.auth.ssh.UserPropertyImpl'}, {'_class': 'jenkins.security.seed.UserSeedProperty'}, {'_class': 'hudson.search.UserSearchProperty', 'insensitiveSearch': True}, {'_class': 'hudson.model.TimeZoneProperty'}]}

查看 所有的方法

>>> dir(server)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_add_missing_builds', '_auth_resolved', '_auths', '_build_url', '_get_encoded_params', '_get_job_folder', '_get_tag_text', '_get_view_jobs', '_maybe_add_auth', '_request', '_response_handler', '_session', '_timeout_warning_issued', 'assert_credential_exists', 'assert_folder', 'assert_job_exists', 'assert_node_exists', 'assert_promotion_exists', 'assert_view_exists', 'auth', 'build_job', 'build_job_url', 'cancel_queue', 'check_jenkinsfile_syntax', 'copy_job', 'create_credential', 'create_folder', 'create_job', 'create_node', 'create_promotion', 'create_view', 'credential_exists', 'crumb', 'debug_job_info', 'delete_build', 'delete_credential', 'delete_job', 'delete_node', 'delete_promotion', 'delete_view', 'disable_job', 'disable_node', 'enable_job', 'enable_node', 'get_all_jobs', 'get_build_console_output', 'get_build_env_vars', 'get_build_info', 'get_build_test_report', 'get_credential_config', 'get_credential_info', 'get_info', 'get_job_config', 'get_job_info', 'get_job_info_regex', 'get_job_name', 'get_jobs', 'get_node_config', 'get_node_info', 'get_nodes', 'get_plugin_info', 'get_plugins', 'get_plugins_info', 'get_promotion_config', 'get_promotion_name', 'get_promotions', 'get_promotions_info', 'get_queue_info', 'get_queue_item', 'get_running_builds', 'get_version', 'get_view_config', 'get_view_name', 'get_views', 'get_whoami', 'install_plugin', 'is_folder', 'jenkins_open', 'jenkins_request', 'job_exists', 'jobs_count', 'list_credentials', 'maybe_add_crumb', 'node_exists', 'promotion_exists', 'quiet_down', 'reconfig_credential', 'reconfig_job', 'reconfig_node', 'reconfig_promotion', 'reconfig_view', 'rename_job', 'run_script', 'server', 'set_next_build_number', 'stop_build', 'timeout', 'upsert_job', 'view_exists', 'wait_for_normal_op', 'wipeout_job_workspace']

do操作方法

功能 python方法
项目操作 create_job disable_job  delete_job copy_job enable_job  job_exists  jobs_count upsert_job
构建操作 build_job delete_build build_job_url  stop_build
凭据操作 create_credential delete_credentialcredential_exists
视图操作 create_view  delete_view view_exists
节点操作 create_node disable_node delete_node enable_node node_exists
晋级操作 create_promotion  delete_promotion promotion_exists
取消队列 cancel_queue
检查jenkinsfile语法 check_jenkinsfile_syntax
检查项目信息 debug_job_info
文件夹操作 is_folder create_folder
安装插件 install_plugin

get获取方法

功能 python方法
获取项目信息 get_all_jobs get_job_config get_job_info get_job_info_regex get_job_name get_jobs
获取构建信息 get_build_console_output get_build_env_vars get_build_info  get_build_test_report
获取凭据信息 get_credential_config   get_credential_info list_credentials

get_info
获取节点信息 get_node_config get_node_info get_nodes
获取插件信息 get_plugin_info get_plugins get_plugins_info
获取晋级信息 get_promotion_config get_promotion_name get_promotions  get_promotions_info
获取队列信息 get_queue_info get_queue_item
获取运行中构建 get_running_builds
获取版本 get_version
获取视图信息 get_view_config  get_view_name get_views
获取当前用户 get_whoami

jenkins_open

jenkins_request

更新操作

功能 python方法
关机 quiet_down
更新凭据 reconfig_credential
更新项目 reconfig_job
更新节点 reconfig_node
更新晋级 reconfig_promotion
更新视图 reconfig_view
重命名项目 rename_job
运行脚本 run_script
设置下次构建id

set_next_build_number

演示实例

每个接口的使用方法:https://python-jenkins.readthedocs.io/en/latest/api.html

项目操作

我们需要认识一下Jenkins项目的config.xml,大部分API在创建项目的时候会使用xml文件。首先创建一个项目(任何类型的都可以)然后我们进入$JENKINS_HOME/jobs/目录查看我们这个项目生成的config.xml文件。

builds存放项目的构建信息。

ZeyangdeMacBook-Pro:jobs zeyang$ ls
demo-test
ZeyangdeMacBook-Pro:jobs zeyang$ ls demo-test/
buildsconfig.xml

config.xml

可以看到jenkins的文件存储都是以xml方式存储的。(后面我们需要利用这个xml创建一个新项目)

<?xml version='1.1' encoding='UTF-8'?>
<project>
  <description>test</description>
  <keepDependencies>false</keepDependencies>
  <properties/>
  <scm class="hudson.scm.NullSCM"/>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers/>
  <concurrentBuild>false</concurrentBuild>
  <builders/>
  <publishers/>
  <buildWrappers/>
</project>

使用方法获取项目配置信息

server.get_job_config("demo-test")

'<?xml version=\'1.1\' encoding=\'UTF-8\'?>\n<project>\n  <description>test</description>\n  <keepDependencies>false</keepDependencies>\n  <properties/>\n  <scm class="hudson.scm.NullSCM"/>\n  <canRoam>true</canRoam>\n  <disabled>false</disabled>\n  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>\n  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>\n  <triggers/>\n  <concurrentBuild>false</concurrentBuild>\n  <builders/>\n  <publishers/>\n  <buildWrappers/>\n</project>'

掌握创建项目的方法使用

create_job(name, config_xml)

  • name 项目名称 字符串类型

  • config_xml 配置文件 字符串类型

新建项目demo-test-02

config_xml = server.get_job_config("demo-test")
server.create_job("demo-test-02",config_xml)

验证项目是否创建成功

server.job_exists("demo-test-02")
True

复制一个新项目demo-test-03

copy_job(from_name, to_name)

  • from_name 源项目 字符串类型

  • to_name 目标项目 字符串类型

当源项目名称与目标项目名称一致的时候会报错。JenkinsException

>>> server.copy_job("demo-test-02","demo-test-03")
>>> server.job_exists("demo-test-03")
True

写一个脚本用于项目创建

新建一个项目,增加一个参数srcType用于分辨项目所使用的的版本控制系统类型。参数可以是(svn,git)。

我们要完成的是基于一个项目模板,创建新的项目并替换相关的参数。模板项目名称demo-devops-service

自动化Jenkins管理?使用python-jenkins管理Jenkins

import jenkins

#login
serverUrl = "http://127.0.0.1:8080"
username = "admin"
password = "admin"
server = jenkins.Jenkins(serverUrl,username,password)

defProjectName = "demo-devops-service"
newProjectName = "demo-test-service"


if server.job_exists(newProjectName) != True :
    print("项目不存在开始新建项目")
    
    config_xml=server.get_job_config(defProjectName)
    newconfig_xml = config_xml.replace("<defaultValue>svn</defaultValue>","<defaultValue>git</defaultValue>")
    
    print(newconfig_xml)

    server.create_job(newProjectName,newconfig_xml)
else:
    print("项目已存在!")

运行输出

ZeyangdeMacBook-Pro:codes zeyang$ python3 josbtest.py
项目不存在开始新建项目
<?xml version='1.1' encoding='UTF-8'?>
<project>
  <actions/>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties>
    <hudson.model.ParametersDefinitionProperty>
      <parameterDefinitions>
        <hudson.model.StringParameterDefinition>
          <name>srcType</name>
          <description></description>
          <defaultValue>git</defaultValue>
          <trim>false</trim>
        </hudson.model.StringParameterDefinition>
      </parameterDefinitions>
    </hudson.model.ParametersDefinitionProperty>
  </properties>
  <scm class="hudson.scm.NullSCM"/>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers/>
  <concurrentBuild>false</concurrentBuild>
  <builders/>
  <publishers/>
  <buildWrappers/>
</project>

效果

自动化Jenkins管理?使用python-jenkins管理Jenkins文章来源地址https://www.toymoban.com/news/detail-458490.html


到了这里,关于自动化Jenkins管理?使用python-jenkins管理Jenkins的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins+Python自动化测试持续集成详细教程(全网独家)

    目录 一、前言 二、环境准备 三、创建Jenkins Job 四、编写Python自动化测试脚本 五、测试报告生成与展示 六、持续集成流程优化 七、实战演练 八、常见问题及解决方案 九、结论 Jenkins是目前最为流行的CI/CD工具之一,它可以支持多种语言和技术栈,如Java、Python、JavaScript等。

    2024年02月06日
    浏览(71)
  • Aritest+python+Jenkins解放双手iOS/Android自动化

    ARITest、Python 和 Jenkins 可以结合在一起创建一个自动化测试解决方案,实现持续集成和持续测试的目标。以下是三者如何协同工作的基本概念: 1. **ARITest**:    ARITest 是一款功能全面的自动化测试工具,提供 UI 自动化、接口自动化、性能测试等多种测试手段。假设您正在使

    2024年04月28日
    浏览(36)
  • Docker容器搭建Python+Jenkins+Selenium自动化测试(最详细)

    使用Docker搭建Jenkins+python3+selenium项目,在Linux服务器上部署项目代码,实现自动构建。 解决方案 自动构建工具选型:jenkins 中间件选型:docker 代码运行环境:python3 脚本运行工具:chrome浏览器、chromedriver、selenium库 web自动化测试:https://www.bilibili.com/video/BV1MS4y1W79K/ docker分布式自

    2024年02月01日
    浏览(52)
  • jenkins实现接口自动化持续集成(python+pytest+ Allure+git)

    在用python做自动化测试时,我们写好代码,然后需要执行才能得到测试报告,这时我们可以通过 Jenkins 来进一步完成自动化工作。借助Jenkins,我们可以结合 Git/SVN 自动拉取代码,通过设置定时构建实现自动触发脚本执行,得到测试报告,最后还可以配置发送邮件等。今天我们

    2024年02月03日
    浏览(59)
  • Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例

    下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 本文将介绍如何使用Python、Pytest、Allure、Selenium和Jenkins实现测试自动

    2024年02月09日
    浏览(57)
  • Python+Pytest+Allure+Git+Jenkins数据驱动接口自动化测试框架

    一、接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,RPC,Webservice,Dubbo,RESTful等类型。 接口测试流程 1、需求评审,熟悉业务和需求 2、开发提供接口文档 3、编写接口测

    2024年02月08日
    浏览(83)
  • 【Kubernetes 企业项目实战】06、基于 Jenkins+K8s 构建 DevOps 自动化运维管理平台(中)

    目录 一、基于 Jenkins+k8s+Git+Docker Hub 等技术链构建企业级 DevOps 容器云平台 1.1 安装 Jenkins 1.1.1 安装 nfs 服务 1.1.2 在 kubernetes 中部署 jenkins 1.2 配置 Jenkins ​1.2.1 获取管理员密码 1.2.2 安装插件 1.2.3 创建第一个管理员用户 1.3 测试 jenkins 的 CI/CD 1.3.1 在 Jenkins 中安装 kubernetes 插件

    2024年01月16日
    浏览(78)
  • 全网最详细的Python自动化测试+邮件推送+企业微信推送+Jenkins

    什么是python自动化?我理解的Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 自动化测试是一种质量保障的方式,最重要的还是以做好一款高质量产品为前提。测试工作很多时候就是在不断平衡质量、

    2024年02月03日
    浏览(41)
  • 云服务器使用jenkins+docker自动化部署SpringBoot项目

    docker 安装jenkins,就这一步都恶心死了 //拉取镜像,踩了很多坑,用其它版本的镜像插件一直安装失败,最后用的是lts版本(基础版) 用其它版本要么是连不上插件的下载地址,要么是插件下载不成功  docker pull jenkins/jenkins:lts  部署 docker run --user root -d -p 10240:8080 -p 10241:50

    2024年02月01日
    浏览(55)
  • 如何使用jenkins、ant、selenium、testng搭建自动化测试框架

    如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗?没有吧!应为那样真的是很low的!下面说一下

    2024年04月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包