git插件安装
进入菜单"jenkins>系统管理>管理插件>可选插件",在右侧搜索栏输入"Git Plugin",也可以搜索安装"GitHub plugin"或"SVN Publisher plugin"
但事实上我下载安装时一直报错
java.io.IOException: Could not find JSON in http://updates.jenkins-ci.org/update-center.json?id=default&version=2.16
折腾很久未能解决,最后自已到http://mirror.xmission.com/je...下载需要的插件。参考jenkins wiki:https://wiki.jenkins-ci.org/d...。
下载到hpi文件到jenkins主目录下的plugins,同时要下载依赖插件,例如git plugin依赖bouncycastle-api和git client(在控制台安装失败时,可以看到要安装的依赖插件),才能安装成功。
$ cd /var/lib/jenkins/plugins
$ wget http://mirror.xmission.com/jenkins/plugins/git/latest/git.hpi
然后重启jenkins,登录jenkins,进入“jenkins>系统管理>管理插件>已安装”,可以看到Git plugin已成功安装。再重新进test-build-job配置,源码管理已经出来git。最后回到plugins目录把.hpi文件删除。
接下来将jenkins master的公钥添加到git服务器上,公钥在/var/lib/jenkins/.ssh/id_rsa.pub,生成公钥可参考Jenkins slave节点机器配置
创建连接git的credentials,创建请参考Jenkins控制台slave配置
maven安装配置
接下来安装maven
$ cd /usr/local
$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
解压
$ tar -zvxf apache-maven-3.3.9-bin.tar.gz
进入菜单“jenkins>新建”
配置jdk和maven settings.xml路径
创建一个在java master上用maven打包项目的job
进入菜单“jenkins>新建>构建一个自由风格的软件项目”
进入配置,根据情况配置历史构建保存的天数和个数,指定jdk以及执行该job的机器,这里指定了master
git配置,填写git项目地址和上一节提到的credentials,我要部置的项目分支是master
maven配置,以及maven构建完成后,执行脚本将war包放到目录/var/lib/jenkins/userContent,插件Copy To Slave Plugin会从该目录下载war包到slave
脚本还包含一个备份功能,将userContent下的war包名称添加日期后缀进行重命名,同时检查war包个数,超过10个时删除最旧的那个
最后在构建完成后,配置要触发的另一个job,这个job用来下载master机器的war包到和个slave节点,并执行tomcat重启。同时指定构建失败后要发送邮件的邮箱,以空格隔开
第一个job完成
创建下载war包到slave节点并完成tomcat重启的job
进入菜单“jenkins>新建”,选择构建一个多配置项目
进入配置,general和上一个job类似
配置需要部署的slave节点
指定下载war包的目录,这块需要先安装插件copy-to-slave
下载完成后,执行发布脚本。先从工作空间取出war包到tomcat的war存放目录,我这里配置的是/www/web,同时做一个备份。然后先关闭tomcat,保证杀死tomcat进程,然后删除tomcat root目录,再启动tomcat
最后同样可以配置job执行失败的邮件通知
邮件通知配置
需要先安装插件Email Extension Plugin,进入菜单“jenkins>系统管理>系统设置>邮件通知>高级”,设置用于发送邮件的邮箱和密码
整过部置过程结束
注意点
部署过程涉及到的文件和程序都应该为jenkins用户所拥有或者有相关权限,不然会报权限错误;
slave 80端口只能由root占用,所以这里tomcat用8080启动,然后在root安装nginx,将请求转发到8080,后续有时间再写写相关实践。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。