一、简介
Jenkinsapi是一个用于与Jenkins构建服务器交互的Python库,它充分利用了Jenkins REST API的功能,使得用户可以通过Python代码与Jenkins进行交互。以下是该库的特点:
1.简洁易用,以Pythonic方式提供了与Jenkins的各种交互接口;
2.完全兼容Jenkins REST API,可以处理复杂的操作并提供灵活的控制;
3.面向对象编程方式,使得用户可以直观地操作Jenkins的项目、视图、构建、插件等;
4.提供了详细的文档和示例代码,可以加快Python开发工具与Jenkins的集成过程。
使用Jenkinsapi可以快速地开发与Jenkins的交互程序,例如监控构建,创建build过程中用到的Jenkins相关资源,修改Jenkins job等等。
二、安装
可以使用pip在Python环境中进行Jenkinsapi的安装。以下是安装步骤:
pip install jenkinsapi
如果您的电脑上有多个Python版本,请确保Jenkinsapi所在的Python环境是您需要使用的Python环境。
三、基本用法
使用Jenkinsapi与Jenkins进行交互,可以通过创建Jenkins实例来完成,代码示例如下:
from jenkinsapi.jenkins import Jenkins
url = 'http://localhost:8080'
username = 'admin'
password = 'admin'
jenkins = Jenkins(url, username, password)
其中url是指向Jenkins服务器的URL,username和password都是可选填的参数,可以用于访问受保护的Jenkins实例。
一旦您创建了Jenkins实例,就可以开始使用Jenkinsapi提供的各种方法来与Jenkins进行交互,以下是几个常见的Jenkinsapi示例:
四、获取所有的Jobs
jobs = jenkins.get_jobs()
for job_name, job_instance in jobs:
print('Job Name: {}\n'.format(job_name))
五、获取特定的Job
job = jenkins.get_job('job_name')
print('Job Name: {}\n'.format(job.name))
六、获取Job的最新构建
job = jenkins.get_job('job_name')
last_build = job.get_last_build()
print('Last Successful Build Number: {}\n'.format(last_build.get_number()))
七、触发Job的构建
job = jenkins.get_job('job_name')
job.invoke()
八、创建或修改Job
job_config = '''
<hudson.model.FreeStyleProject>
<actions/>
<description>This is a new job.</description>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.scm.NullSCM"/>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>false</concurrentBuild>
<builders/>
<publisherst/>
<buildWrappers/>
</hudson.model.FreeStyleProject>
'''
job_name = 'new_job'
jenkins.create_job(job_name, job_config)
# Update Job Config
job = jenkins.get_job(job_name)
job.update_config(job_config)
九、Jenkinsapi文档参考
以下是Jenkinsapi文档的链接地址,您可以在该链接下找到更多的Jenkinsapi文档和示例代码。
https://jenkinsapi.readthedocs.io/en/latest/