python调用jenkins构建失败的解决方案

使用python构建jenkins job

import jenkins
url = 'http://18.222.xxx.xxx:8899'
username = 'xxx'
password = 'xxx'

job_name = 'test-web-build-sit'
parameter = {"name": "BRANCH", "value": "sit-5.4.2-release"}

server = jenkins.Jenkins(url, username, password)
server.build_job(job_name, parameter)

构建结果失败,jenkins没有获取到参数

ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.

经过抓包获取参数发现,参数使用的形式如下:

json={"parameter":{"name":"BRANCH","value":"sit-5.4.2-release"}

于是修改源码,最终结果如下:

class Jenkins(object):
    _timeout_warning_issued = False
    ....
    ....
    
    def build_job(self, name, parameters=None, token=None):
        '''Trigger build job.

        This method returns a queue item number that you can pass to
        :meth:`Jenkins.get_queue_item`. Note that this queue number is only
        valid for about five minutes after the job completes, so you should
        get/poll the queue information as soon as possible to determine the
        job's URL.

        :param name: name of job
        :param parameters: parameters for job, or ``None``, ``dict``
        :param token: Jenkins API token
        :returns: ``int`` queue item
        '''
        # 注释原代码
        # response = self.jenkins_request(requests.Request(
        #     'POST', self.build_job_url(name, parameters, token)))

		# 新增代码
        param = {'json': json.dumps({'parameter': parameters})}

        response = self.jenkins_request(requests.Request(
            'POST', self.build_job_url(name), data=param
        ))

        if 'Location' not in response.headers:
            raise EmptyResponseException(
                "Header 'Location' not found in "
                "response from server[%s]" % self.server)
                
		# 注释原代码
        # location = response.headers['Location']
        # # location is a queue item, eg. "http://jenkins/queue/item/25/"
        # if location.endswith('/'):
        #     location = location[:-1]
        # parts = location.split('/')
        # number = int(parts[-1])
        # return number
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值