zoukankan      html  css  js  c++  java
  • Jenkins+git+maven自动化打包并部署到服务器(Jenkins服务在Linux系统)

    实现Jenkins自动化部署后台服务,其实比较简单。

    首先,在Linux系统把Jenkins,git,maven,jdk这些常用工具安装好,接下来开始创建Job做构建。

    先看一下构建页面如下图,选择构建的git分支就可以了:

    开始构建配置及构建步骤的实现

    一、参数配置

    Job描述,写一下后台服务的一些信息,不过写不写都无关紧要

    参数:

     

     

     git参数这里配置一下高级如下:

     二、源码管理:

    三、构建步骤

    1.maven插件,maven编译打jar包,即步骤添加Invoke top-level Maven targets

     maven编译打包脚本clean package -U -Ppack -Dmaven.repo.local=$JENKINS_HOME/workspace/zzb/repository -Dmaven.test.skip=true

    2.把打的包以及需要放到服务器的文件及目录重新打成gz包

     Execute shell脚本如下:

    #!/bin/bash
    packagename=zzbservice
    if [ -d $WORKSPACE/Deploy ];then
    rm -rf Deploy
    fi
    mkdir Deploy
    if [ -d "$WORKSPACE/target/$packagename" ];then
    if [ -f "$WORKSPACE/target/$packagename/$packagename.jar" ];then
    cp $WORKSPACE/target/$packagename/$packagename.jar $WORKSPACE/Deploy/
    else
    echo 不存在$packagename.jar && exit 1
    fi
    if [ -d "$WORKSPACE/target/$packagename/lib" ];then
    mkdir Deploy/lib
    cp -R $WORKSPACE/target/$packagename/lib/* $WORKSPACE/Deploy/lib
    else
    echo 不存在lib不存在
    fi
    else
    if [ -f "$WORKSPACE/target/$packagename.jar" ];then
    cp  $WORKSPACE/target/$packagename.jar $WORKSPACE/Deploy/
    else
    echo 不存在$packagename.jar && exit 1
    fi
    fi
    # 把所要上传的到部署服务器的jar包和其他文件打包
    cd $WORKSPACE/Deploy
    echo 进入$WORKSPACE/Deploy目录,并查看当前目录下的子目录及文件
    ls
    echo 打包当前目录
    tar zcvf Deploy.tar.gz *
    echo 返回之前目录
    cd -
    View Code

    四、构建后步骤

    添加步骤Send build artifacts over SSH,插件可以在Jenkins插件里面搜索安装

     

     完整脚本如下:

    #!/bin/bash
    systemname=zzbservice
    packagename=zzbservice
    echo 进入项目所在目录/zzb/$systemname
    cd /zzb/$systemname
    echo ""> ./nohup.out
    if [ -f /zzb/$systemname/$packagename.jar ];then
    echo 已存在$packagename.jar
    if [ $product == Y ];then
    echo Product参数为Y,需要做投产备份
    if [ -d "lib" ];then
    echo 存在lib目录
    echo 备份gz包包含lib目录、$packagename.jar包
    tar -czvf sourceproduct_$packagename.tar.gz lib $packagename.jar
    mv /zzb/$systemname/sourceproduct_$packagename.tar.gz /scss/zzbsource/sourceproduct_$packagename.tar.gz.bak
    else
    echo 不存在lib目录
    echo 备份gz包只包含$packagename.jar包
    tar -czvf sourceproduct_$packagename.tar.gz $packagename.jar
    mv /zzb/$systemname/sourceproduct_$packagename.tar.gz /scss/zzbsource/sourceproduct_$packagename.tar.gz.bak
    fi
    else
    echo Product参数为N,需要做普通备份
    if [ -d "lib" ];then
    echo 存在lib目录
    echo 备份gz包包含lib目录、$packagename.jar包
    tar -czvf $packagename.tar.gz lib $packagename.jar
    mv /zzb/$systemname/$packagename.tar.gz /scss/zzbsource/$packagename.tar.gz.bak
    else
    echo 不存在lib目录
    echo 备份gz包只包含$packagename.jar包
    tar -czvf $packagename.tar.gz $packagename.jar
    mv /zzb/$systemname/$packagename.tar.gz /scss/zzbsource/$packagename.tar.gz.bak
    fi
    fi
    else
    echo 不存在$packagename.jar
    echo "file is not exist"
    fi
    echo 复制构建的包/zzb/$systemname/Deploy/Deploy.tar.gz到项目所在目录,即当前目录
    cp /zzb/$systemname/Deploy/Deploy.tar.gz Deploy.tar.gz
    echo 删除掉原有的lib目录
    rm -rf lib
    echo 解压Deploy.tar.gz包到当前目录
    tar zxvf Deploy.tar.gz
    echo 解压完成,删除掉目录Deploy
    rm -rf Deploy
    Modifytime=`stat /zzb/$systemname/$packagename.jar|grep -i Modify | awk -F. '{print $1}'`
    echo "$packagename.jar包的更新时间为: $Modifytime"
    echo 重启项目
    nohup sh /zzb/$systemname/restart.sh &
    echo 正在重启,请耐心等待.....
    sleep 90
    cat /zzb/$systemname/nohup.out
    pid=`ps -ef |grep $packagename.jar |grep -v grep |awk '{print $2}'`
    if [ "${pid}" ]; then
        echo "restart ok,server is running and pid=$pid"
        echo 部署完成
    else
       echo "restart fail,server is not started"  
        exit 1
    fi
    View Code

    SSH Server高级里面要把Exec in pty勾上

    SSH Publishers层面的高级点开,设置服务器参数SSH_Server

     

     完成。

    晚生不才,请多指教!
  • 相关阅读:
    c31 rotc_百度百科
    c31 rotc_百度百科
    希努尔男装股份有限公司_百度百科
    红领的短板:线下“O”瓶颈_财经频道_一财网
    持外地牌照在京车主每12天组团包车办进京证
    持外地牌照在京车主每12天组团包车办进京证
    关于我们-要约会
    nginx部署~dotnetCore+mvc网站502
    Rabbitmq~linux环境的部署
    Mongodb~Linux环境下的部署~服务的部署与自动化
  • 原文地址:https://www.cnblogs.com/lkc-test/p/15349777.html
Copyright © 2011-2022 走看看