让我们聊一聊Jenkins的自动化部署
2017-07-27 本文已影响602人
郭之源
1.Jenkins简介
Jenkins是一个可扩展的持续集成引擎,是一个CI系统。主要用于:
- 持续、自动构建/测试软件项目
- 监控一些定时执行的任务
2.Jenkins的安装
对于初学者可以直接下载jenkins.war文件,Jenkins官网https://jenkins.io/download/
:
下载到本地后可以直接运行: java -jar jenkins.war
注意:机器要求已经安装jdk,并配置环境变量!第一次启动的时候会给你一个密码,留意控制台输出!
还有一种安装方式就是将下载的war包文件部署到 servlet 容器,然后启动容器,在浏览器的URL地址栏中输入类似http://localhost:8080/这样的地址即可:
Jenkins首页.png
3.Jenkins配置
- 安装必要的插件
找到【系统管理】-》【插件管理】-》【可安装插件】,搜索安装Maven集成插件Maven Integration plugin
和SSH插件用于发送文件Publish Over SSH
,以后用到其他插件可以自行安装。 - 配置全局工具(JDK、Git、Maven等)
找到【系统管理】-》【Global Tool Configuration】:
在这个页面你可以安装你是用到的工具,如JDK、Git、Maven等,它也支持自动安装,但不知道为什么我的自动安装未成功,所以选择了手动安装,然后指定了安装目录,配置了环境变量等。
-
系统配置
这里可以配置Jenkins的主目录、工作空间主目录、构建记录根目录、Maven相关配置、publish over SSH相关配置等:
系统配置.png
注意配置SSH Server时候要先将远程服务器的公钥(id_rsa.pub)内容放到Jenkins服务器的authorized_keys中:
ssh公钥.png
到这里我们使用到的配置都Ok了,当然还有其他的好多配置项,如:Configure Global Security、管理用户等,如果有需要的话,也可以进行配置。
4.使用Jenkins部署jar包
- 首先创建一个git仓库,为了方便我就直接在git.oschina.net上创建了:https://git.oschina.net/watermin/jenkins-deploy (项目是公开的需要的同学可以直接看代码),git clone 到本地后,创建一个Maven项目,然后提交上去就行。
注意:项目打包的时候用到了一个插件maven-assembly-plugin
,可以将依赖的jar包都打包到lib下 -
在Jenkins管理页面【新建】项目
image.png -
配置:
部署jar包的配置.png
其中从上向下依次是:
- 配置项目名称及描述
- 源码管理: 我使用的是git,配置git仓库地址、分支等
- 构件触发器:这个我也不太懂,看其他项目都是选了第一个
Build whenever a SNAPSHOT dependency is built
- 构件环境:这个我没有选择任一个
- Pre Steps: 构件本项目之前需要做的操作,通常如果本项目依赖其他项目的jar,可以在这执行maven命令将需要的jar安装到maven仓库中
- Build :执行maven命令将项目进行打包
- Post Steps : 构建后期做的一些操作,如:将软件包发送到指定的服务器进行部署、执行一些linux命令等,本项目就是使用了
Send files execute commands over SSH
将jar包发送到指定的服务器,并在远程服务器上执行一些必要的Linux命令:
cd /web/apps
dir=/web/apps/jenkins-jar-test
TIME=`date "+%Y%m%d%H%M%S"`
FILENAME=jenkins-jar-test.$TIME.tar.gz
if [ -e "$dir" ];then
tar -zcf $FILENAME jenkins-jar-test/
mv $FILENAME /web/bak
rm $dir -rf
fi
mv jenkins-jar/target/jenkins-jar-test-assembly.tar.gz ./
rm -rf jenkins-jar
tar xf jenkins-jar-test-assembly.tar.gz
sh jenkins-jar-test/startup.sh restart
- 测试
到这里项目就配置完成了,然后【保存】,【立即构建】,查看控制台输出,如果顺利的话到此就实现了jar包的自动化部署,在浏览器输入:远程服务器ip:8081
,查看项目有没有启动成功!
访问项目页面.png
5.使用Jenkins部署war包
-
安装Tomcat
如果打的是war的话,一般我们会选择部署到tomcat上,所以首先你要在远程机器上安装一个tomcat,具体安装步骤我就不絮叨了。 -
在本地的建立一个Maven项目
打包成war包(悄悄的告诉你这里已经有了https://git.oschina.net/watermin/jenkins-deploy.git) -
新建项目
同上 -
配置
部署war包的配置.png
其他的配置和上面部署jar包的配置一样,唯一不同的就是Post Steps中的Send files or execute commands over SSH
的配置:
Source files: Jenkins 机器上的war包
Remote directory : 远程服务器上tomcat的ROOT路径
Exec command :在远程机器上指向的Linux命令
DIR=/usr/local/server/jenkins-war-tomcat
WAR_NAME=jenkins-war-test.war
JENKINS_DIR=/root/.jenkins/workspace/jenkins-war/jenkins-war/target
TIME=`date "+%Y%m%d%H%M%S"`
ps -ef | grep ${DIR} | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{print $2}' | xargs kill -9 2>/dev/null
rm -rf work/*
pushd ${DIR}/webapps/ROOT/
[ -e ${WAR_NAME} ] && mv ${WAR_NAME} ../../bak/${TIME}-${WAR_NAME}
pushd jenkins-war/target/
pwd
mv jenkins-war-test.war ../../
pushd ${DIR}/webapps/ROOT/
rm -rf jenkins-war/
jar -xf ${WAR_NAME}
cd ${DIR}
./bin/startup.sh
- 测试,访问
远程机器Ip:8082
测试是否启动成功。
哈哈,到这里jar包、war包的在Jenkins上的配置已经全部完成了,同学你的成功了么,如果有问题欢迎骚扰,吃饭去了,see you !!