一,jenkins安装部署
Linux下Jenkins 安装方式很多,源码包(WAR 文件)安装,镜像服务安装,yum命令安装等
命令安装最简单,其他方式可以自己baidu
安装步骤如下
1, 安装命令
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
2, 修改配置
# 修改端口
vim /etc/sysconfig/jenkins
3,启动命令
service jenkins start 启动
service jenkins stop 停止
service jenkins restart 重启
4,首次登录
第一次登录需要密码,根据提示:
cat /var/lib/jenkins/secrets/initialAdminPassword
首次登录,需要下载一些插件,可以使推荐的插件,也可以自己选择下载
安装完成后,自动进入管理账户注册页面,注册好了,进入登录页面
5,jenkins一般和项目交互,需要一些用户凭证(eg:git)
二,python-jenkins
工作中我们会想通过http方式运行Jenkins job,这样就不需要每次都进入jenkins的页面操作了,而且可以统一集成。
在Jenkins官网上的Python-Jenkins API。
Python-Jenkins官网:https://pypi.python.org/pypi/python-jenkins/
Python-Jenkins Doc:http://python-jenkins.readthedocs.io/en/latest/index.html
1,安装
pip install python-jenkins
2,基本使用
import jenkins
# 登录jenkins
server = jenkins.Jenkins('http://192.168.59.149:8080', username='user', password='password')
# 构建参数化job
server.build_job('jobname', {'param1': 'aaa', 'param2': 'bbb'})
3,项目封装
import jenkins
import logging
# 日志格式设置
logger = logging.getLogger('jenkins')
class JenkinsDevOps:
def __init__(self, jenkins_info_dict):
self.url = jenkins_info_dict["url"]
self.username = jenkins_info_dict["username"]
self.password = jenkins_info_dict["password"]
self.jenkins_server = jenkins.Jenkins(url=self.url, username=self.username, password=self.password)
def determine_job(self, job_name):
"""
检测项目是否存在
:param job_name: 项目名称
:return:
"""
return self.jenkins_server.get_job_name(job_name)
def build_job(self, job_name, parameters=None):
"""
:param job_name: name of job
:param parameters: parameters for job, or ``None``, ``dict``
:return:
"""
self.jenkins_server.build_job(job_name, parameters=parameters)
def get_last_success_build(self, job_name):
"""
获取上次成功的构建
:param job_name:
:return:
"""
number = self.jenkins_server.get_job_info(job_name)["lastSuccessfulBuild"]["number"]
return number
def stop_job(self, job_name, number):
"""
获取构建结果的日志
:param job_name: 项目名称
:param number: 构建号
"""
self.jenkins_server.stop_build(job_name, number)
def create_job(self, data):
"""
新建项目job
:param data: 包含job新建格式文本config.xml
:return:
"""
res = self.jenkins_server.create_job('app-run', open(data['config_xml'], encoding='utf-8').read())
return res
if __name__ == '__main__':
my_parameters = {"branch": "test", "item": "my_test_item"}
my_jenkins_dict = {"url": "https://jenkins.xxx.cn/",
"username": "admin", "password": "xxxxxxxx"}
item_name = "test-slave"
# jenkins_main(my_jenkins_dict, item_name, my_parameters)
4,job新建格式文本config.xml
<?xml version='1.1' encoding='UTF-8'?>
<project>
<actions/>
<description></description>
<keepDependencies>false</keepDependencies>
<properties>
<hudson.model.ParametersDefinitionProperty>
<parameterDefinitions>
<hudson.model.StringParameterDefinition>
<name>Branch</name>
<description>分支</description>
<defaultValue>dev</defaultValue>
<trim>false</trim>
</hudson.model.StringParameterDefinition>
<hudson.model.StringParameterDefinition>
<name>Version</name>
<description>版本号</description>
<defaultValue>7.0.0-devops</defaultValue>
<trim>false</trim>
</hudson.model.StringParameterDefinition>
</parameterDefinitions>
</hudson.model.ParametersDefinitionProperty>
</properties>
<scm class="hudson.plugins.git.GitSCM" plugin="git@4.7.1">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>http://gitlab.com/hermes/system/app-job.git</url>
<credentialsId>e11f0f10-d1a9-4d36-86b5-9184051c8cc5</credentialsId>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>$Branch</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg class="empty-list"/>
<extensions/>
</scm>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers/>
<concurrentBuild>false</concurrentBuild>
<builders>
<hudson.tasks.Shell>
<command>bash /opt/newcicd/scripts/java_build_job.sh</command>
<configuredLocalRules/>
</hudson.tasks.Shell>
</builders>
<publishers/>
<buildWrappers/>
</project>[