天天看点

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)

自动化部署流程

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)

程序项目结构

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)

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

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)

配置General

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)
节点jenkinsWeb的远程工作目录:/root/.jenkins

tomcat运行在jenkinsWeb节点上
           

配置Git

Local subdirectory for repo: 是配置jenkins下载git代码的子目录

本示例代码下载目录:/root/.jenkins/workspace/DeployJenkinsWeb/jenkinsWeb
           
Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)

配置构建

选择执行shell(自动部署时在远程服务器执行shell命令)

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)
# 防止关闭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
           

 保存即可!

立即构建

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)

查看构建结果

点击 #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构建运行结果

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)

编辑代码重新提交git,#2构建运行结果

Jenkins自动发布(5)-新建任务自动化部署程序(javaweb+maven+gitlab+tomcat)