python中有python-jenkins插件,用来实现python和jenkins交付。
使用如下命令,即可安装该模块
pip3 install python-jenkins
该模块的文档,可以参见: Python Jenkins — Python Jenkins 1.1.1.dev1 documentation
创建jenkins token为了方便后续python连接jenkins,需要在jenkins中,使用某一用户,创建token
首先进入到自己的用户设置,点击右上角自己的用户名,然后从下拉菜单中,选择设置
在api-token选项中,创建一个新的token即可。
需要注意,token一旦创建之后,需要自己进行记录,后续该页面刷新之后,就看不到了
python *** 作jenkins 连接jenkinspython中,通过jenkins这个模块,来连接jenkins。代码如下:
server = jenkins.Jenkins(jenkins_server, username=user_id, password=api_token)
其中:
-
jenkins_server:jenkins的网站链接
-
username:用户名
-
password: 该用户的token
如果jenkins的网站是https的方式,那么连接过程中会有证书认证。如果jenkins的证书是自签发的,那么是可能连接失败的。
可以在连接jenkins之前,加入如下代码,不认证证书
import os
os.environ['PYTHONHTTPSVERIFY'] = '0'
连接成功后,就可以通过server这个类实例,来对jenkins进行 *** 作了。
job *** 作job的 *** 作,主要使用以下方法
方法 | 参数 | 说明 |
---|---|---|
get_job_info | job_name | 获取指定job的信息 |
build_job | job_name,parameters | 构建指定的job,并且传入参数。参数是一个字典 |
get_build_info | job_name,number | 获取指定job的指定构建number的构建信息 |
get_build_console_output | job_name, numer | 获取指定job的指定构建number的console打印信息 |
获取job的信息,使用get_job_info方法。该方法会返回一个字典,该字典中,存储了该job的相关所有信息。
信息如下所示:
{
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowJob',
'actions': [
{},
{},
{},
{},
{},
{},
{},
{},
{'_class': 'org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'},
{},
{},
{'_class': 'com.cloudbees.plugins.credentials.ViewCredentialsAction'}
],
'buildable': True,
'builds': [
{
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1333,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1333/'
},
{
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1332,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1332/'
},
{
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1331,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1331/'
},
{
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1330,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1330/'
}
],
'color': 'blue',
'concurrentBuild': False,
'description': 'test job',
'displayName': 'test_job',
'displayNameOrNull': None,
'firstBuild': {
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1324,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1324/'
},
'fullDisplayName': 'test_job',
'fullName': 'test_job',
'healthReport': [
{
'description': 'Build stability: No recent builds failed.',
'iconClassName': 'icon-health-80plus',
'iconUrl': 'health-80plus.png',
'score': 100
}
],
'inQueue': False,
'keepDependencies': False,
'lastBuild': {
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1333,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1333/'
},
'lastCompletedBuild': {
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1333,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1333/'
},
'lastFailedBuild': None,
'lastStableBuild': {
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1333,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1333/'
},
'lastSuccessfulBuild': {
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'number': 1333,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1333/'
},
'lastUnstableBuild': None,
'lastUnsuccessfulBuild': None,
'name': 'test_job',
'nextBuildNumber': 1334,
'property': [
{'_class': 'hudson.plugins.jira.JiraProjectProperty'},
{'_class': 'hudson.security.AuthorizationMatrixProperty'},
{'_class': 'com.dabsquared.gitlabjenkins.connection.GitLabConnectionProperty'},
{'_class': 'org.jenkinsci.plugins.gitlablogo.GitlabLogoProperty'},
{'_class': 'com.sonyericsson.rebuild.RebuildSettings'},
{
'_class': 'org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty'
},
{'_class': 'jenkins.model.BuildDiscarderProperty'},
{
'_class': 'org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty'
}
],
'queueItem': None,
'resumeBlocked': False,
'url': 'https://jenkins.corp.xxx.com/job/test_job/'
}
-
builds:记录所有构建的信息。值是一个列表。每一个列表是一个字典,该字典有如下参数:
-
number:构建编号
-
url:该构建对应的url
-
-
color:构建的颜色。以字符串体现
-
blue:蓝色,表示构建成功
-
red:红色,表示构建失败
-
-
concurrentBuild:是否支持并发构建。False不支持,True支持
-
description:该job的描述信息
-
lastBuild:上一次构建的信息。是一个字典,该字典有如下参数:
-
number:构建编号
-
url:构建对应的url
-
-
lastFailedBuild:之前失败构建的信息
-
lastSuccessfulBuild:之前成功构建的信息
-
nextBuildNumber:下一次构建的编号
-
url:该job对应的url链接
构建job,使用build_job方法。其中job_name是必须参数,parameters是可选参数。
无参数的构建job
server.build_job(job_name)
带参数的构建job
param_dict = {
"pkg_path": cur_dir,
"backup_path": bak_path,
"ftp_dir": ftp_path,
"user": USER
}
server.build_job(job_name, param_dict)
获取构建build的信息
通过 get_build_info 方法,可以获取到指定job,在指定构建编号下的构建信息
该方法会返回一个字典,该字典中,存储了该job的相关所有信息。
信息如下所示:
{
'_class': 'org.jenkinsci.plugins.workflow.job.WorkflowRun',
'actions': [
{
'_class': 'hudson.model.CauseAction',
'causes': [
{
'_class': 'hudson.triggers.TimerTrigger$TimerTriggerCause',
'shortDescription': 'Started by timer'
}
]
},
{'_class': 'org.jenkinsci.plugins.workflow.libs.LibrariesAction'},
{},
{},
{
'_class': 'hudson.plugins.git.util.BuildData',
'buildsByBranchName': {
'origin/master': {
'_class': 'hudson.plugins.git.util.Build',
'buildNumber': 1279,
'buildResult': None,
'marked': {
'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c',
'branch': [{'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c', 'name': 'origin/master'}]
},
'revision': {
'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c',
'branch': [{'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c', 'name': 'origin/master'}]
}
},
'refs/remotes/origin/master': {
'_class': 'hudson.plugins.git.util.Build',
'buildNumber': 1333,
'buildResult': None,
'marked': {
'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c',
'branch': [
{
'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c',
'name': 'refs/remotes/origin/master'
}
]
},
'revision': {
'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c',
'branch': [
{
'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c',
'name': 'refs/remotes/origin/master'
}
]
}
}
},
'lastBuiltRevision': {
'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c',
'branch': [
{
'SHA1': 'b9200ebf6faf5bad1cda1742b27a48d75918d55c',
'name': 'refs/remotes/origin/master'
}
]
},
'remoteUrls': ['git@git.corp.xxx.com:test_job.git'],
'scmName': ''
},
{},
{},
{},
{},
{},
{'_class': 'org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'},
{
'_class': 'org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'
},
{},
{'_class': 'org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'},
{},
{},
{},
{}
],
'artifacts': [],
'building': False,
'changeSets': [],
'culprits': [],
'description': None,
'displayName': '#1333',
'duration': 29771,
'estimatedDuration': 25817,
'executor': None,
'fullDisplayName': 'test_job #1333',
'id': '1333',
'keepLog': False,
'nextBuild': {
'number': 1334,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1334/'
},
'number': 1333,
'previousBuild': {
'number': 1332,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1332/'
},
'queueId': 194926,
'result': 'SUCCESS',
'timestamp': 1651633320785,
'url': 'https://jenkins.corp.xxx.com/job/test_job/1333/'
}
-
actions:job执行过程中的一些 *** 作。是一个列表,从该列表中,还可以获取到git的 *** 作信息
-
building:是否在构建中。True:该job在构建中,False:该job已经构建结束
-
displayName:构建的显示名称
-
duration:该构建的持续时间,单位是秒
-
id:构建编号
-
result:构建结果,字符串表示
-
SUCCESS:构建成功
-
FAILURE:构建失败
-
-
url:该构建的链接
通过 get_build_console_output方法,可以获取到指定job在指定构建编号下的打印信息。
获取到信息之后,就可以使用脚本进行处理提取信息了。
其他 *** 作jenkins模块,还提供了其他的一些 *** 作,如创建job,修改job配置,创建node等等。这些就不再介绍了,直接参考官方文档即可: API reference — Python Jenkins 1.1.1.dev1 documentation
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)