Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过Web API设置Hudson构建描述_Python_Hudson_Hudson Api - Fatal编程技术网

Python 通过Web API设置Hudson构建描述

Python 通过Web API设置Hudson构建描述,python,hudson,hudson-api,Python,Hudson,Hudson Api,我有一个在Hudson构建上运行的Python脚本,希望能够以编程方式设置构建的描述 我可以单击构建页面上的“添加说明”并填写表单,我如何才能将一些数据发布到表单所使用的相同URL?弄明白了,需要将以下内容作为表单数据(内容类型application/x-www-form-urlencoded)发布到 代码: def set_description(build_url, desc): req_data = urllib.urlencode({'description': desc})

我有一个在Hudson构建上运行的Python脚本,希望能够以编程方式设置构建的描述


我可以单击构建页面上的“添加说明”并填写表单,我如何才能将一些数据发布到表单所使用的相同URL?

弄明白了,需要将以下内容作为表单数据(内容类型
application/x-www-form-urlencoded
)发布到

代码:

def set_description(build_url, desc):
    req_data = urllib.urlencode({'description': desc})
    req = urllib2.Request(build_url + '/submitDescription', req_data)
    req.add_header('Content-Type', 'application/x-www-form-urlencoded')
    urllib2.urlopen(req)

使用“执行系统Groovy脚本”生成任务:

import hudson.model.Cause
import hudson.model.Job
import jenkins.model.Jenkins

final JOB_NAME = 'my-job-name'

final jenkins = Jenkins.instance
final job = jenkins.getItemByFullName(JOB_NAME, Job.class)
final currentBuild = Thread.currentThread().executable
final buildNumber = currentBuild.getNumber()

job.builds
    .findAll { build ->
        build.number == buildNumber
    }
    .each { build ->
        build.setDescription("Some Description for the build")
    }
(将发表评论,但没有足够的代表)

多亏了jtb的大力支持。如果服务器上启用了安全性,我发现可以使用此代码进行身份验证(改编自)


用户和令牌的值可以在API令牌下找到:
http:///me/configure

下面是在shell中运行良好的curl命令。替换介于和包含{}之间的文本


curl-X POST-u{user:password}-H'内容类型:application/X-www-form-urlencoded'--data-urlencode description={descriptionstring}{hudsonurl}/job/{jobname}/{buildnumber}/submitDescription

我正在使用Jenkins,当我尝试这个时得到403。有人知道这在詹金斯是否仍然有效吗?
import hudson.model.Cause
import hudson.model.Job
import jenkins.model.Jenkins

final JOB_NAME = 'my-job-name'

final jenkins = Jenkins.instance
final job = jenkins.getItemByFullName(JOB_NAME, Job.class)
final currentBuild = Thread.currentThread().executable
final buildNumber = currentBuild.getNumber()

job.builds
    .findAll { build ->
        build.number == buildNumber
    }
    .each { build ->
        build.setDescription("Some Description for the build")
    }
def set_description(build_url, desc, user, token):
    import base64, urllib, urllib2
    req_data = urllib.urlencode( {'description': desc } )
    req = urllib2.Request(build_url + '/submitDescription', req_data)
    req.add_header('Content-Type', 'application/x-www-form-urlencoded')
    auth = 'Basic {}'.format(base64.b64encode("{}:{}".format( user, token )))
    req.add_header( 'Authorization', auth )
    response = urllib2.urlopen(req)