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

     

     完成。

    晚生不才,请多指教!
  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/lkc-test/p/15349777.html
Copyright © 2011-2022 走看看