陆续使用jenkins已经有段时间了,现在简单描述一下jenkins从搭建到使用的流程。
什么是jenkins
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。
我们做这个所实现的目的,就是让发布的过程自动化,自动的覆盖,自动的跑脚本。
准备环境:jdk1.7 tomcat7 husdom(jenkisn应用)
首先,将husdom丢入到webapps下,启动tomcat即可登入jenkins页面
这里我已经配置了相关权限了,所以会有验证这一流程
这边发布时不需要运维进行编译这个动作的,所以,我们拿到的是成熟的产品。
所以这边我们具体要做的步骤是
- 把svn上传的具体项目产品down到jenkins的workspace本地
- 在jenkins本地建立rsync服务,并且每个项目配置上对应的jenkins模块
- 在目标部署服务器上写上对应的rsync同步脚本
- 建立2台机器的互信
- 编写项目同步后的一系列备份,发布脚本
完善jenkins页面上的相关动作,测试是否能执行自动化发布
首先,将目标项目down到jenkins本地,这里需要获得svn的路径和登录svn的账户验证。
这样之后,构建完成之后,svn上面的指定目录就能同步到项目下了
其次,建立rsync服务
安装rsync
yum install rsync
配置rysnc服务以及相关内容解释
vim /etc/rsync.conf
#全局参数设置:这部分设置的参数影响整个程序的运行
uid = root
gid = root
max connections = 0 #同时最大的连接数,0为不限制
pid file = /var/log/rsync/rsyncd.pid #记录rsync运行时的进程ID
lock file = /var/log/rsync/rsync.lock #以文件的方式锁的方式,保证rsync的一次运行
log file = /var/log/rsync/rsyncd.log #rsync日志信息包括启动信息同步信息等
port = 873 #可以指定rsync运行时使用的端口,默认使用873(不指定则使用默认)
use chroot = no #不使用chroot
#同步模块配置 标记,用于构建项目时自动增加相应配置,重要,勿删 $.module
##新增配置 开始
[wallet_demo] #指定模块,自定义
path = /root/.jenkins/workspace/wallet_demo/wallet-demo/wallet-demo-web/target/wallet-demo #指定数据存放的路径
comment = backup data
ignore errors
read only = false #如果设置为true,则不能上传到该模块指定路径下
list = false #指定当用户查询该服务器上的可用模块时,该模块是否被列出,设定true列出,false隐藏
hosts allow = * #允许所有用户
auth users = root
secrets file = /etc/rsyncd.scrt #秘钥地址
################################################################################
启动rsync服务
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
有时候会报pid已经存在的错误,我们只需删除该pid文件即可。错误如下
[[email protected] etc]# failed to create pid file /var/log/rsync/rsyncd.pid #记录rsync运行时的进程ID: File exists
#################################################################################
################################################################################
客户端配置
建立密码文件
vim /opt/rsyncd.scrt
修改到755权限即可
在建立互信的基础上,从服务端向客户端执行同步命令解析
#!/bin/bash
/usr/local/bin/rsync -vlzrtogp --progress --delete [email protected]::wallet_demo /opt/tomcat/tomcat_wallet_demo50110/webapps/wallet-demo --password-file=/opt/rsyncd.scrt
-v 打印一些信息出来,比如速率,文件数量等
-l 保留软连接
-r 对子目录以递归的模式处理,主要是针对目录来说,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项
-t 保持文件的时间信息
-o 保持文件的属主信息
-g 保持文件的属组信息
-p 保持文件权限
--delete 删除那些源目录中,目标目录没有的文件
--exclude=PATTERN 指定排除不需要传输的文件,等号后面跟文件名,可以是万用字符模式(如*.txt)
--progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等
--password-file 同步所需验证的秘钥文件
########################################################################################
至于客户端脚本,这里可以直接参考我的脚本就行了,这里不详细解释
建立互信,其实就是更改.ssh文件即可。自行百度
最后就是直接调用服务器后台的各种restart脚本
下面是具体实现的调用展示
把这些动作串联起来,实现了基本的jenkins发布动作