• jenkins企业级实战


    简介

    Jenkins是一个独立的开源自动化服务器,可用于自动执行与构建,测试,交付或部署软件相关的各种任务。

    Jenkins可以通过本机系统软件包,Docker安装,甚至可以由安装了Java Runtime Environment(JRE)的任何机器独立运行。

    能够部署使用Maven构建的java项目,使用npm构建的Node.js项目还有PyInstaller构建的Python应用。

    本文仅涉及maven项目,jenkins官网:https://jenkins.io/
    有关jenkins部署前端项目,请参考:https://blog.csdn.net/GY325416/article/details/84248817

    下载安装

    推荐rpm包安装:https://blog.csdn.net/GY325416/article/details/82560528
    war包安装方式:https://blog.csdn.net/GY325416/article/details/84250071

    项目部署

    这有一个spring boot的eureka注册中心https://gitee.com/hello-piper/testGit.git,我将使用这个项目演示maven项目部署

    部署流程(请予以重视)

    A:即是jenkins所在机器, B:项目将要部署的机器

    • A机器 从gitlab下载最新代码到本机
    • A机器 使用maven打包项目,在target目录产生*.war包
    • A机器 通过ssh将war包传输到B机器,并执行B的restart.sh脚本
    • B机器脚本功能:将war包放到tomcat的webapps目录中,重启tomcat

    如果项目是spring boot编写的可执行jar包,那么B的restart.sh脚本功能修改为重启jar就行了,具体后面会讲。

    插件准备

    仅仅Jenkins安装好其实做不了什么事情,还需要很多插件支持,前面已经自动安装了一部分,但是远远不够,这里给出需要用到的一些
    点击 系统管理–>管理插件

    • Maven Integration
    • SSH
    • Publish Over SSH
    • Git Parameter

    工具配置

    以下是部署项目要用到的配置

    配置jdk

    点击 系统管理 --> 全局工具配置
    这里写图片描述

    配置maven

    点击 系统管理 --> 全局工具配置
    这里写图片描述

    配置ssh

    点击 系统管理 --> 系统设置 --> 最下面Publish over SSH --> SSH Servers
    这里配置的是项目要部署的机器地址,可配置多个
    这里写图片描述

    项目空间准备

    上面部署流程将war包传输到B机器之后我们需要启动这个war包,这样就需要有一个tomcat,还需要一个脚本,执行war包的复制过程,tomcat的启动过程。
    将这些有关register项目的文件统一放到一个文件夹,我的项目目录如下
    这里写图片描述

    新建任务

    新建maven项目,名字尽量和项目名称一致
    这里写图片描述

    配置项目分支和环境参数
    这里写图片描述

    使用maven进行构建
    这里写图片描述

    部署地址
    这里写图片描述

    这样配置之后就能将项目部署到192.128.1.202机器上了,当然你也可以远程到本机

    war方式项目restart.sh脚本

    #!/bin/bash -l
    tomcat_home=/usr/local/app/engineering/apache-tomcat-8.0.53
    jenkins_package=/usr/local/app/upload
    SHUTDOWN=$tomcat_home/bin/shutdown.sh
    STARTTOMCAT=$tomcat_home/bin/startup.sh
    echo "关闭$tomcat_home"
    
    $SHUTDOWN
    ps -ef |grep tomcat |grep $tomcat_home |grep -v 'grep'|awk '{print $2}' | xargs kill -9
    
    #删除webapp文件夹
    rm $tomcat_home/webapps/* -rf
    #删除日志文件,如果你不先删除可以不要下面一行
    rm  $tomcat_home/logs/* -rf
    #删除tomcat的临时目录
    rm  $tomcat_home/work/* -rf
    #删除cataline文件
    rm -rf $tomcat_home/logs/catalina*
    #拷贝打好的war包到tomcat
    cp -f $jenkins_package/engineering.war $tomcat_home/webapps/engineering.war
    
    sleep 1
    echo "启动$tomcat_home"
    $STARTTOMCAT
    sleep 3
    #看启动日志
    #tail -f $tomcat_home/logs/catalina.out
    

    jar方式项目restart.sh脚本

    #!/bin/bash
    
    # 项目地址
    pro_path=/usr/local/app/share-cloud-config/
    # jar包名称
    jar_name=share-cloud-config.jar
    # 启动参数
    JAVA_OPTS='-server -Xms1024m -Xmx1024m'
    
    cd $pro_path
    pwd
    # 启动jar包命令
    runjar="nohup /usr/local/software/jdk1.8.0_141/bin/java -jar ${JAVA_OPTS} ${jar_name} 1>log.log 2>&1 &"
    
    # 查看这个jar是否已经启动
    if test $(pgrep -f $jar_name|wc -l) -eq 0 
    then {
        echo "应用没有启动" # 没有启动
    } else {
        echo "应用已经启动" # 已经启动 清理掉
        kill -9 $(pgrep -f $jar_name)
    }
    fi
    
    rm -rf $pro_path/$jar_name  # 删除原来的jar
    cp /usr/local/app/upload/$jar_name $pro_path  # 复制一份新的jar
    eval $runjar  #启动jar
    sleep 3
    

    新建任务图解

    https://note.youdao.com/share/?id=25026fc8a8a0340cfa1eefc0837baae2&type=note

    注意

    jenkins启动A项目,如果B项目依赖了A项目,那么在A项目启动过后,会重启B项目

  • 相关阅读:
    HTML+CSS面试题汇总(持续更新)
    vue-router
    MongoDB
    闭包
    JavaScript的严格模式
    IO题目
    Java 题目集 编程
    Java题目集 函数
    2.面向对象基础-04继承
    2.面向对象基础-03Java数组
  • 原文地址:https://www.cnblogs.com/paper-man/p/13284735.html
Copyright © 2020-2023  润新知