安装配置Jenkins 自动部署 spring cloud vue

本文介绍了如何安装配置Jenkins以实现Spring Cloud项目的自动部署。首先下载Jenkins LTS版本并启动,然后配置Jenkins账号和密码,安装必要的插件如Maven和Node.js。接着,在全局工具配置中设置Java、Maven、Git和Node.js环境。创建Maven和Vue项目,分别配置源码管理、构建触发器和构建步骤。最后,设置定时构建策略并查看构建结果。

Jenkins 自动部署 spring cloud项目

下载jenkins 最新版本Jenkins 2.277.2 LTS(长期支持) war版本的

可以通过 War Jenkins Packages 寻找想要的版本

使用宝塔的一键部署 运行 

或者这里直接使用命令运行启动 因为Jenkins 目前只支持 8 11 所以固定的jdk路径 这里的httpport就是端口号

sudo nohup /usr/local/btjdk/jdk8/bin/java -Dfile.encoding=utf-8 -jar -Xms256m -Xmx1024m /www/wwwroot/jdk17/jenkins.war --httpPort=6312 >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)jenkins.log 2>&1 &

配置jenkins 的账号 密码 

Jenkins 安装推荐插件后 建议重启一下

Jenkins重启 http://localhost:8080/restart  

在系统管理 插件管理中 搜索 maven node 安装  (centOS 中也需要 yum安装 mvn 宝塔安装PM2管理器以支持node环境)

//安装git
yum -y install git

// 安装maven
yum -y install maven

在全局工具配置中 配置 java 环境  mvn环境 git环境  node 环境 

 

cloud项目选 新建任务maven vue 选构建一个自由风格的软件项目构建vue项目

需要注意4 个地方 第一个是 源码

第二个是构建前的命令 第三个是构建的命令 

第四个是 构建完成后的操作

其他功能 按需选择 这里都不选

点击立即构建 后 查看控制台 输出

可以在构建后执行sh 运行服务 即可

这里放上一份我在用的shell命令

#! /bin/bash
#构建项目
#Jenkins build结束后会kill掉衍生进程。 通过此代码可防止被kill
export BUILD_ID=ryklcloud$(date +%Y%m%d%H%M)

#设置jar包路径变量

APP_HOME=/www/wwwroot/kalun/ryjar/app.jar
AUTH_HOME=/www/wwwroot/kalun/ryjar/ruoyi-auth.jar
GATEWAY_HOME=/www/wwwroot/kalun/ryjar/ruoyi-gateway.jar
SYSTEM_HOME=/www/wwwroot/kalun/ryjar/ruoyi-modules-system.jar
FILE_HOME=/www/wwwroot/kalun/ryjar/ruoyi-modules-file.jar
GEN_HOME=/www/wwwroot/kalun/ryjar/ruoyi-modules-gen.jar
JOB_HOME=/www/wwwroot/kalun/ryjar/ruoyi-modules-job.jar
SENTINEL_HOME=/www/wwwroot/kalun/ryjar/sentinel-dashboard-1.8.1.jar
WORKFLOW_HOME=/www/wwwroot/kalun/ryjar/ruoyi-visual-monitor.jar

project_move() {
  echo "进入移动项目环节"
  rm -rf /www/wwwroot/kalun/ryjar/app.jar
  rm -rf /www/wwwroot/kalun/ryjar/ruoyi-auth.jar
  rm -rf /www/wwwroot/kalun/ryjar/ruoyi-gateway.jar
  rm -rf /www/wwwroot/kalun/ryjar/ruoyi-modules-system.jar
  rm -rf /www/wwwroot/kalun/ryjar/ruoyi-modules-file.jar
  rm -rf /www/wwwroot/kalun/ryjar/ruoyi-modules-gen.jar
  rm -rf /www/wwwroot/kalun/ryjar/ruoyi-modules-job.jar
  rm -rf /www/wwwroot/kalun/ryjar/ruoyi-visual-monitor.jar
  #移动jar包
  cp /root/.jenkins/workspace/ry/app/target/app.jar /www/wwwroot/kalun/ryjar/
  cp /root/.jenkins/workspace/ry/ruoyi-auth/target/ruoyi-auth.jar /www/wwwroot/kalun/ryjar/
  cp /root/.jenkins/workspace/ry/ruoyi-gateway/target/ruoyi-gateway.jar /www/wwwroot/kalun/ryjar/
  cp /root/.jenkins/workspace/ry/ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar /www/wwwroot/kalun/ryjar/
  cp /root/.jenkins/workspace/ry/ruoyi-modules/ruoyi-file/target/ruoyi-modules-file.jar /www/wwwroot/kalun/ryjar/
  cp /root/.jenkins/workspace/ry/ruoyi-modules/ruoyi-gen/target/ruoyi-modules-gen.jar /www/wwwroot/kalun/ryjar/
  cp /root/.jenkins/workspace/ry/ruoyi-modules/ruoyi-job/target/ruoyi-modules-job.jar /www/wwwroot/kalun/ryjar/
  cp /root/.jenkins/workspace/ry/ruoyi-visual/ruoyi-monitor/target/ruoyi-visual-monitor.jar /www/wwwroot/kalun/ryjar/
}

process_app() {
  app_pid=$(ps -ef | grep $APP_HOME | grep -v grep | awk '{print $2}')
}
process_auth() {
  auth_pid=$(ps -ef | grep $AUTH_HOME | grep -v grep | awk '{print $2}')
}

process_gateway() {
  gateway_pid=$(ps -ef | grep $GATEWAY_HOME | grep -v grep | awk '{print $2}')
}

process_system() {
  system_pid=$(ps -ef | grep $SYSTEM_HOME | grep -v grep | awk '{print $2}')
}

process_file() {
  file_pid=$(ps -ef | grep $FILE_HOME | grep -v grep | awk '{print $2}')
}
process_gen() {
  gen_pid=$(ps -ef | grep $GEN_HOME | grep -v grep | awk '{print $2}')
}

process_job() {
  job_pid=$(ps -ef | grep $JOB_HOME | grep -v grep | awk '{print $2}')
}

process_sentinel() {
  sentinel_pid=$(ps -ef | grep $SENTINEL_HOME | grep -v grep | awk '{print $2}')
}

process_workflow() {
  workflow_pid=$(ps -ef | grep $WORKFLOW_HOME | grep -v grep | awk '{print $2}')
}

stop_app() {
  process_app
  echo "this app process PID:$app_pid"
  if [ -z "$app_pid" ]; then
    echo "$APP_HOME is not running"
  else
    sudo kill -9 $app_pid
    echo "this app process [$app_pid]正在停止"
  fi
}
stop_auth() {
  process_auth
  echo "this auth process PID:$auth_pid"
  if [ -z "$auth_pid" ]; then
    echo "$AUTH_HOME is not running"
  else
    sudo kill -9 $auth_pid
    echo "this auth process [$auth_pid]正在停止"
  fi
}
stop_gateway() {
  process_gateway
  echo "this gateway process PID:$gateway_pid"
  if [ -z "$gateway_pid" ]; then
    echo "$GATEWAY_HOME is not running"
  else
    sudo kill -9 $gateway_pid
    echo "this gateway process [$gateway_pid]正在停止"
  fi
}
stop_system() {
  process_system
  echo "this system process PID:$system_pid"
  if [ -z "$system_pid" ]; then
    echo "$SYSTEM_HOME is not running"
  else
    sudo kill -9 $system_pid
    echo "this system process [$system_pid]正在停止"
  fi
}
stop_file() {
  process_file
  echo "this file process PID:$file_pid"
  if [ -z "$file_pid" ]; then
    echo "$FILE_HOME is not running"
  else
    sudo kill -9 $file_pid
    echo "this file process [$file_pid]正在停止"
  fi
}
stop_gen() {
  process_gen
  echo "this gen process PID:$file_pid"
  if [ -z "$gen_pid" ]; then
    echo "$GEN_HOME is not running"
  else
    sudo kill -9 $gen_pid
    echo "this gen process [$gen_pid]正在停止"
  fi
}
stop_job() {
  process_job
  echo "this job process PID:$job_pid"
  if [ -z "$job_pid" ]; then
    echo "$JOB_HOME is not running"
  else
    sudo kill -9 $job_pid
    echo "this job process [$job_pid]正在停止"
  fi
}
stop_workflow() {
  process_workflow
  echo "this workflow process PID:$workflow_pid"
  if [ -z "$workflow_pid" ]; then
    echo "$WORKFLOW_HOME is not running"
  else
    sudo kill -9 $workflow_pid
    echo "this workflow process [$workflow_pid]正在停止"
  fi
}

#启动所有项目

start_app() {
  process_app
  echo "this app process PID:$app_pid"
  if [ -z "$app_pid" ]; then
    echo "The app 服务开始启动"
    sudo nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx128m -Xmn64m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $APP_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)app.log 2>&1 &
  else
    echo "$APP_HOME is already running. pid=$app_pid"
  fi
}

start_auth() {
  process_auth
  echo "this auth process PID:$auth_pid"
  if [ -z "$auth_pid" ]; then
    echo "The auth 服务开始启动"
    sudo nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx128m -Xmn64m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $AUTH_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)auth.log 2>&1 &
  else
    echo "$AUTH_HOME is already running. pid=$auth_pid"
  fi
}
start_gateway() {
  process_gateway
  echo "this gateway process PID:$gateway_pid"
  if [ -z "$gateway_pid" ]; then
    echo "The gateway 服务开始启动"
    sudo nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx128m -Xmn64m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $GATEWAY_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)gateway.log 2>&1 &
  else
    echo "$GATEWAY_HOME is already running. pid=$gateway_pid"
  fi
}

start_system() {
  process_system
  echo "this system process PID:$system_pid"
  if [ -z "$system_pid" ]; then
    echo "The system 服务开始启动"
    sudo nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx128m -Xmn64m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $SYSTEM_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)system.log 2>&1 &
  else
    echo "$SYSTEM_HOME is already running. pid=$system_pid"
  fi
}

start_file() {
  process_file
  echo "this file process PID:$file_pid"
  if [ -z "$file_pid" ]; then
    echo "The file 服务开始启动"
    sudo nohup java -jar -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx128m -Xmn64m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $FILE_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)file.log 2>&1 &
  else
    echo "$FILE_HOME is already running. pid=$file_pid"
  fi
}

start_gen() {
  process_gen
  echo "this gen process PID:$gen_pid"
  if [ -z "$gen_pid" ]; then
    echo "The gen 服务开始启动"
    sudo nohup java -jar -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx128m -Xmn64m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $GEN_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)gen.log 2>&1 &
  else
    echo "$GEN_HOME is already running. pid=$gen_pid"
  fi
}

start_job() {
  process_job
  echo "this job process PID:$job_pid"
  if [ -z "$job_pid" ]; then
    echo "The job 服务开始启动"
    sudo nohup java -jar -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx128m -Xmn64m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $JOB_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)job.log 2>&1 &
  else
    echo "$JOB_HOME is already running. pid=$job_pid"
  fi
}

# 启动流量控制框架
start_sentinel() {
  process_sentinel
  echo "this sentinel process PID:$sentinel_pid"
  if [ -z "$sentinel_pid" ]; then
    echo "The sentinel 服务开始启动"
    sudo nohup java -Dproject.name=sentinel -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=192.168.241.129:8718 -jar -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx128m -Xmn64m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $SENTINEL_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)sentinel.log 2>&1 &
  else
    echo "$SENTINEL_HOME is already running. pid=$sentinel_pid"
    sudo kill -9 $sentinel_pid
    echo "this sentinel process [$sentinel_pid]正在停止"
  fi
}
# 监控中心
start_workflow() {
  process_workflow
  echo "this $WORKFLOW_HOME  workflow process PID:$workflow_pid"
  if [ -z "$workflow_pid" ]; then
    echo "The workflow 服务开始启动"
    sudo nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms64m -Xmx256m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC $WORKFLOW_HOME >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)workflow.log 2>&1 &
  else
    echo "$WORKFLOW_HOME is already running. pid=$workflow_pid"
  fi
}

stop() {
  echo "停止项目开始"
  stop_app
  stop_auth
  stop_gateway
  stop_system
  stop_file
  stop_job
  stop_gen
  stop_workflow
}
start() {
  echo "进入启动项目环节"
  #这里的休眠是考虑到cpu负载过高的问题
  start_auth
  sleep 6
  start_gateway
  sleep 6
  start_system
  sleep 6
  start_app
  sleep 6
  start_file
  sleep 6
  start_job
  sleep 6
  start_workflow
  #  服务器不需要生成代码
  #  start_gen
}
status() {
  process_app
  if [ -z "$app_pid" ]; then
    echo "$APP_HOME is not running"
  else
    echo "$APP_HOME is running"
  fi
  process_auth
  if [ -z "$auth_pid" ]; then
    echo "$AUTH_HOME is not running"
  else
    echo "$AUTH_HOME is running"
  fi
  process_gateway
  if [ -z "$gateway_pid" ]; then
    echo "$GATEWAY_HOME is not running"
  else
    echo "$GATEWAY_HOME is running"
  fi
  process_system
  if [ -z "$system_pid" ]; then
    echo "$SYSTEM_HOME is not running"
  else
    echo "$SYSTEM_HOME is  running"
  fi
  process_file
  if [ -z "$file_pid" ]; then
    echo "$FILE_HOME is not running"
  else
    echo "$FILE_HOME is  running"
  fi
  process_gen
  if [ -z "$gen_pid" ]; then
    echo "$GEN_HOME is not running"
  else
    echo "$GEN_HOME is  running"
  fi
  process_job
  if [ -z "$job_pid" ]; then
    echo "$JOB_HOME is not running"
  else
    echo "$JOB_HOME is  running"
  fi
  process_workflow
  if [ -z "$workflow_pid" ]; then
    echo "$WORKFLOW_HOME is not running"
  else
    echo "$WORKFLOW_HOME is running"
  fi
}

#启动网云穿 内网穿透
start_wyc_linux_64() {

  nohup /www/wwwroot/kalun/wyc_linux_64 -token=mmldrety >>/www/wwwroot/kalun/ryjar/rylog/$(date +%Y%m%d%H%M)wyc_linux_64.log 2>&1 &

}

#脚本菜单项
usage() {
  echo "Usage: sh 脚本名.sh [start|start_sentinel|project_move|stop|status]"
  exit 1
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明

case "$1" in

"start")

  start

  ;;

"start_sentinel")

  start_sentinel

  ;;

"project_move")

  project_move

  ;;

"stop")

  stop

  ;;

"status")

  status

  ;;

*)

  usage

  ;;

esac

vue项目 新建时选自由风格的项目

需要注意这一步 防止出现npm等命令不存在 的异常

//这是vue的脚本

#! /bin/bash
#构建项目

#设置jar包路径变量

UI_HOME=/www/wwwroot/kalun/dist
VUEJS_HOME=/root/.jenkins/workspace/ryui


dev() {
  cd $VUEJS_HOME
  npm install
  npm run build:dev -- --dest="$UI_HOME"
}

stage() {
  cd $VUEJS_HOME
  npm install
  npm run build:stage -- --dest="$UI_HOME"
}

prod() {
  cd $VUEJS_HOME
  npm install
  npm run build:prod -- --dest="$UI_HOME"
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明

case "$1" in

"dev")

  dev

  ;;
  
"stage")

  stage

  ;;
  
"prod")

  prod

  ;;
esac

 这里可以配置下 缓存策略

定时构建策略 这里是每天1点  可能时区有点问题

 

补上最终效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值