• Jenkins + SpringCloud(多模块)+ Vue系统详细构建配置


    前言

         随着Docker、K8S、服务网格(ServiceMesh)等新型部署管理方式的兴起,Jenkins等工具已逐渐是CI/CD的较为过时的管理方式,但是对于中小型开发团队且系统部署规模及硬件资源都相对较小的情况下,为了减轻开发运维过程中频繁的版本迭代及多模块多服务器部署带来的负担,提高生产运维效率,减少因人为过失导致的线上生产事故,选择Jenkins来搭配代码管理工具GitLab及项目管理工具禅道、Jira等作为自动化构建部署管理方式,也不失为一个过渡性又相对合理的折中选择。

         基于以上的想法和前提,针对于正在开发阶段的项目以及当下需求,我选择了搭建Jenkins作为暂时的构建部署工具,在搭建配置过程中遇到了一些坑,花了一些时间得以排查解决,现将详细的构建配置记录下来。

     

    一、Jenkins安装及所需插件安装

          安装过程略。

          我这用到工具包括JDK、Git、Maven、NodeJS:可以选择自行在服务器安装,也可以通过Jenkins自动安装,位置在系统管理 》全局工具配置

          

     

     

     

     

          安装的插件包括 NodeJS Plugin、Publish Over SSH:通过 系统管理 》插件管理  在线搜索安装,无需重启。

         

     

     

     

     

    二、微服务后端模块配置

         1、新建任务

              填入任务名称,选择构建一个maven项目,如果没有该选项可能是插件没有安装导致,也可以选择构建一个自由 风格得软件项目

         

     

     

     

     

         2、构建打包

         

       

       

       

        clean package -pl carbon-modules/carbon-file -am -Dmaven.test.skip=true

         

     

      3、远程部署

        部署方式可以根据实际情况灵活调整:如果Jenkins和系统部署为一台服务器,则无需远程传输,将打包好的文件移动或复制到指定的目录运行即可;

    如果不是同一台服务器,则一般需要将打包好的资源文件传输到目标服务器并通过命令启动运行。

        下面截图展示远程部署的方式,基本适用于大多数场景。

     

       配置SSH服务器:系统管理 》系统配置

       

         

         

       

    source /etc/profile
    BUILD_ID=DONTKILLME
    cd /opt/carbon/backend/command
    sh carbon-modules-file.sh restart 9302

    carbon-modules-file.sh

    #!/bin/bash
    #配置jar名称
    APP_NAME=carbon-modules-file
    SPACE=xxxxx
    PORT="$2"
    
    #使用说明,用来提示输入参数
    usage() {
    echo "Usage: sh 脚本名.sh [start|stop|restart|status]"
    exit 1
    }
    
    #检查程序是否在运行
    is_exist(){
    pid=`ps -ef|grep $APP_NAME.jar|grep -v 'grep'|awk '{print $2}' `
    #如果不存在返回1,存在返回0
    if [ -z "${pid}" ]; then
    return 1
    else
    return 0
    fi
    }
    
    #启动方法
    start(){
    is_exist
    if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running, pid=${pid} ."
    elif [ ${PORT} ]; then
    echo "port is ${PORT}"
    nohup java -Dserver.port=${PORT} -Xms512m -Xmx512m -jar ../${APP_NAME}.jar --spring.profiles.active=prod --spring.cloud.nacos.discovery.namespace=${SPACE} --spring.cloud.nacos.config.namespace=${SPACE} > ../logs/${APP_NAME}.log &
    echo "${APP_NAME} start success"
    else
    nohup java -Xms512m -Xmx512m -jar ../${APP_NAME}.jar --spring.profiles.active=prod --spring.cloud.nacos.discovery.namespace=${SPACE} --spring.cloud.nacos.config.namespace=${SPACE} > ../logs/${APP_NAME}.log &
    echo "${APP_NAME} start success"
    fi
    }
    
    #停止方法
    stop(){
    is_exist
    if [ $? -eq "0" ]; then
    kill -9 $pid
    else
    echo "${APP_NAME} is not running"
    fi
    }
    
    #输出运行状态
    status(){
    is_exist
    if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running, Pid is ${pid}"
    else
    echo "${APP_NAME} is NOT running."
    fi
    }
    
    #重启
    restart(){
    stop
    start
    }
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
    "start")
    start
    ;;
    "stop")
    stop
    ;;
    "status")
    status
    ;;
    "restart")
    restart
    ;;
    *)
    usage
    ;;
    esac

    注:由于使用了nacos作为了注册配置中心,命令中增加了相关设定,可自行根据项目情况修改;

          命令文件中换行符一定确定是Unix(LF)格式;

          将sh文件上传到服务器目录后,增加可执行权限(chmod u+x *.sh)。

     

       

     4、复制构建

     

     

    三、系统前端(Vue)配置

        源码管理等略,参考后端配置。

       

       

       

       

    cd /data/iot/tomcat_jenkins/data/workspace/carbon-ui/carbon-ui
    node -v
    npm -v
    npm install
    npm run build:prod
    cd dist
    rm -rf carbon-ui.tar.gz
    tar -zcvf carbon-ui.tar.gz *

       

       

    cd /data/carbon/front/
    tar -xzvf carbon-ui.tar.gz -C /data/carbon/front/
    find /data/carbon/front/ -name "*.tar.gz" -exec rm -rf {}  \;
    echo '发布成功!'

      构建完成后查看日志,输出以下内容即为成功

     

     

  • 相关阅读:
    Elasticsearch部署中的两大常见问题及其解决方案
    HTML爱心代码 | 《点燃我温暖你》中男主角——理工男李峋同款
    【自监督论文阅读笔记】Self-Supervised Learning with Swin Transformers
    【自动驾驶解决方案】C++取整与保留小数位
    记一次 mac电脑 parallels desktop win10 虚拟机配置rsync文件同步功能(含mac 无法读写ntfs移动硬盘的解决方法)
    抖音矩阵系统,这个排名很难啊。按?
    plt 画图不显示label
    【面试】反问环节+面试套路
    list的模拟实现
    RSA 签名与验签
  • 原文地址:https://www.cnblogs.com/hardrockwu/p/16638974.html