实习日志(第四周2)

来源:互联网 发布:淘宝代理费 编辑:程序博客网 时间:2024/05/16 04:55

python Jenkins API

  1. 安装Python Jenkins模块
  2. 常用使用操作
# !/usr/bin/env python# -*- coding:gbk -*-import jenkins# 定义远程的jenkins master server的url,以及portjenkins_server_url = 'http://192.168.2.130:8080/'user_id = 'Administrator'  # 定义用户的User Id 和 API Tokenapi_token = '123456'# 实例化jenkins对象,连接远程的jenkins master serverserver = jenkins.Jenkins(jenkins_server_url, username=user_id, password=api_token)# 构建job名为job_name的job(不带构建参数)server.build_job('test_python',1)['result']server.build_job('HelloWorld', parameters='param_dict')  # 参数param_dict为字典形式# 获取job名为job_name的job的相关信息server.get_job_info('HelloWorld')# 获取job名为job_name的job的最后次构建号server.get_job_info('HelloWorld')['lastBuild']['number']# 获取job名为job_name的job的某次构建的执行结果状态server.get_build_info('job_name','build_number')['result']# 判断job名为job_name的job的某次构建是否还在构建中server.get_build_info('job_name','build_number')['building']
  1. python jenkins的11个实用实例
    1. 查看Jenkins版本

      import jenkins
      server = jenkins.Jenkins('http://192.168.2.130:8080', username='Administrator', password='123456')
      user = server.get_whoami()
      version = server.get_version()
      print('Hello %s from Jenkins %s' % (user['fullName'], version))
    2. 登录Jenkins使用Kerberos

      import jenkins
      server = jenkins.Jenkins('http://192.168.2.130:8080')
      print server.jobs_count()
    3. 使用Jenkins jobs(创建、配置、删除jobs)

      server.create_job('empty', jenkins.EMPTY_CONFIG_XML)
      jobs = server.get_jobs()
      print jobs
      my_job = server.get_job_config('cool-job')
      print(my_job) # prints XML configuration
      server.build_job('empty')
      server.disable_job('empty')
      server.copy_job('empty', 'empty_copy')
      server.enable_job('empty_copy')
      server.reconfig_job('empty_copy', jenkins.RECONFIG_XML)
      server.delete_job('empty')
      server.delete_job('empty_copy')
      # build a parameterized job
      # requires creating and configuring the api-test job to accept 'param1' & 'param2'
      server.build_job('api-test', {'param1': 'test value 1', 'param2': 'test value 2'})
      last_build_number = server.get_job_info('api-test')['lastCompletedBuild']['number']
      build_info = server.get_build_info('api-test', last_build_number)
      print build_info
      # get all jobs from the specific view
      jobs = server.get_jobs(view_name='View Name')
      print jobs
    4. 使用Jenkins views(创建、配置、删除views)

      server.create_view('EMPTY', jenkins.EMPTY_VIEW_CONFIG_XML)
      view_config = server.get_view_config('EMPTY')
      views = server.get_views()
      server.delete_view('EMPTY')
      print views
    5. 获得Jenkins 插件信息

      plugins = server.get_plugins_info()
      print plugins
    6. 使用Jenkins节点(创建、配置、、启动、删除)

    7. 使用Jenkins构建队列

      server.build_job('foo')
      queue_info = server.get_queue_info()
      id = queue_info[0].get('id')
      server.cancel_queue(id)
    8. 使用Jenkins Cloudbees Folders

      server.create_job('folder', jenkins.EMPTY_FOLDER_XML)
      server.create_job('folder/empty', jenkins.EMPTY_FOLDER_XML)
      server.copy_job('folder/empty', 'folder/empty_copy')
      server.delete_job('folder/empty_copy')
      server.delete_job('folder')
    9. 更新下一个build number

      next_bn = server.get_job_info('job_name')['nextBuildNumber']
      server.set_next_build_number('job_name', next_bn + 50)
    10. 使用build promotions(创建、配置、删除 promotion process)

      server.create_promotion(‘prom_name’, ‘prom_job’, jenkins.EMPTY_PROMO_CONFIG_XML)
      server.promotion_exists(‘prom_name’, ‘prom_job’) print server.get_promotions(‘prom_job’)
      server.reconfig_promotion(‘prom_name’, ‘prom_job’, jenkins.PROMO_RECONFIG_XML)
      print server.get_promotion_config(‘prom_name’, ‘prom_job’)
      server.delete_promotion(‘prom_name’, ‘prom_job’)
    11. 等待Jenkins做好准备
      可以要求API等待Jenkins准备好给定的超时时间。 这可以用于帮助启动Jenkins,然后等待REST API响应,然后再继续配置。

      # timeout here is the socket connection timeout, for each connection
      # attempt it will wait at most 5 seconds before assuming there is
      # nothing listening. Useful where firewalls may black hole connections.
      server = jenkins.Jenkins(‘http://localhost:8080‘, timeout=5)
      # wait for at least 30 seconds for Jenkins to be ready if server.wait_for_normal_op(30):
      # actions once running ...
      else:
      print(“Jenkins failed to be ready in sufficient time”) exit 2