Linux平台搭建Jenkins+Maven+Shell实现自动化构建部署
- 切换到/usr/local/src路径
cd /usr/local/src
- 下载Jenkins官方war包(采用war包安装方式,启动tomcat即连jenkins一同启动,如链接失效请自行百度搜索Jenkins官网进行下载)
wget http://ftp.tsukuba.wide.ad.jp/software/jenkins/war/1.642/jenkins.war
- 下载JDK8(登陆JAVA官网下载JDK8的RPM包,如链接失效请自行百度搜索JDK官网进行下载)
wget http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.rpm?AuthParam=1450231240_a268c960892022b130dab65f70029cf2
下载完需要将文件名称修改为XXX.rpm结尾的文件才可安装例如JDK8.rpm
- 下载Tomcat7的tar包(目前Jenkins只支持tomcat7,tomcat8以上版本需等待Jenkins官方更新,如链接失效请自行百度搜索Tomcat官网进行下载)
wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.67/bin/apache-tomcat-7.0.67.tar.gz
- 安装git工具
yum install -y git
- 下载Maven(请下载以bin.tar.gz结尾的包,如链接失效请自行百度搜索Maven官网进行下载)
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
- 下载Ant(请下载以bin.tar.gz结尾的包,如链接失效请自行百度搜索Ant官网进行下载)
wget http://120.198.244.48:9999/mirror.bit.edu.cn/apache//ant/binaries/apache-ant-1.9.6-bin.tar.gz
- 安装JDK8
rpm -ivh JDK8.rpm #安装rpm包
java -version #查看安装成功后的java版本
- 添加环境变量
vim /etc/profile添加以下内容:
JAVA_HOME=/usr/java/jdk1.8.0_65
JRE_HOME=/usr/java/jdk1.8.0_65/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
vim /etc/bashrc添加以下内容:为后期Jenkins自动发布时调用shell做准备
JAVA_HOME=/usr/java/jdk1.8.0_65
JRE_HOME=/usr/java/jdk1.8.0_65/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
- 使环境变量立即生效
source /etc/profile
source /etc/bashrc
- 安装Tomcat
tar -zxvf apache-tomcat-7.0.67.tar.gz #解压tomcat tar包
mv apache-tomcat-7.0.67 /usr/local/tomcat7 #将tomcat目录移动到/usr/local/下并重命名为tomcat7
- 移动jenkins.war到tomcat webapps目录下并安装启动jenkins
mv /usr/local/src/jenkins.war /usr/local/tomcat7/webapps/
cd /usr/local/tomcat7/webapps
java -jar jenkins.war #安装jenkins
/usr/local/tomcat7/bin/startup.sh #启动tomcat
- 安装Maven
cd /usr/local/src
tar -zxvf apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9 /usr/local/maven
- 添加环境变量
vim /etc/profile添加以下内容:
MAVEN_HOME=/usr/local/maven
PATH=$PATH:$MAVEN_HOME/bin
export PATH MAVEN_HOME
- 安装Ant
cd /usr/local/src
tar -zxvf apache-ant-1.9.6-bin.tar.gz
mv apache-ant-1.9.6 /usr/local/ant
- 添加环境变量
vim /etc/profile添加以下内容:
ANT_HOME=/usr/local/ant
PATH=$PATH:$ANT_HOME/bin
export PATH ANT_HOME
source /etc/profile #使环境变量立即生效
增加需要用到的插件:Deploy to container Plugin、GIT plugin、Maven Integration plugin、Publish Over SSH、SSH Slaves plugin、Subversion Plug-in,请用以下示范方法添加安装需要的插件
- 调整相关系统设置项,请自行找出列出的设置项并填写相关内容
到此Jenkins的系统设置即完成了,点击左下角的保存即可返回主页测试新建构建任务和发布,在新建构建任务的过程中要读取相应的源代码git库,因此首先要确保jenkins的服务器安装了git并且能顺利从git库中获取到相应的源代码才可以进行代码构建与发布。
云房使用了GitLab存放源代码,git地址为git@192.168.3.249:o2o/yf_EstimateMiddleware.git,要获取源代码首先要在jenkins服务端系统中/root/.ssh目录下生成一个公钥文件与私钥文件,将公钥文件的内容拷贝到GitLab中指定帐户的SSH密钥文本款中,看下图:
至此GitLab的权限添加完成,接着在jenkins服务端系统中测试拉取git库中的源代码文件,获取成功即可看到项目文件
mkdir /home/testgit
cd /home/testgit
git clone git@192.168.3.249:o2o/yf_EstimateMiddleware.git
- 新建构建任务
填写以下相应内容:
点击左下角保存后点立即构建,jenkins会进行编译安装与打包将项目生成一个包含项目名称.war结尾的包,构建完成后请点击工作空间--target即可看到项目名称.war的包
接着点击配置,继续配置构建后的发布操作,如下图:
到此jenkins构建发布任务配置完成,还需做一步在发布的目标服务器上/save目录中建立一个publish.sh名称的脚本并给予执行权限,编写以下内容:
#!/bin/bash
#定义变量
TOMCAT_HOME="/usr/local/tomcat7"
TOMCAT_PORT=80
PROJECT="$1"
#参数验证
if [ $# -lt 1 ]; then
echo "you must use like this : ./publish.sh <projectname> [tomcat port] [tomcat home dir]"
exit
fi
if [ "$2" != "" ]; then
TOMCAT_PORT=$2
fi
if [ "$3" != "" ]; then
TOMCAT_HOME="$3"
fi
#关闭 tomcat
"$TOMCAT_HOME"/bin/shutdown.sh
echo "tomcat shutdown"
#检查 tomcat 进程
tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
echo "current :" $tomcat_pid
while [ -n "$tomcat_pid" ]
do
sleep 5
tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
echo "scan tomcat pid :" $tomcat_pid
done
#发布项目
echo "scan no tomcat pid,$PROJECT publishing"
rm -rf "$TOMCAT_HOME"/webapps/$PROJECT*
cp /save/$PROJECT*.war "$TOMCAT_HOME"/webapps/$PROJECT.war
#备份项目
BAK_DIR=/save/bak/$PROJECT/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp "$TOMCAT_HOME"/webapps/$PROJECT.war "$BAK_DIR"/"$PROJECT"_`date +%H%M%S`.war
#删除项目.war包
rm -rf /save/$PROJECT.war
#启动 tomcat
"$TOMCAT_HOME"/bin/startup.sh
echo "tomcat is starting,please try to access $PROJECT conslone url"
最后点立即构建测试构建及shell脚本发布项目
构建发布完成,请访问http://目标服务器IP/项目名称
PS:如果系统中禁用了root用户的情况下,请把相应项目名称的文件夹所属主与所属组全部修改为对应的用户名与用户组,否则发布会失败