美文网首页程序员
架构源于实践(Jenkins自动化部署篇二)

架构源于实践(Jenkins自动化部署篇二)

作者: Antz_H碎碎念 | 来源:发表于2017-11-09 22:43 被阅读206次

    不积跬步 ,无以至千里

    本文是原创持续连载发布,这篇主要是承接(Jenkins自动化部署篇一)的内容,亲手搭建使用Publish Over SSH插件构建项目实现远程自动化部署。如有文中有书写或部署问题,请留言指导修正,互相交流,共同进步,本人QQ:417213902。

    一、使用Publish Over SSH插件构建项目

    1、原理说明

    使用Publish Over SSH插件在Jenkins上发布,应该适用于大部分环境,比如多工程同时发布、多服务器同时发布等场景。其原理是Jenkins集成了Git、Maven将项目检出、打包到Jenkins宿主服务器的工作空间中,再将需要发布的war包发布到应用服务的临时目录下,然后通过该插件远程调用应用服务器上的发布脚本,将临时目录下的war替换容器下的文件,从而达到自动化发布的效果。

    2、原理实施

    • 第一步 安装Publish Over SSH插件
      打开Jenkins页面,点击【系统管理】-【管理插件】-【已安装】下搜索 关键字ssh,出现下图,表示已经安装,若未出现,则去下载Publish Over SSH插件
      再去【高级】中上传插件。

      image.png
    • 第二步 配置服务器间的秘钥认证
      目的是Jenkins服务器与应用服务器间通信时不需要再次输入密码
      ⑴ 在Jenkins服务器上生成密钥对,使用ssh-keygen -t rsa命令
      # cd ~
      # ssh-keygen -t rsa 直接回车
      # cd ~/.ssh/
      # ll

      image.png
      出现id_rsa 和 id_rsa.pub 这两个文件表示成功
      image.png
      ⑵把生成的 id_rsa.pub 文件复制到应用服务器上
      # scp id_rsa.pub root@192.168.1.110:~/.ssh/
      需要输入110服务器的root密码
      文件复制成功
      ⑶验证是否成功
      # ssh root@192.168.1.110
      应该是无秘自动登录,表示成功,否则请重新检查配置步骤
    • 第三步 写发布脚本
      这是根据个人经验写的简单发布脚本,可以优化的空间很大,但是也是可以实现完整的发布流程

    #! /bin/bash
    TOMCAT_HOME=/opt/soft/apache-tomcat-7.0.82
    JAVA_HOME=/opt/soft/jdk1.8.0_112
    TOMCAT_PORT=8080
    WAR_HOME=/tmp/*.war
    tomcat_pid=`ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'`
    if [ -n "$tomcat_pid" ];
      then
        echo "tomcat pid now :" $tomcat_pid
        $TOMCAT_HOME/bin/shutdown.sh
        sleep 5
    fi
    #while [ -n "$tomcat_pid" ]
    #do
    #   kill -9 $tomcat_pid
    #   sleep 5
    #   tomcat_pid="ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'"
    #   echo "scan tomcat pid :" $tomcat_pid
    #done
    echo "kill tomcat success !!!"
    function fcopyFile(){
          if [ -f "$1" ];then
            echo "$1 exist"
            cp -R $1 $TOMCAT_HOME/webapps
          else
            echo "$1 not exist"
          fi
    }
    echo "deploy war to tomcat start !!!"
    #ls "$WAR_HOME" >> $(date +%Y%m%d%H%M)_deploy_warName.text
    fcopyFile "/tmp/dubbo-service.war"
    fcopyFile "/tmp/dubbo-web.war"
    echo "deploy war to tomcat end !!!"
    $TOMCAT_HOME/bin/startup.sh
    sleep 5
    tomcat_pid=`ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'`
    if [ ! -n "$tomcat_pid" ];
      then
        echo "start tomcat failed"
    else
        echo "start tomcat success"
    fi
    
    • 第四步 配置Jenkins
      点击【系统管理】-【系统设置】向下翻动找到【Publish over SSH】
      配置如下,可指定多台SSH Server
    image.png

    配置完成后,点击 【Test Configuration】,出现success表示成功


    image.png
    • 第五步 构建项目
      点击 【新建】选择【构建一个自由风格的软件项目】
      配置源码管理


      image.png

    配置Maven 构建


    image.png

    配置构建后操作(重点)
    点击 【增加构建后操作步骤】选择【Send build artifacts over SSH】


    image.png image.png

    保存,点击【立即构建】

    image.png

    应用服务器上的临时目录


    image.png

    tomcat下的webapps目录,已发布成功


    image.png

    好了,基于Publish Over SSH插件自动化发布已经搭建好了,我想有了这个例子作为前期辅助,大家脑洞应该可以大开了吧!!!
    其实Jenkins发布的方式有很多,大家还是要选择适合自己项目、公司的发布流程去搭建,祝大家学习愉快,天天进步!!!
    PS:本来准备这一版,是开始解决架构过程中的单点问题的,但是后来发现Jenkins篇一过于简单,日常场景很多都不实用,所以决定写了这篇。
    后面还想再进一步学习下Jenkins结合Ansible实现自动化部署和回滚,日常工作比较忙,还是得看时间咯!!!

    2017-11-09 22:41:00

    相关文章

      网友评论

        本文标题:架构源于实践(Jenkins自动化部署篇二)

        本文链接:https://www.haomeiwen.com/subject/pkommxtx.html