通过Jenkins的api自动化部署

通过Jenkins的api自动化部署
前言:
目的:
应用技术:
一、安装python-jenkins
pip install python-jenkins
这是python的第三方包,将jenkins的API编写成一个模块,使用起来非常方便,首推此模块,如果其他语言,可以通过http接口。
二、创建数据库表
根据自己需要的信息定义表结构
三、编写前端
http://s4/mw690/006IC8q4zy7flb38SHxb3&690
图片中的信息是项目信息,通过加载数据库获取的数据,右侧操作栏分别是‘查看’,‘发布’,‘设置参数’,‘回滚’
server=jenkins.Jenkins(jenkins_server_url,
username=user_id,
password=api_token)
list_job =
server.get_all_jobs()
for
list
in
list_job:
运行结果:(项目名,构建状态[red:失败,blue:成功])
EM , red
FirstGitJob , blue
fistJob , blue
javacode , blue
maven_web , blue
test1 , notbuilt
http://s16/mw690/006IC8q4zy7flb5UKXt0f&690
config字段是要进行配置文件模版参数替换的数值
http://s4/mw690/006IC8q4zy7flb6S1uX93&690
测试的配置文件就是几个简单的数据,用{shujux}的方式设定不同的服务器上不同的参数,发布到各服务器后,此参数会改为数据库设置的参数。
四、后台编写
jenkins_server_url='http://192.168.168.119:8080/jenkins'
链接上jenkins后进行‘maven_web’任务的构造,然后就在jenkins服务器上产生了我们要的war包。
构建过程中,可以通过server.get_build_info('maven_web',num1)['building']来判断任务是否构建完成
并且可以通过server.get_job_info('maven_web')['lastBuild']['number']来获取构建完成时的构建的版本号,用于做版本控制(回滚操作)。
然后在通过server.get_build_info('maven_web',num1)['result']获取构建的结果(成功,失败)。
获取war包时,我们要清楚jenkins的工作原理,jenkins是通过tomcat_maven来进行程序打包,然后通过软链接的方式进行版本控制,如图
http://s7/mw690/006IC8q4zy7flb9YleKf6&690
http://s2/mw690/006IC8q4zy7flb92MJra1&690
这样,每次创建成功后,都会将目录指向新的版本号目录,失败时指向-1目录,所以我们只需要通过链接路径就可以一直获取到最新的war包。
至于cp.push获取jenkins服务器上的war包,和将war包发布至各服务器,可以看之间的博文,都有介绍如何发布,如果不是采用python语言,可以看java,springMVC,saltstack那篇博文,技术都有介绍。
4.3、配置文件
配置文件也是同war一样发布至各服务器,但是发布过去的都是模版,
模版上的变量需要替换为指定内容。
list1='test1!|test2!|test3'
index = 1
cmd = ''
for i in list1.split('!|'):
cmd = 'sed -i s/{shuju' + str(index) + '}/' + i + '/ /root/jenkinsTest/test.config ;' + cmd
1 index=index+
通过加载数据库build_config表里的信息获取到不同服务器的配置文件参数,然后拼接cmd执行,再在各服务器分别执行自己的cmd指令即可将配置文件中的变量信息替换为指定的内容了。
五、设置jenkins
http://s7/mw690/006IC8q4zy7flbda0Rwd6&690
maven_web就是本次发布测试用的代码。设置没有什么特殊的地方,但是不需要大家去写脚本和设置构建结束时执行脚本进行发布等工作了。
当然也可以通过jenkins的api进行任务构建,就不需要登录jenkins平台了。但是jenkins本身的构建功能比较完善,也就没必要再自己写了。
六、测试
http://s11/mw690/006IC8q4zy7flbe10o20a&690
http://s2/mw690/006IC8q4zy7flbhN0dz31&690
如图可见,war包及配置文件均以发布至各服务器,并且配置文件信息分别是数据库配置的信息
在部署位置可以放置启动、停止脚本等,可以由master服务器集中进行启停控制。
每次替换新war包时,保留旧的war包,制定上线标准和部署标准,即可轻松实现回滚。
总结:
l
l
l
l
l