Ruo-Yi 项目 CI/CD 详细部署文档

一、环境准备

1. 服务器角色分配

服务器 IP 角色 部署组件
192.168.10.101 K8S-master K8S、GitLab、Jenkins、Docker
192.168.10.66 Harbor 仓库 Harbor、Docker
192.168.10.65 K8S-worker01 K8S、Docker

2. 安装基础依赖(所有节点执行)

  1. 关闭防火墙与 SELinux bash

    运行

    复制代码
    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0
    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  2. 安装 Docker(版本 20.10.18)

    • 配置清华 yum 源 bash

      运行

      复制代码
      cat > /etc/yum.repos.d/docker-ce.repo << EOF
      [docker-ce-stable]
      name=Docker CE Stable - \$basearch
      baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/\$releasever/\$basearch/stable
      enabled=1
      gpgcheck=1
      gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg
      EOF
    • 安装指定版本 Docker bash

      运行

      复制代码
      yum install -y docker-ce-20.10.18 docker-ce-cli-20.10.18
      systemctl start docker && systemctl enable docker
  3. 配置 Docker Daemon(所有节点)

    • 编辑/etc/docker/daemon.json,添加 Harbor 私有仓库地址

      json

      复制代码
      {
        "registry-mirrors": ["https://0f8a3388042b4b0ab6611ccc6e866ab3.mirror.swr.myhuaweicloud.com"],
        "insecure-registries": ["192.168.10.66"],
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
          "max-size": "500m",
          "max-file": "3"
        }
      }
    • 重启 Docker 生效 bash

      运行

      复制代码
      systemctl daemon-reload && systemctl restart docker

3. 搭建 K8S 集群(192.168.10.101 和 192.168.10.65)

  1. 安装 kubeadm、kubelet、kubectl(版本 1.20~1.33) bash

    运行

    复制代码
    cat > /etc/yum.repos.d/kubernetes.repo << EOF
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF
    yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
    systemctl enable kubelet
  2. 初始化 K8S Master 节点(192.168.10.101) bash

    运行

    复制代码
    kubeadm init --apiserver-advertise-address=192.168.10.101 \
    --image-repository registry.aliyuncs.com/google_containers \
    --kubernetes-version v1.25.0 \
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16
  3. 配置 kubectl 权限 bash

    运行

    复制代码
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  4. 安装网络插件(flannel) bash

    运行

    复制代码
    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.20.2/Documentation/kube-flannel.yml
  5. Worker 节点加入集群(192.168.10.65)

    • 复制 Master 初始化完成后输出的kubeadm join命令执行,示例:

      bash

      运行

      复制代码
      kubeadm join 192.168.10.101:6443 --token xxxxx \
      --discovery-token-ca-cert-hash sha256:xxxxxx

二、部署 GitLab(192.168.10.101)

1. 拉取 GitLab 镜像

bash

运行

复制代码
docker pull beginor/gitlab-ce

2. 创建数据卷挂载目录

bash

运行

复制代码
mkdir -p /data/gitlab/etc /data/gitlab/log /data/gitlab/data
chmod 777 /data/gitlab/etc /data/gitlab/log /data/gitlab/data

3. 启动临时 GitLab 容器

bash

运行

复制代码
docker run -itd --name=gitlab \
--restart=always \
--privileged=true \
-p 8443:443 \
-p 80:80 \
-p 222:22 \
-v /data/gitlab/etc:/etc/gitlab \
-v /data/gitlab/log:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
beginor/gitlab-ce

4. 修改 GitLab 配置文件

  1. 停止容器 bash

    运行

    复制代码
    docker stop gitlab
  2. 修改/data/gitlab/etc/gitlab.rb

    bash

    运行

    复制代码
    # 设置外部访问地址
    sed -i "/external_url 'GENERATED_EXTERNAL_URL'/a external_url\t'http://192.168.10.101' " /data/gitlab/etc/gitlab.rb
    # 设置SSH主机
    sed -i "/gitlab_ssh_host/a gitlab_rails['gitlab_ssh_host'] = '192.168.10.101' " /data/gitlab/etc/gitlab.rb
    # 设置SSH端口
    sed -i "/gitlab_shell_ssh_port/a gitlab_rails['gitlab_shell_ssh_port'] = 222" /data/gitlab/etc/gitlab.rb
  3. 启动容器并等待健康状态 bash

    运行

    复制代码
    docker start gitlab
    # 等待状态从starting变为healthy
    watch docker ps | grep gitlab

5. 初始化 GitLab 账户

  1. 访问http://192.168.10.101,设置 root 密码

  2. 登录后创建 SSH 密钥 bash

    运行

    复制代码
    docker exec -it gitlab /bin/sh
    ssh-keygen -t rsa # 一路回车
    cat ~/.ssh/id_rsa.pub # 复制公钥
  3. 在 GitLab UI 的用户设置→SSH 密钥中粘贴公钥保存

三、部署 Harbor(192.168.10.66)

1. 安装 Docker-Compose

bash

运行

复制代码
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v # 验证安装

2. 下载并配置 Harbor

  1. 下载安装包 bash

    运行

    复制代码
    wget http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
    tar zxvf harbor-offline-installer-v1.2.2.tgz -C /usr/local/
  2. 修改配置文件/usr/local/harbor/harbor.cfg

    bash

    运行

    复制代码
    vim /usr/local/harbor/harbor.cfg
    # 修改以下参数
    hostname = 192.168.10.66
    harbor_admin_password = Harbor12345

3. 启动 Harbor

bash

运行

复制代码
cd /usr/local/harbor
./prepare
./install.sh

4. 创建 RuoYi 项目仓库

  1. 访问http://192.168.10.66,使用admin/Harbor12345登录

  2. 新建公开项目 ,名称为ruoyi-vue

  3. 测试登录 bash

    运行

    复制代码
    docker login -u admin -p Harbor12345 http://192.168.10.66

四、部署 Jenkins(192.168.10.101)

1. 准备 Jenkins 构建环境

  1. 创建工作目录 bash

    运行

    复制代码
    mkdir -p /data/jenkins && cd /data/jenkins
  2. 下载依赖包(jdk8、maven3.9.9、node18.19.0) bash

    运行

    复制代码
    # 可通过官网下载后上传到该目录,文件清单:
    # jdk-8u431-linux-x64.tar.gz
    # apache-maven-3.9.9-bin.tar.gz
    # node-v18.19.0-linux-x64.tar.gz
  3. 创建自定义settings.xml

    xml

    复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
    </settings>
  4. 编写Dockerfile

    dockerfile

    复制代码
    FROM jenkins/jenkins:2.507
    EXPOSE 8080
    ADD apache-maven-3.9.9-bin.tar.gz /usr/local
    ADD jdk-8u431-linux-x64.tar.gz /usr/local
    ADD node-v18.19.0-linux-x64.tar.gz /usr/local
    ADD settings.xml /usr/local/apache-maven-3.9.9/conf/
    ENV TZ=Asia/Shanghai
    ENV M2_HOME=/usr/local/apache-maven-3.9.9
    ENV NODE_HOME=/usr/local/node-v18.19.0-linux-x64
    ENV PATH=$M2_HOME/bin:$NODE_HOME/bin:$PATH
  5. 创建 jenkins_home 目录 bash

    运行

    复制代码
    mkdir jenkins_home && chmod 777 jenkins_home

2. 构建并启动 Jenkins 镜像

  1. 构建镜像 bash

    运行

    复制代码
    docker build -t jenkins .
  2. 授权 docker.sock bash

    运行

    复制代码
    chmod 777 /var/run/docker.sock
  3. 启动 Jenkins 容器 bash

    运行

    复制代码
    docker run -d --name jenkins \
    -p 0.0.0.0:8080:8080 \
    -v /data/jenkins/jenkins_home:/var/jenkins_home \
    -v /etc/localtime:/etc/localtime \
    -v /run/docker.sock:/run/docker.sock \
    -v /usr/bin/docker:/usr/bin/docker \
    jenkins

3. 初始化 Jenkins

  1. 访问http://192.168.10.101:8080,获取初始密码

    bash

    运行

    复制代码
    docker logs jenkins | grep initialAdminPassword
  2. 安装推荐插件,创建管理员账户

  3. 配置 JDK 环境

    • 进入Manage Jenkins→Tools→JDK
    • 新增 JDK,名称填写jdk8,路径填写/usr/local/jdk1.8.0_431
    • 重启 Jenkins:docker restart jenkins
  4. 测试流水线

    • 新建流水线项目 ,脚本内容:

      groovy

      复制代码
      pipeline {
          agent any
          tools {
              jdk 'jdk8'
          }
          stages {
              stage('test') {
                  steps {
                      script {
                          sh """
                          docker -v
                          java -version
                          mvn -v
                          node -v
                          """
                      }
                  }
              }
          }
      }
    • 点击立即构建,查看日志验证环境

五、配置 Jenkins 与 GitLab/Harbor/K8S 联动

1. Jenkins 配置 SSH 免密登录(192.168.10.101)

  1. 进入 Jenkins 容器生成密钥 bash

    运行

    复制代码
    docker exec -it jenkins bash
    ssh-keygen -t rsa # 一路回车
    ssh-copy-id root@192.168.10.101 # 输入master密码
  2. K8S 创建 Harbor 镜像拉取密钥 bash

    运行

    复制代码
    kubectl -n default create secret docker-registry harbor-registry \
    --docker-email=test@example.com \
    --docker-username=admin \
    --docker-password=Harbor12345 \
    --docker-server=192.168.10.66

2. Jenkins 安装 GitLab 插件

  1. 进入Manage Jenkins→插件管理→可选插件
  2. 搜索GitLab,安装GitLab PluginGitLab Authentication Plugin
  3. 重启 Jenkins 生效

六、部署 RuoYi-Vue 项目

1. 准备数据库和 Redis(192.168.10.101)

  1. 启动 MySQL 容器 bash

    运行

    复制代码
    docker run -d \
    --name mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    --restart=always \
    mysql:8.0.39
  2. 启动 Redis 容器 bash

    运行

    复制代码
    docker run -d \
    --name redis \
    -p 6379:6379 \
    --restart=always \
    redis:7.4.1
  3. 导入 RuoYi 数据库脚本

    • 克隆 RuoYi 代码 bash

      运行

      复制代码
      cd /data/jenkins
      yum install -y git
      git clone https://gitee.com/y_project/RuoYi-Vue.git
      mv RuoYi-Vue/ruoyi-ui ./ # 分离前后端
    • 复制 SQL 文件到 MySQL 容器 bash

      运行

      复制代码
      cd RuoYi-Vue
      docker cp sql/quartz.sql mysql:/opt
      docker cp sql/ry_20250522.sql mysql:/opt
    • 进入 MySQL 创建数据库并导入数据 bash

      运行

      复制代码
      docker exec -it mysql bash
      mysql -uroot -p123456
      create database `ry-vue`;
      use ry-vue;
      source /opt/quartz.sql;
      source /opt/ry_20250522.sql;
  4. 修改 RuoYi 配置文件

    • 编辑ruoyi-admin/src/main/resources/application-druid.yml

      yaml

      复制代码
      spring:
        datasource:
          druid:
            master:
              url: jdbc:mysql://192.168.10.101:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
              username: root
              password: 123456
    • 编辑application.yml

      yaml

      复制代码
      spring:
        redis:
          host: 192.168.10.101
          port: 6379
          database: 0

2. 编写 RuoYi 后端构建文件(/data/jenkins/RuoYi-Vue)

  1. 创建Dockerfile

    dockerfile

    复制代码
    FROM openjdk:8u342
    ENV TZ=Asia/Shanghai
    ADD ruoyi-admin/target/ruoyi-admin.jar app.jar
    ENTRYPOINT ["java", "-jar", "app.jar"]
  2. 创建Jenkinsfile

    groovy

    复制代码
    pipeline {
        agent any
        tools {
            jdk 'jdk8'
        }
        environment {
            APP_NAME = 'ruoyi-server'
            APP_PORT = 9800
            DOCKER_USER = 'admin'
            DOCKER_PASS = 'Harbor12345'
            HARBOR_ADDR = '192.168.10.66'
            K8S_MASTER = '192.168.10.101'
        }
        stages {
            stage('build') {
                steps {
                    script {
                        sh 'mvn clean package -DskipTests=true'
                    }
                }
            }
            stage('deploy') {
                steps {
                    script {
                        sh """
                        docker rmi \${APP_NAME} || true
                        docker rmi \${HARBOR_ADDR}/ruoyi-vue/\${APP_NAME} || true
                        docker build -t \${APP_NAME} .
                        docker tag \${APP_NAME} \${HARBOR_ADDR}/ruoyi-vue/\${APP_NAME}
                        docker login -u \${DOCKER_USER} -p \${DOCKER_PASS} \${HARBOR_ADDR}
                        docker push \${HARBOR_ADDR}/ruoyi-vue/\${APP_NAME}
                        scp ruoyi-vue.yaml root@\${K8S_MASTER}:/
                        ssh root@\${K8S_MASTER} 'kubectl delete -f /ruoyi-vue.yaml || true'
                        ssh root@\${K8S_MASTER} 'kubectl apply -f /ruoyi-vue.yaml'
                        """
                    }
                }
            }
        }
    }
  3. 创建ruoyi-vue.yaml

    yaml

    复制代码
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ruoyi-vue
      labels:
        app: ruoyi-vue
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ruoyi-vue
      template:
        metadata:
          labels:
            app: ruoyi-vue
        spec:
          imagePullSecrets:
            - name: harbor-registry
          containers:
          - name: ruoyi-vue
            image: 192.168.10.66/ruoyi-vue/ruoyi-server:latest
            ports:
            - containerPort: 8080
            imagePullPolicy: IfNotPresent
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: ruoyi-vue
      labels:
        app: ruoyi-vue
    spec:
      ports:
      - name: http
        port: 8080
        nodePort: 30001
      type: NodePort
      selector:
        app: ruoyi-vue

3. 上传代码到 GitLab

  1. GitLab 创建项目

    • 登录 GitLabhttp://192.168.10.101,创建群组 ruo-yi项目 ruoyi-vue
    • 添加用户zhangsan,赋予主程序员权限
  2. 本地配置 Git 并推送代码 bash

    运行

    复制代码
    cd /data/jenkins/RuoYi-Vue
    git config --global user.name "zhangsan"
    git config --global user.email "zhangsan@gitlab.com"
    ssh-keygen -t rsa # 生成密钥并添加到GitLab
    git remote add origin ssh://git@192.168.10.101:222/ruo-yi/ruoyi-vue.git
    git add .
    git commit -m "init ruoyi-vue"
    git push -u origin master

4. Jenkins 配置流水线拉取 GitLab 代码

  1. 新建 Jenkins 流水线项目ruoyi-server
  2. 选择Pipeline script from SCM ,SCM 选择Git
  3. Repository URL 填写 GitLab 项目 SSH 地址:ssh://git@192.168.10.101:222/ruo-yi/ruoyi-vue.git
  4. 配置 Credentials:添加 SSH 私钥(Jenkins 容器内的~/.ssh/id_rsa
  5. 脚本路径填写Jenkinsfile
  6. 配置 GitLab WebHook 触发构建
    • 进入 GitLab 项目设置→集成
    • URL 填写:http://192.168.10.101:8080/project/ruoyi-server
    • 勾选推送事件,保存并测试

5. 执行构建并验证

  1. 点击 Jenkins 项目立即构建

  2. 查看构建日志,确认镜像推送和 K8S 部署成功

  3. 验证 K8S Pod 状态 bash

    运行

    复制代码
    kubectl get pods
    kubectl get svc # 查看NodePort端口30001
  4. 访问 RuoYi 后端接口:http://192.168.10.65:30001

七、常见问题排查

  1. Docker 拉取镜像失败:检查daemon.jsoninsecure-registries配置
  2. Jenkins 构建权限不足:检查docker.sock权限和 SSH 免密配置
  3. K8S Pod 启动失败:查看日志kubectl logs <pod-name>,检查镜像地址和 Secret
  4. GitLab WebHook 触发失败:检查 Jenkins URL 可达性,GitLab 网络设置允许本地请求

要不要我帮你整理一份部署命令一键执行脚本,可以直接在服务器上批量运行?

CI CD 持续集成Ruo-Yi项目(上).pdf 和其他 1 文件

还需要包含ruoyi前端的部署

Ruo-Yi 项目 CI/CD 详细部署文档(含前后端)

适配环境:master(192.168.10.101)、harbor(192.168.10.66)、worker01(192.168.10.65)

一、前置说明

本文档基于已完成的后端部署流程 ,新增前端(ruoyi-ui) 自动化部署步骤,包含前端代码构建、镜像制作、K8S 发布及 Jenkins 流水线配置。

二、前端部署准备

1. 环境依赖确认

Jenkins 容器已集成node-v18.19.0(后端部署时已配置),无需额外安装。

2. 前端代码位置

后端克隆代码时已将ruoyi-ui目录移至/data/jenkins下,路径为:

bash

运行

复制代码
/data/jenkins/ruoyi-ui

3. 修改前端配置文件

编辑ruoyi-ui/.env.production,修改后端接口地址为 K8S NodePort 暴露的地址:

javascript

运行

复制代码
# 后端接口地址
VUE_APP_BASE_API = 'http://192.168.10.65:30001'

注:192.168.10.65 为 worker01 节点 IP,30001 为后端 Service 的 NodePort 端口

三、编写前端构建与部署文件

/data/jenkins/ruoyi-ui目录下创建 3 个核心文件:DockerfileJenkinsfileruoyi-ui.yaml

1. 创建前端 Dockerfile

dockerfile

复制代码
# 构建阶段
FROM node:18.19.0-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install --registry=https://registry.npm.taobao.org
COPY . .
RUN npm run build:prod

# 运行阶段
FROM nginx:alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

2. 创建 Nginx 配置文件

/data/jenkins/ruoyi-ui下新建nginx.conf,解决跨域问题:

nginx

复制代码
server {
    listen 80;
    server_name localhost;
    root /usr/share/nginx/html;
    index index.html index.htm;

    # 解决Vue路由刷新404问题
    location / {
        try_files $uri $uri/ /index.html;
    }

    # 反向代理后端接口(可选,也可前端直接请求NodePort)
    location /prod-api/ {
        proxy_pass http://192.168.10.65:30001/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

3. 创建前端 Jenkinsfile

groovy

复制代码
pipeline {
    agent any
    tools {
        jdk 'jdk8'
    }
    environment {
        APP_NAME = 'ruoyi-ui'
        DOCKER_USER = 'admin'
        DOCKER_PASS = 'Harbor12345'
        HARBOR_ADDR = '192.168.10.66'
        K8S_MASTER = '192.168.10.101'
    }
    stages {
        # 前端打包
        stage('build') {
            steps {
                script {
                    sh """
                    cd /data/jenkins/ruoyi-ui
                    npm install --registry=https://registry.npm.taobao.org
                    npm run build:prod
                    """
                }
            }
        }
        # 制作镜像并推送Harbor
        stage('build-image') {
            steps {
                script {
                    sh """
                    cd /data/jenkins/ruoyi-ui
                    docker rmi \${APP_NAME} || true
                    docker rmi \${HARBOR_ADDR}/ruoyi-vue/\${APP_NAME} || true
                    docker build -t \${APP_NAME} .
                    docker tag \${APP_NAME} \${HARBOR_ADDR}/ruoyi-vue/\${APP_NAME}
                    docker login -u \${DOCKER_USER} -p \${DOCKER_PASS} \${HARBOR_ADDR}
                    docker push \${HARBOR_ADDR}/ruoyi-vue/\${APP_NAME}
                    """
                }
            }
        }
        # 部署到K8S
        stage('deploy-k8s') {
            steps {
                script {
                    sh """
                    cd /data/jenkins/ruoyi-ui
                    scp ruoyi-ui.yaml root@\${K8S_MASTER}:/
                    ssh root@\${K8S_MASTER} 'kubectl delete -f /ruoyi-ui.yaml || true'
                    ssh root@\${K8S_MASTER} 'kubectl apply -f /ruoyi-ui.yaml'
                    """
                }
            }
        }
    }
}

4. 创建前端 K8S 部署文件(ruoyi-ui.yaml)

yaml

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ruoyi-ui
  labels:
    app: ruoyi-ui
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ruoyi-ui
  template:
    metadata:
      labels:
        app: ruoyi-ui
    spec:
      imagePullSecrets:
        - name: harbor-registry
      containers:
      - name: ruoyi-ui
        image: 192.168.10.66/ruoyi-vue/ruoyi-ui:latest
        ports:
        - containerPort: 80
        imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: ruoyi-ui
  labels:
    app: ruoyi-ui
spec:
  ports:
  - name: http
    port: 80
    nodePort: 30002
  type: NodePort
  selector:
    app: ruoyi-ui

注:NodePort 端口 30002 可根据实际情况调整,避免与后端端口冲突

四、GitLab 前端代码仓库配置

1. 在 GitLab 创建前端项目

  1. 登录 GitLab(http://192.168.10.101),进入ruo-yi群组
  2. 点击新建项目 ,项目名称填写ruoyi-ui,可见等级设为公开
  3. 添加zhangsan用户为主程序员

2. 推送前端代码到 GitLab

bash

运行

复制代码
cd /data/jenkins/ruoyi-ui
# 配置Git用户信息
git config --global user.name "zhangsan"
git config --global user.email "zhangsan@gitlab.com"
# 关联GitLab仓库
git init
git remote add origin ssh://git@192.168.10.101:222/ruo-yi/ruoyi-ui.git
# 提交代码
git add .
git commit -m "init ruoyi-ui"
git push -u origin master

五、Jenkins 前端流水线配置

1. 新建前端流水线任务

  1. 登录 Jenkins(http://192.168.10.101:8080),点击新建任务
  2. 任务名称填写ruoyi-ui,选择流水线 ,点击确定

2. 配置流水线来源

  1. Pipeline 部分选择 Pipeline script from SCM ,SCM 选择Git

  2. Repository URL 填写前端 GitLab 仓库地址:

    plaintext

    复制代码
    ssh://git@192.168.10.101:222/ruo-yi/ruoyi-ui.git
  3. Credentials选择之前配置的 SSH 私钥(Jenkins 连接 GitLab 的密钥)

  4. Script Path 填写Jenkinsfile

3. 配置 GitLab WebHook 触发

  1. 构建触发器 部分勾选 Build when a change is pushed to GitLab
  2. 复制生成的 WebHook URL:http://192.168.10.101:8080/project/ruoyi-ui
  3. 登录 GitLab,进入ruoyi-ui项目→设置→集成
  4. 粘贴 WebHook URL,勾选推送事件 ,点击添加 WebHook

六、执行前端构建与部署

  1. 在 Jenkins 中进入ruoyi-ui项目,点击立即构建

  2. 查看构建日志,确认步骤执行成功

  3. 验证 K8S 部署状态: bash

    运行

    复制代码
    # 在master节点执行
    kubectl get pods | grep ruoyi-ui
    kubectl get svc | grep ruoyi-ui
  4. 访问前端页面验证: plaintext

    复制代码
    http://192.168.10.65:30002

    输入默认账号密码admin/admin123,能正常登录则部署成功

七、前后端联动验证

  1. 前端页面登录后,检查菜单、用户管理等功能是否正常
  2. 验证接口调用:新增用户或角色,确认后端数据同步更新

八、常见问题排查

  1. 前端打包失败:检查 node 版本是否为 18.19.0,或切换 npm 镜像源
  2. 镜像推送失败 :检查 Harbor 仓库是否创建ruoyi-vue项目,或 Docker 登录凭证是否正确
  3. 前端访问后端接口 404 :检查VUE_APP_BASE_API配置是否正确,或 K8S Service 端口是否暴露
相关推荐
爬山算法4 小时前
Hibernate(85)如何在持续集成/持续部署(CI/CD)中使用Hibernate?
java·ci/cd·hibernate
吹牛不交税6 小时前
gitea安装windows并实现CICD持续集成部署
ci/cd·gitea
only_Klein8 小时前
jenkins流水线报错:Connection reset by peer
ci/cd·kubernetes·gitlab·jenkins·ssl
_运维那些事儿9 小时前
skywalking链路追踪
java·运维·ci/cd·软件构建·skywalking·devops
学嵌入式的小杨同学18 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
u0104058361 天前
淘客返利系统的CI/CD流水线搭建:Docker镜像构建与K8s部署实践
ci/cd·docker·kubernetes
手动阀行1 天前
守护发布的最后一道防线:将自动化红队测试深度嵌入 CI/CD 流水线,筑牢 MCP 应用持续交付的安全底座
安全·ci/cd·自动化
爱内卷的学霸一枚1 天前
现代DevOps实践:从CI/CD到GitOps的深度技术解析
运维·ci/cd·devops
切糕师学AI1 天前
什么是CI/CD(持续集成/持续交付与部署)?
ci/cd·持续部署·持续集成·持续交付