通过 Python 脚本在 Jenkins 中构建作业

3
我希望你能够通过python-jenkins包触发Jenkins中的构建作业。我使用了下面的代码来测试test_api作业,但它没有起作用。我该如何通过脚本进行构建..
import jenkins
j = jenkins.Jenkins('http://your_url_here', 'username', 'password')
print j.get_jobs()
url=j.build_job_url('test_api', parameters=None, token=None)
print url
last_build_number = j.get_job_info('test_api')['lastCompletedBuild'] ['number']
print "last_build_number",last_build_number
build_info=j.get_build_info('test_api',last_build_number)
if build_info['result']=='SUCCESS':
    print " Build Success "
else:
    print " Build Failed "
    log=j.get_build_console_output('test_api',last_build_number)
    f=open('log_buildFail.txt','w')
    f.write(log)
    f.close()

它会在构建后返回构建URL路径。
1个回答

5
我正在使用build_job方法来触发任务,它对我有效。
build_job(name, parameters=None, token=None)
    Trigger build job.

    Parameters: 
    name – name of job
    parameters – parameters for job, or None, dict
    token – Jenkins API token

这里是我的一个例子:
#!/usr/bin/python
# coding: utf-8
import jenkins
ci_jenkins_url = "http://my-jenkins-url/"
username = "foo"
token = "fa818f4f90621a4e69de563516098689"
job = "test-job"
j = jenkins.Jenkins(ci_jenkins_url, username=username, password=token)

if __name__ == "__main__":
      j.build_job(job, {'token': token})

你可以从http://my-jenkins-url/user/foo/configure获取令牌,然后点击show API Token...。 对于那些新手来说,可以参考Jenkins Python API Link了解更多。

我使用了 build_job 而不是 build_job_url,但在 Jenkins 中检查时构建未触发。 - Chandra
在Jenkins中是否有任何需要配置的内容,例如Jenkins API令牌,以触发构建。 - Chandra
我在使用Jenkins令牌时遇到以下错误:Traceback (most recent call last): File "C:/Python27/Jenkins_Build.py", line 33, in <module> url=j.build_job('test_job',{'token':'8f2f933f9602fcd7cd9a4970bde6cd5c'}) File "C:\Python27\lib\site-packages\jenkins\__init__.py", line 456, in build_job self.build_job_url(name, parameters, token))) File "C:\Python27\lib\site-packages\jenkins\__init__.py", line 218, in jenkins_open 'Possibly authentication failed [%s]' % (e.code) JenkinsException: Error in request.Possibly authentication failed [500] - Chandra
我需要管理员权限来构建这个吗? - Chandra
不需要 admin 权限。任何授权用户都可以执行此操作。根据其 API 文档所述,如果遇到用户名/密码/URL/超时条件不正确的情况,则会出现 JenkinsException - mainframer
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接