自动化部署流程
程序项目结构
deploy.sh 自动化部署命令脚本
jenkins将会远程执行deploy.sh脚本自动化部署程序到tomcat
#!/bin/bash
# $PROJ_PATH:jenkins远程工作目录,执行脚本时传入
# $TOMCAT_PATH:tomcat目录,执行脚本时传入
# 关闭tomcat
killTomcat()
{
pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
echo "tomcat id list :$pid"
if [ "$pid" = "" ]
then
echo "no tomcat pid alive"
else
kill -9 $pid
fi
}
# 进入远程工作目录
cd $PROJ_PATH/jenkinsWeb
# maven打包程序
mvn clean install
# 结束tomcat进程
killTomcat
# 删除旧文件
rm -rf $TOMCAT_PATH/webapps/ROOT
rm -f $TOMCAT_PATH/webapps/ROOT.war
rm -f $TOMCAT_PATH/webapps/jenkinsWeb.war
# 拷贝文件
cp $PROJ_PATH/jenkinsWeb/target/jenkinsWeb.war $TOMCAT_PATH/webapps/
# 进入tomcat/webapps目录
cd $TOMCAT_PATH/webapps/
# 重新命名
mv jenkinsWeb.war ROOT.war
# 进入tomcat目录
cd $TOMCAT_PATH/
# 重新启动tomcat
sh bin/startup.sh
Git地址
[email protected].199.140:chy2z/jenkinsWeb.git
Tomcat服务器环境
ip:192.168.199.106
jdk:1.8
maven:3.3.9
tomcat:8.5.32
Jenkins新建任务
任务名称:DeployJenkinsWeb
配置General
节点jenkinsWeb的远程工作目录:/root/.jenkins
tomcat运行在jenkinsWeb节点上
配置Git
Local subdirectory for repo: 是配置jenkins下载git代码的子目录
本示例代码下载目录:/root/.jenkins/workspace/DeployJenkinsWeb/jenkinsWeb
配置构建
选择执行shell(自动部署时在远程服务器执行shell命令)
# 防止关闭jenkins进程
BUILD_ID=DONTKILLME
# 配置环境变量
. /etc/profile
# jenkins远程工作目录
export PROJ_PATH=`pwd`
# 远程tomcat目录
export TOMCAT_PATH=/usr/local/apache-tomcat-8.5.32
# 执行远程脚本
sh $PROJ_PATH/jenkinsWeb/deploy.sh
保存即可!
立即构建
查看构建结果
点击 #1,然后点击 控制台输出,查看结果
由用户 admin 启动
在远程节点 jenkinsWeb 上构建 在工作空间 /root/.jenkins/workspace/DeployJenkinsWeb 中
Cloning the remote Git repository
Cloning repository [email protected]:chy2z/jenkinsWeb.git
> /usr/bin/git init /root/.jenkins/workspace/DeployJenkinsWeb/jenkinsWeb # timeout=10
Fetching upstream changes from [email protected]:chy2z/jenkinsWeb.git
> /usr/bin/git --version # timeout=10
using GIT_SSH to set credentials gitlab-ssh-key
> /usr/bin/git fetch --tags --progress [email protected]:chy2z/jenkinsWeb.git +refs/heads/*:refs/remotes/origin/*
> /usr/bin/git config remote.origin.url [email protected]:chy2z/jenkinsWeb.git # timeout=10
> /usr/bin/git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
> /usr/bin/git config remote.origin.url [email protected]:chy2z/jenkinsWeb.git # timeout=10
Fetching upstream changes from [email protected]:chy2z/jenkinsWeb.git
using GIT_SSH to set credentials gitlab-ssh-key
> /usr/bin/git fetch --tags --progress [email protected]:chy2z/jenkinsWeb.git +refs/heads/*:refs/remotes/origin/*
> /usr/bin/git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> /usr/bin/git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 3bdaa3b3784ec67f68e91d1b016693bfa36afe04 (refs/remotes/origin/master)
> /usr/bin/git config core.sparsecheckout # timeout=10
> /usr/bin/git checkout -f 3bdaa3b3784ec67f68e91d1b016693bfa36afe04
Commit message: "workspace"
First time build. Skipping changelog.
[DeployJenkinsWeb] $ /bin/sh -xe /tmp/jenkins4953122394921675090.sh
+ BUILD_ID=DONTKILLME
+ . /etc/profile
...................省略部分内容......................
++ pwd
+ export PROJ_PATH=/root/.jenkins/workspace/DeployJenkinsWeb
+ PROJ_PATH=/root/.jenkins/workspace/DeployJenkinsWeb
+ export TOMCAT_PATH=/usr/local/apache-tomcat-8.5.32
+ TOMCAT_PATH=/usr/local/apache-tomcat-8.5.32
+ sh /root/.jenkins/workspace/DeployJenkinsWeb/jenkinsWeb/deploy.sh
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building jenkinsWeb Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://maven.aliyun.com/nexus/content/repositories/central/org/apache/maven/plugins/maven-clean-plugin/3.0.0/maven-clean-plugin-3.0.0.pom
4/5 KB
5/5 KB
...................省略部分内容......................
Downloaded: http://maven.aliyun.com/nexus/content/repositories/central/commons-codec/commons-codec/1.6/commons-codec-1.6.jar (228 KB at 516.6 KB/sec)
[INFO] Installing /root/.jenkins/workspace/DeployJenkinsWeb/jenkinsWeb/target/jenkinsWeb.war to /root/.m2/repository/com/chy/jenkinsWeb/1.0-SNAPSHOT/jenkinsWeb-1.0-SNAPSHOT.war
[INFO] Installing /root/.jenkins/workspace/DeployJenkinsWeb/jenkinsWeb/pom.xml to /root/.m2/repository/com/chy/jenkinsWeb/1.0-SNAPSHOT/jenkinsWeb-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 59.846 s
[INFO] Finished at: 2018-09-02T23:24:59+08:00
[INFO] Final Memory: 14M/180M
[INFO] ------------------------------------------------------------------------
tomcat id list :5536
Using CATALINA_BASE: /usr/local/apache-tomcat-8.5.32
Using CATALINA_HOME: /usr/local/apache-tomcat-8.5.32
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.5.32/temp
Using JRE_HOME: /usr/local/jdk1.8.0_181/jre
Using CLASSPATH: /usr/local/apache-tomcat-8.5.32/bin/bootstrap.jar:/usr/local/apache-tomcat-8.5.32/bin/tomcat-juli.jar
Tomcat started.
Finished: SUCCESS
看到 finished:success说明构建成功
#1构建运行结果
编辑代码重新提交git,#2构建运行结果