Jenkins 部署 RuoYi 分离版及微服务版

项目参考

 若依分离版:介绍 | RuoYi

若依微服务版:介绍 | RuoYi

基础软件环境构建

在测试环境安装基础软件    
    》jdk maven 安装
    》git gitlab 安装   
    》mysql 安装    
    mysql安装1
    》redis 安装    
    redis安装1
    》nginx 安装     
    》node 安装     
    》jenkins 安装    
   jenkins安装1

   》nacos 安装

部署分离版

jenkins配置

部署后端

# 进入存放项目的文件夹
cd /home/workspace/ry-test
# 停止正在运行的旧版本项目 shell脚本
sed -i 's/\r$//' stop.sh
sh stop.sh 
# 替换编译后的jar包 shell脚本
sed -i 's/\r$//' replace.sh
sh replace.sh 
#启动新编译打包的项目
BUILD_ID=dontKillMe nohup java -jar ruoyi-admin.jar --spring.profiles.active=test --server.port=8083 > log.out &

部署前端

#部署后台对应的前端
cd /root/.jenkins/workspace/ry-test/ruoyi-ui
npm install --registry=https://registry.npmmirror.com
rm -rf ./dist/*
export NODE_OPTIONS=--openssl-legacy-provider
npm run build:stage
rm -rf /var/www/ry-test/dist/*
cp -rf ./dist/* /var/www/ry-test/dist
chmod -R 777 /var/www/ry-test/dist

stop.sh

#!/bin/sh
pid=`ps -ef | grep ruoyi-admin.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
fi

replace.sh

#!/bin/sh
file="/home/workspace/ry-test/ruoyi-admin.jar"
if [ -f "$file" ]
then
   mv /home/workspace/ry-test/ruoyi-admin.jar /home/workspace/ry-test/ruoyi-admin.jar.`date +%Y%m%d%H%M%S`
fi
   mv /root/.jenkins/workspace/ry-test/ruoyi-admin/target/ruoyi-admin.jar /home/workspace/ry-test/

运行

部署微服务版

jenkins配置

部署后端

# 停止服务及搬运jar
sed -i 's/\r$//' /home/workspace/RY-Cloud/copy.sh
sh /home/workspace/RY-Cloud/copy.sh
# 启动jar
cd /home/workspace/RY-Cloud/jar
chmod -R 755 *.jar
BUILD_ID=dontKillMe nohup java -jar ruoyi-gateway.jar --server.port=8080 > gateway.out &
sleep 20
BUILD_ID=dontKillMe nohup java -jar ruoyi-auth.jar --server.port=9200 > auth.out &
sleep 20
BUILD_ID=dontKillMe nohup java -jar ruoyi-modules-system.jar --server.port=9201 > system.out &
sleep 20
BUILD_ID=dontKillMe nohup java -jar ruoyi-modules-sidecar.jar --server.port=7200 > sidecar.out &
sleep 20

部署前端

# 构建前端项目
cd /root/.jenkins/workspace/RY-Cloud/ruoyi-ui
npm install --registry=https://registry.npmmirror.com
rm -rf ./dist/*
export NODE_OPTIONS=--openssl-legacy-provider
npm run build:stage
# 部署到nginx
rm -rf /var/www/RY-Cloud/dist/*
cp -rf ./dist/* /var/www/RY-Cloud/dist
chmod -R 777 /var/www/RY-Cloud/dist

copy.sh

#!/bin/sh
# stop jar
pid1=$(ps -ef | grep ruoyi-gateway.jar | grep -v grep | awk '{print $2}')
if [ -n "$pid1" ]
then
   kill -9 $pid1
   echo "kill ruoyi-gateway success"
fi

pid2=$(ps -ef | grep ruoyi-auth.jar | grep -v grep | awk '{print $2}')
if [ -n "$pid2" ]
then
   kill -9 $pid2
   echo "kill ruoyi-auth success"
fi

pid3=$(ps -ef | grep ruoyi-modules-system.jar | grep -v grep | awk '{print $2}')
if [ -n "$pid3" ]
then
   kill -9 $pid3
   echo "kill ruoyi-modules-system success"
fi

pid4=$(ps -ef | grep ruoyi-modules-sidecar.jar | grep -v grep | awk '{print $2}')
if [ -n "$pid4" ]
then
   kill -9 $pid4
   echo "kill ruoyi-modules-sidecar success"
fi

# copy jar
cd /root/.jenkins/workspace/RY-Cloud
echo "begin copy ruoyi-gateway "
cp ./ruoyi-gateway/target/ruoyi-gateway.jar /home/workspace/RY-Cloud/jar

echo "begin copy ruoyi-auth "
cp ./ruoyi-auth/target/ruoyi-auth.jar /home/workspace/RY-Cloud/jar

echo "begin copy ruoyi-modules-system "
cp ./ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar /home/workspace/RY-Cloud/jar

echo "begin copy ruoyi-modules-sidecar "
cp ./ruoyi-modules/ruoyi-sidecar/target/ruoyi-modules-sidecar.jar /home/workspace/RY-Cloud/jar

运行

### 使用 Jenkins 部署若依微服务 #### 准备工作 为了顺利部署若依微服务应用,需确保Jenkins服务器已配置好必要的工具。除了Jenkins本身外,还需安装Maven和Git来辅助构建过程[^1]。 #### 创建Jenkins Pipeline 通过创建Pipeline脚本实现自动化部署流程。此脚本定义了从源码拉取、编译打包直至最终部署至Kubernetes集群的一系列操作。对于基于Java的应用程序来说,通常会涉及到Maven项目的构建以及Docker镜像的制作。 ```groovy pipeline { agent any environment { DOCKER_IMAGE = "ruoyi-microservice" APP_PROFILE = "prod" APP_PORT = "8080" } stages { stage('Checkout') { steps { git branch: 'main', url: 'https://github.com/your-repo-url.git' } } stage('Build with Maven') { steps { sh ''' mvn clean package -DskipTests=true ''' } } stage('Build Docker Image') { steps { script { def customImage = docker.build("${env.DOCKER_IMAGE}:${env.BUILD_NUMBER}") // Push the image to a container registry (e.g., Docker Hub or private registry) docker.withRegistry('https://index.docker.io/v1/', 'docker-hub-credentials-id') { customImage.push() } } } } stage('Deploy to Kubernetes') { steps { sh """ kubectl apply -f deployment.yaml \ --set=image=${DOCKER_IMAGE}:${BUILD_NUMBER} """ } } } } ``` 上述Groovy脚本展示了完整的CI/CD管道逻辑,其中包含了几个重要环节: - **Checkout**: 从本控制系统获取最新代码。 - **Build with Maven**: 利用Maven完成应用程序的编译与测试跳过的打包处理。 - **Build Docker Image**: 构建并推送容器映像到指定仓库。 - **Deploy to Kubernetes**: 将新本的服务更新发布到Kubernetes环境中去。 #### 定制化Dockerfile 针对特定应用场景调整`Dockerfile`的内容也很有必要。下面是一个适用于大多数Spring Boot风格Web应用的基础模板[^3]: ```dockerfile FROM openjdk:8-jre MAINTAINER admin@example.com ENV jar ruoyi-service.jar ENV TZ=Asia/Shanghai WORKDIR /app/ ADD target/*.jar /app/${jar} RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone CMD ["sh", "-c", "exec java \\ -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m \\ -8 -Dserver.port=$APP_PORT -jar ${jar}"] ``` 该文件指定了运行环境变量,并设置了启动命令参数以适应不同的生产需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值