tomcat 全量压缩包/war/jar jenkins自动化发版

整体部署方案

前提:开发环境不允许拥有测试环境及准生产或生产环境的配置信息。

每次发版全量发版。

1、通过jenkins调用maven 编译命令,编译仅有测试环境配置文件的maven工程。

2、此stg工程可以下载开发环境已经发布至nexus私服上的压缩包。

3、jenkins执行shell脚步解压配置文件及全量开发版本,组合成一个全量的发版压缩包文件

4、jenkins远程执行shell脚步获取此全量压缩包,进行备份、解压、重启tomcat。


stg工程主要信息

pom.xml

==========================================================================================

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jy.platform</groupId>
<artifactId>com-jy-platform</artifactId>
<version>2.3.0</version>
</parent>
<groupId>com.jy.platform</groupId>
<artifactId>hrtool</artifactId>
<version>pro-0.0.1</version>
<packaging>war</packaging>
<name>hrtool</name>


<description>hrtool-pro-0.0.1</description>


<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<war.name>hrtool-pro-0.0.1</war.name>
</properties>


<dependencies>




</dependencies>




<repositories>
<repository>
<id>jy</id>
<name>jy</name>
<url>http://172.18.100.230:8080/nexus-2.5.1/content/groups/public/</url>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.10</version>
</extension>
</extensions>

<plugins>


<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<executions>
<execution>
<id>download-test-data</id>
<phase>package</phase>
<goals>
<goal>download-single</goal>
</goals>
<configuration>
<url>http://172.18.100.230:8080/nexus-2.5.1/content/repositories/releases/com/jy/platform/hrtool</url>
<fromFile>/1.1.0/hrtool-1.1.0.tar.gz</fromFile>
<toDir>target/</toDir>
</configuration>

</execution>
</executions>
</plugin>




<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>zip.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>


<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
<exclude>**/.svn/*</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.conf</include>
<include>**/*.jsp</include>
</includes>
</resource>
</resources>
</build>
</project>

========================================================================================

zip.xml

<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd">
    <id>package</id>
    <formats><!-- 打包压缩为 *.tar.gz 过滤了相关配置文件信息-->
        <format>tar.gz</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <fileSets>
    <!-- 复制 jsp -->
        <fileSet>
            <directory>target/${war.name}</directory>
            <excludes>
<exclude>META-INF/**</exclude>
</excludes>

            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>



jenkins调用shell脚步组装测试环境全量发版压缩包。

echo '================exec shell to makeup config file info start ================'


#projectName=hrtool
workPath=/home/jenkins/.jenkins/workspace/${JOB_NAME}/target/
archiveName=${projectName}-${projectVersion}.tar.gz
#存放准生产配置文件的压缩包
configName=${projectName}-${POM_VERSION}.tar.gz
#存放全量发版程序的路径
#curWorkPath=${projectName}_$(date "+%y%m%d%H%M%S")


curWorkPath=${projectName}_${fullPackageName}_${BUILD_NUMBER}
if [ ! -d "${workPath}" ]; then
mkdir -p ${workPath}
fi


cd ${workPath}


mkdir $curWorkPath
#cd $curWorkPath


#组装全量发版程序包
#解压待发版程序至指定路径
tar -zxf ${archiveName} -C $curWorkPath
#解压配置文件至指定路径
tar -zxf ${configName} -C $curWorkPath
#压缩全量发版程序至压缩包


cd $curWorkPath/
tar -czf $curWorkPath.tar.gz *
#推送全量压缩包至目标服务器
cp  $curWorkPath.tar.gz /home/jenkins/product-package
#推送至172.16.101.43的nginx目录
cp  $curWorkPath.tar.gz /usr/local/nginx/html


echo '================exec shell to makeup config file info end ================'



jenkins远程执行shell脚本部署测试环境全量的压缩包。


#sh /home/jyapp/deployAPP.sh loan loan-1.0.1.tar.gz
rootPath=`pwd`
backupPath=${rootPath}/backup/
tomcatPath=${rootPath}/apache-tomcat-7.0.59/
# 项目名称(根据实际情况进行配置)
warName=${projectName}
warDir=/home/jyapp/${projectName}
depAppTarName=${projectName}_${fullPackageName}_${BUILD_NUMBER}.tar.gz


fileDate=$(date "+%m%d%H%M%S")
fileName=${warName}"_bak"${fileDate}
appTar=/home/jyapp/${depAppTarName}
#获取tomcat进程ID
tomcatID=$(ps -ef | grep ${tomcatPath} | grep -v 'grep' | awk  '{print $2}')
startTomcat=${tomcatPath}/bin/startup.sh
workSpace=$(pwd)


#主函数
function monitor()
{
  echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
  echo "======================获取最新全量压缩包================="
  wget http://172.16.101.43/$depAppTarName


  if [ ! $depAppTarName ]; then
echo "===$depAppTarName 参数为null,请补充参数===="
exit 1
  fi


  if [ "$tomcatID" ];then
        echo "=====[info]当前tomcat进程ID为:$tomcatID====="
        kill -9 $tomcatID
  fi
  backup
  removeJAR
  upload
  startTomcat
}  
#启动tomcat
function startTomcat(){
     cd $workSpace
     if [ -d "$warDir" ]; then
source /etc/profile
         $startTomcat
         #tail -f ${tomcatPath}/logs/catalina.out
echo "===start ok======="
     else
         echo "startTomcat 没有app: $warDir"
     fi
}
#上传文件
function upload(){
    cd $workSpace
    if [ -d "$warDir" ]; then
        echo "== tar -zxvf $depAppTarName  -C $warDir " 
        #tar -zxvf /home/jyapp/masterdata-2.3.0.tar.gz  -C /home/jyapp/masterdata ;
        tar -zxf $depAppTarName  -C $warDir 
    else
          mkdir $warName
          tar -zxf $depAppTarName  -C $warName
    fi
}
#清除tomcat的项目缓存
function removeJAR(){
   cd $workSpace
   echo "================开始清理tomcat的项目缓存============="
   if [ -d "$tomcatPath" ]; then
     rm -rf $tomcatPath/work/* 
     rm -rf $tomcatPath/temp/*
   else  
     echo "remove JAR不存在 $tomcatPath"        
   fi
   #删除 对应的包
   rm -rf $warDir/
   echo "===============清理完毕=============="  
}  
#备份原来的项目  
function backup(){
    cd $workSpace  
    echo "==========开始备份===================="
    if [ -d "$warDir" ]; then     
        cd $workSpace
        tar -zcf ${fileName}.tar.gz $warName

if [ ! -d "$backupPath" ]; then 
mkdir -p ${backupPath}
fi
mv ${fileName}.tar.gz ${backupPath}
        cd $workSpace
        echo "=============备份完毕================"
    else
        echo "==============backup error 不存在$warDir==============="
    fi
}  


monitor




=================================================================

linux curl获取jenkins构建产物

curl -X GET  'http://172.16.101.22:8080/jenkins/job/LN-STG-163-boot-loan-api/31/com.jy.platform$loan-api/artifact/com.jy.platform/loan-api/1.1.0/loan-api-1.1.0.jar' -H 'authorization: Basic eHVqdW5xaTo8eGpxMDgwMT4=' -o loan-api-1.1.0.jar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值