python pipeline转jenkins_【转】通过python调用jenkins 常用api操作

1 # -*- coding: utf-8 -*-

2

3 import jenkins4

5

6 class TestJenkins(object):7 def __new__(cls, *args, **kwargs):8 server = 'http://1.1.1.1:8080/jenkins'

9 username = 'admin'

10 # 对应用户的token信息,不是明文的密码信息11 password = 'fljljdfladoweurojlsjdfasd123'

12 server = jenkins.Jenkins(url=server, username=username, password=password)13 instance = super(TestJenkins, cls).__new__(cls, *args, **kwargs)14 instance.server =server15 returninstance16

17 def __init__(self):18 #这里的api_token是针对远程执行任务时,jenkins要验证的token的信息19 self.api_token = 'okfine'

20

21 def jobs_count(self):22 print(self.server.jobs_count())23

24 def server_info(self):25 print(self.server.server)26

27 def get_jobs_info(self):28 for item inself.server.get_all_jobs():29 print('name: %s' % item['name'], 'URL:', item['url'])30

31 def get_whoami(self):32 print(self.server.get_whoami(depth=10))33

34 def get_auth(self):35 print(self.server.auth)36

37 def get_debug_job_info(self, name):38 print(self.server.debug_job_info(name))39

40 def check_job_exists(self, name):41 print(self.server.job_exists(name))42

43 def get_all_jobs(self):44 print(self.server.get_all_jobs())45

46 def create_job(self):47 print(self.server.create_job('API-1', jenkins.RECONFIG_XML))48 print(self.server.create_job('API-2', jenkins.RECONFIG_XML))49

50 def delete_job(self, name):51 print(self.server.delete_job(name))52

53 def copy_job(self, name, new_name):54 print(self.server.copy_job(name, new_name))55

56 def enable_job(self, name):57 print(self.server.enable_job(name))58

59 def disable_job(self, name):60 print(self.server.disable_job(name))61

62 def reconfig_job(self, name):63 print(self.server.reconfig_job(name, jenkins.RECONFIG_XML))64

65 def rename_job(self, name, new_name):66 print(self.server.rename_job(name, new_name))67

68 def build_job(self, name, parameters):69 print(self.server.build_job(name, parameters, token=self.api_token))70

71 def get_job_info(self, name):72 # 主要是通过任务的信息,来得到需要传入的参数信息,jenkins 各种自定义选项信息,单凭肉眼是很难辨别出参数信息的,73 # 任务相关参数信息都是在property这个参数里面74 build_arg = self.server.get_job_info(name)["property"]75 for parameter_definitions inbuild_arg:76 if len(parameter_definitions) > 1:77 for parameter in parameter_definitions["parameterDefinitions"]:78 print('----------------------------------')79 print('name: %s' % parameter["name"])80 print('class: %s' % parameter["_class"])81 print('type: %s' % parameter["type"])82 print('description: %s' % parameter["description"])83 print('jenkins_arg: %s' % parameter["defaultParameterValue"]["name"])84 print('default_value: %s' % parameter["defaultParameterValue"]["value"])85 if parameter["_class"] == 'hudson.model.ChoiceParameterDefinition':86 print('can_choices: %s' % parameter["choices"])87 print('----------------------------------')88

89 def get_build_log(self, name):90 last_build_number = self.server.get_job_info(name)['lastCompletedBuild']['number']91 print('last_build_number', last_build_number)92

93 # 查看指定构建编号的输出94 print(self.server.get_build_console_output(name, last_build_number))95

96 def __call__(self, *args, **kwargs):97 self.get_job_info('shop')98

99 # 通过特定任务的信息来得到要传入的参数信息,然后再来执行构建任务100 # build newjob, nice operation101 # 如下列所示的5个参数,就是此次构建必须提供的参数102 param_dict = {'repository': 'ssh://git@xxxxx.com/xx/xxxx.git',103 'profile': 'xxxx-xxx',104 'branch': 'master',105 'upload_nexus': False,106 'deploy_app': False}107

108 self.build_job('xxxxx', parameters=param_dict)109

110

111 TestJenkins()()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值