本文主要讲解使用Jenkins进行项目的自动化部署,自动化部署可以大大减少手工部署的人员时间花销,提高工作效率。
首先我们应该下载Jenkins的安装包进行安装。下面以Windows版本的Jenkins为演示,Linux版本的Jenkins操作与之类似。大家可以自己进行配置。下面去Jenkins的官网下载安装包 https://jenkins.io/
经由第一步下载自己所需要版本的Jenkins,以Windows版本为例,Windows版本的后缀为.msi文件。安装过程直接下一步就行。安装成功后,Jenkins服务直接开启,可以在Window的服务中进行查看,之后我们需要对Jenkins的默认设置进行修改,由于Jenkins的默认端口号与Tomcat默认的端口号同为8080,因此我们需要修改Jenkins的默认端口号,在Jenkins的安装根目录找到jenkins.xml配置文件,如下图所示:
修改后需要特别注意的是需要重启Jenkins服务,在Windows的服务中找到Jenkins右键重新启动即可。
完成后打开浏览器输入http://localhost:6060/(根据自己的设置选择端口号)
首次进入需要输入密码,根据页面上的提示找到指定的文件获取里面的密码即可。如下图所示(由于第一次没有截图,在网上找了张图片)
输入正确密码后进入安装插件界面,如下图所示:(网络图片),选择使用第一个推荐插件安装。
等候插件的安装,插件安装完成后进入创建用户的界面,用户可以创建指定名称的用户作为登录人。如下图所示:
配置完上面的信息之后进入Jenkins的主界面:
此时不应该急于创建项目,我们需要安装一下其他的插件。
点击系统管理—插件管理,进入插件管理界面,在可选插件中搜索搜索下载以下插件(Maven Integration plugin 、Publish Over SSH、Deploy to container Plugin、Subversion Plugin)进行安装。安装完成需要重启Jenkins服务。如下如所示:
安装完成之后我们需要配置一下Jenkins的Maven与JDK配置。系统设置–全局工具配置找到Maven和JDK配置,点击Save,如下图所示:
接下来配置一下SSH Servers,SSH Servers主要配置一下我们将要部署的服务器信息, Passphrase可以是私钥密码或者服务器登陆密码,Path to key为私钥路径, Key为私钥,Key优先级大于Path to key,新手推荐使用服务器登陆密码,点击保存。如下图所示:
完成至此,Jenkins的配置已经告于段落。下面进行Jenkins的项目创建。
此时选择新建任务,选择构建一个Maven项目,输入项目的名称,点击确认。如下图所示:
进入Jenkins的项目的配置界面,此环节最为重要,也容易出错,望大家一定注意。此处丢弃旧的构建策略,在这里我们需要填写自定义的丢弃旧的构建设置,这里我们将“保持构建的天数”以及“发布包保留天数”均设置为7天,将“保持构建的最大个数”设置为10条,而我们每次取用jar包或war包时都只想获取最新版本,所以说我们这里只保存最新版的软件版本信息,因而在“发布包最大保留#个构建”中填写1,填写完之后,点击【保存】按钮即可使新的设置生效
接下来在源码管理中配置版本控制信息。本文以SVN为例,Repository URL为项目SVN的URL连接, Credentials为SVN账户信息,首次配置需要点击后面的ADD进行添加:在username与password上输入用户的SVN账号的信息。
在构建触发器中勾选Delete workspace before build starts
Delete workspace before build starts:默认删除所有的,也可以设置删除特定的文件
- Patterns for files to be deleted:正则匹配删除哪些文件
- Apply pattern also on directories:规则是否也应用到文件夹
- Check parameter:是否删除,是个bool值,true则删除,false不删除.为毛感觉这个有点鸡肋
- External Deletion Command:执行外部删除命令
下面在Post Steps中选择Send files or execute commands over SSH配置文件上传信息与本地文件位置等信息(关键步骤)
Name:选择我们在系统管理-系统设置中创建的SSH Server名称,
Source files:复制到运程机上的文件,相对workspace的路径,也支持表达式,如上图中的“*/.war”。
Remove prefix:文件复制时要过滤的目录,如上图中的target目录。
Remote directory:文件得到到远程机上的目录,此目录是相对于“SSH Server”中的“Remote directory”的,如果不存在将会自动创建。
Exec command:执行的脚本,一般都是停止服务、备份文件、复制最新war包、启动服务。下面是我项目执行的脚本,大家可以以此为例子进行修改。
cd /usr/local/apache-tomcat-7.0.57
#stop tomcat
sh bin/shutdown.sh
sleep 10
#check bak directory
if ! [ -d ./bak ]; then
mkdir bak
fi
#backup adcenter
if [ -d ./webapps/inxedu ]; then
#tar zcf inxedu_bak'date"+%Y%m%d%H%M"'.tar.gz webapps/inxedu
mv webapps/inxedu.war bak/
rm -rf webapps/inxedu*
fi
cp /home/jenkins/*.war /usr/local/apache-tomcat-7.0.57/webapps/inxedu.war
sh bin/startup.sh
注意:
1、这里的Remote Directory是相对系统配置里的Remote Directory的。比如说我这里的系统配置里的Remote Directory设置的是“/root”,然后假如我这里设置的是“/root/bao”。那么那个war包就没有按照我的意思传到/root/bao目录下,而是传到了/root/root/bao目录下。
2、有部分人不喜欢使用linux的编辑器,自己创建文件后修改后缀为.sh文件,在上传至服务器,此操作存在文件格式的问题。我经过这样的操作运行上传的脚步执行报错。
解决办法参考:https://blog.csdn.net/u012453843/article/details/69803244/
下面还可以配置邮件提醒已经定时构建等等不在一一描述。点击应用成功创建项目。
到此自动化部署已经配置完成,希望可以帮助大家,如果文章中有哪些地方出现解释错误或不理解的地方,可以留言指出。我们一起共同进步。