Jenkins的安装配置和使用java
1 Jenkins介绍linux
w3cschool中这样介绍:Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工做,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各类任务,如构建,测试和部署软件。Jenkins能够经过本机系统包Docker安装,甚至能够经过安装Java Runtime Environment的任何机器独立运行。git
下图是我在网上找的,便于理解:web
2 环境准备shell
本文介绍的jenkins是基于Gitlab + Maven + Tomcat实现自动集成、打包、部署,其余集成方式可上网了解。apache
2.1 环境windows
(1) Gitlab仓库浏览器
(2) 至少一台服务器用于安装Jdk、Maven、Git、jenkins,ip:10.8.165.11tomcat
(3) 至少一台目标生产服务器,可多台,ip:10.8.165.15bash
3 Jenkins安装及相关配置
这里Jenkins的安装配置介绍不是很全面的,文章只作一些基本的描述。
3.1 下载
下载jenkins的war包。网址: https://jenkins.io/download。如图:
3.2 安装
Jenkins的安装方式有不少,这里根据最简单的状况安装,运行命令:
java -jar jenkins.war --httpPort=8888 -Dfile.encoding=UTF-8,也能够使用tomcat进行部署。开放8888端口,提供局域网内客户机访问,浏览器访问10.8.165.11:8888进入到首页,首次访问须要初始化,以下图:
进入/user/.jenkins/secrets/initialAdminPassword下获取初始化管理员密码,点击continue,在有网络的状况下进入到以下页面:
能够选择推荐的插件安装,也能够选择自定义Jenkins的插件安装。无网络的状况出现以下提示:
则选择Skip Plugin Installations跳过插件安装,离线插件安装后面介绍。
插件安装完成后进入以下页面,设置登陆用户:
Save and Continue。
Save and Finish,设置成功后进入到jenkins首页。
3.3 管理
(1) jenkins插件安装
jenkins依赖的插件比较多,若是安装jenkins时安装了推荐的插件,基本上已经够用了,额外的插件须要时再安装,插件的安装有两种方式:在线安装和离线安装。
A、在线安装,登陆jenkins,选择系统管理,如图:
进入以下页面,点击插件管理:
Updates栏位为可更新的插件,Available为可在线安装的,Installed为已安装的,勾选须要的插件,点击Install without restart,等待安装完成。
B、离线安装。
到https://plugins.jenkins.io进行插件搜索,如图:
搜索结果,选择须要的插件:
标记有required的依赖插件为必须安装的插件,点击Archives进入到jenkins插件库:
选择合适的版本,下载hpi文件:
下一步到jenkins系统管理→插件管理→Advanced选项下,上传已经下载的hpi文件,重启jenkins便可。注意:插件之间有不少依赖,根据提示下载相应版本的插件安装。
(2) jenkins系统设置
配置以前须要说明一点,提早安装插件,避免配置过程当中返回安装插件,打乱思绪,由于jenkins插件互相依赖的较多,比较零乱,有遗漏的再补充,所需插件:Folders Plugin、Maven、SSH、Gitlab、Gitlab Hook Plugin、ThinBackup等及其所依赖的必须插件。
配置的大概过程为:配置jenkins工具的jdk、maven、git → 而后再进行系统环境设置 → 再配置SSH Servers。
A、jdk、maven、git配置,依次点击Manage Jenkins→Global Tool Configuration,以下,进行系统全局工具配置:
配置maven,加入maven的setting.xml的配置文件,
File path:“../conf/settings.xml”如图:
配置jdk,Name取jdk1.8.0_192(可本身随意取,这里取安装时的jdk名字),添加jdk的安装目录,JAVA_HOME:“../java/jdk1.8.0_192”如图:
配置git,Name随意取,添加git的安装路径,Path to Git executable:“../Git/bin/git.exe” 如图:
B、Jenkins系统环境设置,进入系统设置,如图:
Jenkins的Home directory:“../jenkins”,建议修改,不要使用默认的目录,修改方式点击后面的问号便可查看,如图:
Maven的jar包仓库(Global MAVEN_OPTS),此选项为构建过程当中maven jar包下载的目录,在这里遇到过不一样状况,通过测试,linux服务器下载后会在每一个项目下建立一个的存放jar包的repository目录,windows服务器则不会,为了不jar包重复下载,节省空间,因此在此修改到一个路径下,Global MAVEN_OPTS:“-Dmaven.repo.local=../repository”如图:
C、SSH Servers,须要先安装ssh插件,依次进入:Manage Jenkins→Configure System,下拉滚动条到Publish over SSH,配置ssh的链接,目的是经过jenkins链接服务器,对服务器进行一些列的操做,ssh 链接的方式有两种。
一种是经过密钥验证,免密登陆,大体过程以下:
Jenkins服务器(11)生成密钥对,并将公钥(id_rsa.pub)保存到生产机目标服务器(15);11此时要登陆15,发送请求到15,15生成随机字符串并用11的公钥加密后,发给11;11用私钥将其解密后发回给15,验证成功后登陆。
这里考虑到多台服务器的部署,免去重复配置,就将密钥配置到Jenkins的公共配置里,在私有配置中配置也能够,如图:
Passphrase:密码(11服务器生成密钥对的密码,若是未设置则为空)
Path to key:私钥(id_rsa)的路径
Key:私钥(id_rsa)的内容
私有配置:
SSH Server Name:jenkins测试(随便取)
Hostname:ssh链接的目标主机ip,10.8.165.15
Username:用户名
Remote Directory:远程目录
测试链接,success表示链接成功。
另外一种是经过用户名和密码的链接,经过用户名和密码链接的方式则无需配置密钥的一步,直接进行以下配置:
点击Advanced...,添加密码,测试链接success,如图:
若是多台服务器配置点击add按钮添加,配置方式同样,如图:
到此,ssh服务器已配置完毕。
4 系统部署
对于jenkins的自动构建部署,首先咱们要了解jenkins工做的过程,才知道须要配置些什么,文章开头对jenkins原理大概描述了,咱们要实现的就是:开发者只要经过IDE提交代码到GitLab,jenkins能自动监测到提交的最新代码,从GitLab特定分支下载源码,并经过maven构建工具进行编译打包(war、jar),经过shell脚本对项目历史版本进行备份、删除,而后经过ssh插件工具上传到生产Tomcat项目部署路径下,对Tomcat进行中止,重启,完成自动部署。
下面进行项目配置,建立项目,如图:
填写项目名称,建立maven项目,点击肯定,如图:
紧接着到项目配置的页面,复制gitlab项目的ssh下载地址:
Description,填写一下项目描述:
而后进入Source Code Management(源码管理),若是在gitlab中设置了密钥,则须要到Jenkins的Credentials→System→Global credentials (unrestricted)下添加凭据,而后Credentials处能够选择所添加的凭据名称了,也能够在此处直接点Add添加,只要保证jenkins能从gitlab下载源码便可。
下一步Build Triggers,构建需求中要求IDE提交代码即当即触发构建,用到一个叫webhooks的轻量的事件处理应用,gitlab中已经有这项功能,这就须要先下载Gitlab Hook Plugin 插件,若是你安装好插件后能看到如图功能,勾选Build when a change is pushed to GitLab,这里复制 GitLab webhook URL暂时保存到记事本,后面有用。
点击Advanced...展开,点击Generate建立Secret token,再把token复制到记事本,如图:
接下来到gitlab中设置,进入到项目设置中,看到webhooks选项,点进去看到如图,将刚才保存到记事本的url和Secret Token分别填入,下拉滚动条后看见Add Webhook,点击进入。
点击Add Webhook后,在已经添加的webhook中看到,
点击test,若是看到下图。则证实链接成功。
下面进入到Pre Steps,点击Add pre-build step,进行构建前操做,目的是构建前对服务器已经部署的项目进行备份,如图:
点击Send files or execute commands over SSH,选择已经添加的ssh servers,如图:
Exec command中添加备份脚本,参考:
echo "备份war" tomcatpath=/opt/app/apache-tomcat-8.0.46 war_name=项目名称 mkdir -p ${tomcatpath}/webapps/bak cp ${tomcatpath}/webapps/${war_name}.war ${tomcatpath}/webapps/bak/${war_name}.war-`date +%Y-%m-%d_%H%M`
点击Build,配置maven的构建,指令“clean package -Dmaven.test.skip=true”,跳过且不编译测试类,MAVEN_OPTS仓库位置,如图:
接下来配置构建后操做,进入Post Steps,点击Add post-build step,选择Send files or execute commands over SSH,这一步操做将maven构建后的war包上传到服务器,关闭tomcat,重启tomcat,以及日志输出到jenkins一系列步骤。
点击Send files or execute commands over SSH,
Name:选择服务器,
Source files:填写构建后的war包(target/*.war),
Remove prefix:去掉Source files文件的前缀,这里就是target,
Remote directory: 远程目录,上面配置ssh servers时路径已经配好,这里不 须要重复配置。
Exec command:执行指令对tomcat进行操做。
脚本参考:
#!bin/bash tomcatpath=/opt/app/apache-tomcat-8.0.46 war_name=项目名称 echo "关闭tomcat" sh ${tomcatpath}/bin/shutdown.sh echo "检查tomcat是否关闭" tomcat_pid=`ps -ef|grep "tomcat" |grep -v grep|awk '{print $2}'` echo $tomcat_pid kill -9 $tomcat_pid echo "tomcat has shutdown" echo "删除项目" rm -rf ${tomcatpath}/webapps/${war_name}_bak mv ${tomcatpath}/webapps/${war_name} ${tomcatpath}/webapps/${war_name}_bak rm -rf ${tomcatpath}/logs/catalina.out echo "启动tomcat" sh ${tomcatpath}/bin/startup.sh echo "输出日志" sleep 8s i=1 while(($i<20)) do CHECK_RESULT=`cat ${tomcatpath}/logs/catalina.out | grep 'org.apache.catalina.startup.Catalina.start Server startup in' | wc -l` if(($CHECK_RESULT==1)) then cat ${tomcatpath}/logs/catalina.out echo "build success" exit 0 else echo "waiting"$i sleep 2s fi i=$(($i+1)) done cat ${tomcatpath}/logs/catalina.out echo "build fail" exit 1
如需构建成功后进行邮件通知可接着配置:
到这里,项目配置大概完毕,回到项目首页,点击当即构建:
查看日志:
构建成功:
Tomcat启动成功,整个构建过程完毕,tomcat的日志打印参考linux cat指令,tail指令。
若是上面Build Triggers webhooks配置成功,那么只要提交代码到gitlab,便可自动构建,就不须要人工干预去执行构建操做了。
5 维护
5.1 备份
Jenkins的配置建议进行备份,备份方法:安装ThinBackup插件,进入Manage Jenkins→ ThinBackup,如图:
点击Settings,设置Backup directory备份目录:
回到ThinBackup插件首页,点击 Backup Now,这一步没有提示,去到备份目录下可看到备份的记录:
恢复备份点击Restore,如图,选择恢复的版本,恢复便可: