使用Jenkins实现自动化部署项目
1 Jenkins简介与安装
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。 通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
1.1 Jenkins使用前后对比
1.1.1 传统的项目部署
1.1.2 Jenkins持续部署
1.2 Jenkins安装与环境配置
官方下载地址:https://jenkins.io/download/,我选择下载的war包,将war包用xftp传到自己的服务器后,进入你war包存放的位置,输入以下指令后台启动jenkins:
nohup java -jar jenkins.war --logfile=server.log --httpPort=8088 > server.log 2>& 1 &`
启动成功之后,浏览器输入服务器的ip+Jenkins启动端口号,就可以进入到 Jenkins的登录界面。登录成功之后,我们需要安装Git、Maven和deploy to web container等相应的插件。
2 配置系统设置
2.1 新建maven项目
2.2 配置项目
2.2.1 General选项
2.2.2 源码管理设置
该选项中我们要配置项目的仓库地址和管理该仓库的账号,如下图。
2.2.3 构建触发器
该选项中我们可以设置项目的定时构建,让项目每天定时构建一次。
2.2.4 build与post steps设置
该选项中我们要配置项目的pom.xml文件的位置以及Maven执行的操作,这里选择clean和install。
若不知道pom.xml在哪,可以先执行一次构建,构建会把代码克隆下来,我们可以在工作空间中看到。
2.2.5 构建后操作
该步骤中选择Send build artifacts Over SSH,这里我们需要填写服务器名称以及相应的路径。图中的Exec command
是我们要运行的执令,此处运行了我自己写的一个叫hello.sh
的启动脚本,同样,如果我们要一次部署到多台服务器上的话,只需要点击Add Transfer Set
再和上图一样设置另一台服务器即可,设置完成之后点击应用和保存。
3 编写启动脚本
以上jenkins帮我们做了事情主要有如下几个:
- 从仓库中克隆代码;
- maven的
clean install
; - 当build成功后,将相应的文件传输到我们指定的服务器中(此处传输的是jar包);
- 定时重复上述步骤。
由此可见,jenkins并没有使我们项目启动起来,为此我们需要编写启动脚本。
#!/bin/bash
function killproject()
{
project_pid=$(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)
if [ $project_pid > 0 ];then
echo "项目已经启动了,开始关闭项目,项目pid为: $project_pid "
kill -9 $(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)
echo '项目关闭成功,开始重启项目。。。'
else
echo "项目未启动,直接启动"
fi
}
function start_project()
{
source /etc/profile
echo '正在启动项目。。。'
cd /usr/local/jenkins-jar/
nohup java -jar demo-0.0.1-SNAPSHOT.jar >warpper.log &2>1 &
}
function check_project()
{
check_pid=$(netstat -lnp | grep 18099|awk '{print $7}'|cut -d/ -f1)
if [ $check_pid > 0 ];then
echo "project is start and pid = : $check_pid "
else
echo "project are not start"
fi
}
killproject
start_project
sleep 30
check_project
代码分析,其中:
- killproject()函数作用是查看系统中该项目是否已启动,若已启动,则先kill掉该进程,再启动;若未启动,则直接启动。
- start_project()函数作用是进入我的jar包存储路径,并后台运行,函数中的
source /etc/profile
目的是使项目可以后台启动(其实我没加的时候,后台启动项目一直不能用,报错找不到java环境)。 - check_project()函数作用是检查项目是否正常启动,可以在jenkins控制台中看到输出信息。
- sleep 30是为了等待我的springboot启动完,然后我们查看它的进程id.
4 构建项目
- 点击立即构建,就可以完成项目的自动部署了,控制台中我们可以看到项目的启动信息。项目正式部署完成。