Jenkins前后端分离-若依项目(保姆级教程)

若依项目动静分离项目实现

若依(RuoYi)是一款基于 Spring Boot + Spring Security + MyBatis 的快速开发框架,提供了简洁的代码生成、权限管理、用户管理等功能,适用于企业后台管理系统的快速搭建。动静分离是若依项目架构的一部分,旨在提高系统的性能和安全性。

若依动静分离的典型架构

1.前端(RuoYi-Vue)

  • 前端使用Vue.js框架进行开发,构建了一个单页面应用程序(SPA)。
  • 前端代码通过Vue CLI编译和打包为静态文件(如HTML、CSS、JavaScript)。

2.后端(RuoYi-Admin)

  • 后端基于Spring Boot,提供RESTful API服务,处理业务逻辑、数据库操作和权限管理。
  • 后端不再直接处理静态资源请求,专注于处理动态请求,如API调用和业务处理。

1、服务需求

主机名称IP地址运行服务版本
nginx-server192.168.29.50nginx前端项目1.26.1
java-server192.168.29.51jdk、mavenjdk:1.8
maven:3.8.7
mysql-server192.168.29.52mysql5.7
redis-server192.168.29.53redis6.2.7
gitlab-server192.168.29.54gitlab17.1.1
jenkins-server192.168.29.55jdk、maven、tomcat、jenkinsjdk:11.0.2
maven:3.8.5
tomcat:8.5.45
jenkins:2.414.3

2、环境安装

1、Nginx安装与配置

1.配置Nginx安装源

[root@nginx-server ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2.安装Nginx

[root@nginx-server ~]# yum -y install nginx

2、JDK、Maven安装与配置

[root@java-server ~]# ls
apache-maven-3.8.7-bin.tar.gz  jdk-8u211-linux-x64.tar.gz

将jdk和maven安装包解压到/usr/local下

[root@java-server ~]# tar -xvzf jdk-8u211-linux-x64.tar.gz -C /usr/local
[root@java-server ~]# tar -xvzf apache-maven-3.8.7-bin.tar.gz -C /usr/local

更改目录名称

[root@java-server ~]# cd /usr/local
[root@java-server local]# mv jdk1.8.0_211/ java
[root@java-server local]# mv apache-maven-3.8.7/ maven

配置环境变量

# 在文件下方添加以下内容
[root@java-server local]# vim /etc/profile
# 指定java安装目录
JAVA_HOME=/usr/local/java
# 指定maven安装目录
MAVEN_HOME=/usr/local/maven/
PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH

# 重新加载环境变量
[root@java-server local]# source /etc/profile

测试

# 测试java
[root@java-server local]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

# 测试maven
[root@java-server local]# mvn -v
Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Maven home: /usr/local/maven
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_211/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.71.1.el7.x86_64", arch: "amd64", family: "unix"

3、MySQL5.7安装与配置

1.安装MySQL5.7

# 卸载旧依赖
[root@mysql-server ~]# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y

# 安装wget
[root@mysql-server ~]# yum install -y wget yum-utils git

# 安装MySQL安装源
[root@mysql-server ~]# wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@mysql-server ~]# yum install -y mysql80-community-release-el7-3.noarch.rpm 

# 启动MySQL5.7安装源
[root@mysql-server ~]# vim /etc/yum.repos.d/mysql-community.repo 

# 安装MySQL5.7
[root@mysql-server ~]# yum install -y mysql-community-server

# 启动MySQL
[root@mysql-server ~]# systemctl start mysqld
[root@mysql-server ~]# systemctl enable mysqld

# 查看密码
[root@mysql-server ~]# grep "password" /var/log/mysqld.log 
2024-09-16T06:57:22.909747Z 1 [Note] A temporary password is generated for root@localhost: l#spc=wdt13W

2.修改root密码与主机连接地址

修改密码

###方式一:交互式修改
# 登录MySQL
[root@mysql-server ~]# mysql -uroot -p'l#spc=wdt13W'
# 修改root密码为MySQL@123;
mysql> SET PASSWORD = PASSWORD('MySQL@123');

###方式二:非交互式修改
[root@mysql-server ~]# mysqladmin -u'root' -p'l#spc=wdt13W' password 'MySQL@123'

3.修改配置文件

[root@mysql-server ~]# vim /etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-time_zone = '+8:00'

# 新建数据库添加的配置信息
lower_case_table_names=1
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
max_connections=10000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

# 重启MySQL
[root@mysql-server ~]# systemctl restart mysqld

创建一个数据库ruoyi,创建用户ruoyi用来管理ruoyi库

[root@mysql-server ~]# mysql -uroot -p'MySQL@123'
mysql> create database ruoyi;
mysql> grant all on ruoyi.* to 'ruoyi'@'%' identified by 'Ruoyi@123';
mysql> flush privileges;

4、Redis安装与配置

1.安装

# 下载安装包
[root@redis-server ~]# wget https://download.redis.io/releases/redis-6.2.7.tar.gz
# 解压安装包
[root@redis-server ~]# tar -xvzf redis-6.2.7.tar.gz  -C /usr/local/
[root@redis-server ~]# cd /usr/local/
# 更改目录名称
[root@redis-server local]# mv redis-6.2.7/ redis
# 安装gcc和make工具
[root@redis-server local]# yum -y install gcc make

[root@redis-server local]# cd redis
[root@redis-server redis]# make 

2.配置修改

修改配置文件

# 修改以下内容
[root@redis-server redis]# vim redis.conf 
bind 0.0.0.0
daemonize yes
logfile "/var/log/redis.log"
requirepass 123456

# 启动redis
[root@redis-server ~]# cd /usr/local/redis/src/
[root@redis-server src]# nohup ./redis-server  ../redis.conf &

# 测试redis
[root@redis-server src]# ./redis-cli 
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG

5、Gitlab安装与配置

1、配置gitlab安装源并安装

[root@gitlab-server ~]# vim /etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever
gpgcheck=0
enabled=1

# 安装gitlab
[root@gitlab-server ~]# yum -y install gitlab-ce

2、修改gitlab配置文件

[root@gitlab-server ~]# vim /etc/gitlab/gitlab.rb
1.# 添加对外的域名(gitlab.papamk.com请添加A记录指向本服务器的公网IP):将原来的修改为
external_url 'http://192.168.29.54'

2.设置地区
gitlab_rails['time_zone'] = 'Asia/Shanghai'

3.设置数据存放目录
git_data_dirs({
  "default" => {
    "path" => "/mnt/nfs-01/git-data"
   }
})

4.开启ssh端口
gitlab_rails['gitlab_shell_ssh_port'] = 22

3、初始化gitlab

重新加载,时间比较长,大概需要10分钟左右

[root@gitlab-server ~]# gitlab-ctl reconfigure

4、启动gitlab服务

[root@gitlab-server ~]# gitlab-ctl start
ok: run: alertmanager: (pid 3191) 189s
ok: run: gitaly: (pid 3155) 192s
ok: run: gitlab-exporter: (pid 3168) 191s
ok: run: gitlab-kas: (pid 2699) 349s
ok: run: gitlab-workhorse: (pid 3139) 192s
ok: run: logrotate: (pid 2425) 373s
ok: run: nginx: (pid 3149) 192s
ok: run: node-exporter: (pid 3163) 191s
ok: run: postgres-exporter: (pid 3199) 188s
ok: run: postgresql: (pid 2536) 355s
ok: run: prometheus: (pid 3177) 190s
ok: run: puma: (pid 2762) 298s
ok: run: redis: (pid 2456) 367s
ok: run: redis-exporter: (pid 3170) 190s
ok: run: sidekiq: (pid 2783) 292s

5、登录gitlab服务并修改密码

查看初始密码

[root@gitlab-server ~]# cat /etc/gitlab/initial_root_password

修改密码之后会自动退出,需要使用新密码重新登录

6、Jenkins安装与部署

我们要用2.414.3版本的jenkins,所以我们选择war包安装方式

nodejs安装与部署

因为我们要对前端代码进行打包,所以需要安装nodejs。

[root@jenkins-server ~]# tar -xvf node-v16.13.0-linux-x64.tar.xz -C /usr/local/
[root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv node-v16.13.0-linux-x64/ node

配置环境变量

# 在文件下方添加以下内容
[root@jenkins-server local]# vim /etc/profile
NODE_HOME=/usr/local/node
NODE_PATH=$NODE_HOME/bin/node_modules
PATH=$NODE_HOME/bin:$PATH

[root@jenkins-server local]# source /etc/profile

验证

[root@jenkins-server local]# node -v
v16.13.0
[root@jenkins-server local]# npm -v
8.1.0
jdk安装与部署

将jdk安装包解压到/usr/local下

[root@jenkins-server ~]# tar -xvzf jdk-11.0.2_linux-x64_bin.tar.gz -C /usr/local/

更改目录名称

[root@jenkins-server ~]# cd /usr/local
[root@jenkins-server local]# mv jdk-11.0.2/ java

配置环境变量

[root@java-server local]# vim /etc/profile
NODE_HOME=/usr/local/node
NODE_PATH=$NODE_HOME/bin/node_modules
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$NODE_HOME/bin:$PATH

[root@java-server local]# source /etc/profile

验证

[root@jenkins-server local]# java -version
java version "11.0.2" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+7-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+7-LTS, mixed mode)
maven安装与部署

因为我们要对后端代码进行打包,所以安装maven。

将maven安装包解压到/usr/local下

[root@jenkins-server ~]# tar -xvzf apache-maven-3.8.5-bin.tar.gz -C /usr/local/

更改目录名称

[root@jenkins-server ~]# cd /usr/local
[root@jenkins-server local]# mv apache-maven-3.8.5/ maven

配置环境变量

[root@java-server local]# vim /etc/profile
NODE_HOME=/usr/local/node
NODE_PATH=$NODE_HOME/bin/node_modules
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/maven
PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$NODE_HOME/bin:$PATH

[root@java-server local]# source /etc/profile

修改maven插件拉取地址

[root@jenkins-server local]# vim maven/conf/settings.xml
<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

验证

[root@jenkins-server local]# mvn -v
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: /usr/local/maven
Java version: 11.0.2, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.71.1.el7.x86_64", arch: "amd64", family: "unix"
Tomcat安装与部署

将tomcat安装包解压到/usr/local下

[root@jenkins-server ~]# tar -xvzf apache-tomcat-8.5.45.tar.gz -C /usr/local/

更改目录名称

[root@jenkins-server ~]# cd /usr/local
[root@jenkins-server local]# mv apache-tomcat-8.5.45/ tomcat

验证

# 启动tomcat
[root@jenkins-server local]# tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

浏览器访问http://192.168.29.55:8080

# 关闭tomcat服务
[root@jenkins-server local]# tomcat/bin/shutdown.sh 

# 删除tomcat默认访问资源
[root@jenkins-server local]# rm -rf tomcat/webapps/*
jenkins安装与配置

将jenkins2.414.3的war包上传到webapp目录下

[root@jenkins-server local]# ls tomcat/webapps/
jenkins.war

启动tomcat

# 启动tomcat
[root@jenkins-server local]# tomcat/bin/startup.sh 

浏览器访问http://192.168.29.55:8080/jenkins

如果显示的是这个错误页面,是因为缺少一些包

[root@jenkins-server local]# yum -y install libXrender libXext libXtst fontconfig

重启tomcat,再次访问,出现这个页面

jenkins默认用户为admin,查看初始密码

[root@jenkins-server local]# cat /root/.jenkins/secrets/initialAdminPassword
f1536f668da24346955bac33136da413

如果这些插件安装失败的话,点击继续即可,不用重新尝试下载

若依项目

拉取若依源码
[root@jenkins-server ~]# yum -y install git
[root@jenkins-server ~]# git config --global user.name "talon"
[root@jenkins-server ~]# git config --global user.email "XXXXX@example.com"
[root@jenkins-server ~]# git config --list
user.name=talon
user.email=XXXXX@example.com
[root@jenkins-server ~]# git clone https://gitee.com/y_project/RuoYi-Vue.git
Cloning into 'RuoYi-Vue'...
remote: Enumerating objects: 16815, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 16815 (delta 1), reused 1 (delta 0), pack-reused 16800
Receiving objects: 100% (16815/16815), 3.95 MiB | 1.82 MiB/s, done.
Resolving deltas: 100% (8547/8547), done.

[root@jenkins-server ~]# ls
apache-tomcat-8.5.45.tar.gz      jenkins.war                     RuoYi-Vue
apache-maven-3.8.5-bin.tar.gz  jdk-11.0.2_linux-x64_bin.tar.gz  node-v16.13.0-linux-x64.tar.xz
将数据导入到数据库中

sql文件存储在拉取的RuoYi-Vue中

[root@jenkins-server ~]# ls /root/RuoYi-Vue/sql/
quartz.sql  ry_20240629.sql

MySQL服务器创建sql文件存放目录

[root@mysql-server ~]# mkdir -p /ruoyi/

将sql文件发送到MySQL服务器上指定目录

[root@jenkins-server ~]# scp -r /root/RuoYi-Vue/sql/ 192.168.29.52:/ruoyi

在MySQL服务器上将数据导入数据库

[root@mysql-server ~]# mysql -uroot -p'MySQL@123' ruoyi < /ruoyi/sql/quartz.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.

[root@mysql-server ~]# mysql -uroot -p'MySQL@123' ruoyi < /ruoyi/sql/ry_20240629.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.

登录数据库查看是否导入成功

更改项目配置信息
更改MySQL配置信息
[root@jenkins-server ~]# vim RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml

更改Redis配置信息
[root@jenkins-server ~]# vim RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml

打包前端项目
[root@jenkins-server ~]# cd /root/RuoYi-Vue/ruoyi-ui/

安装插件

[root@jenkins-server ruoyi-ui]# npm install -registry=http://registry.npmmirror.com

备注:如果此步失败,先执行以下步骤

# 安装cnpm
[root@jenkins-server ruoyi-ui]# npm install -g cnpm -registry=http://registry.npmmirror.com

# 安装vue3
[root@jenkins-server ruoyi-ui]# cnpm init vue@3.0.0

# 安装插件
[root@jenkins-server ruoyi-ui]# cnpm install

编译前端代码

[root@jenkins-server ruoyi-ui]# npm run build:prod

查看当前目录

[root@jenkins-server ruoyi-ui]# ls
dist

前端项目部署

nginx服务器创建前端项目存放目录

[root@nginx-server ~]# mkdir -p /ruoyi/ruoyi-ui

将前端项目从jenkins服务器拷贝到到nginx服务器指定目录

[root@jenkins-server ruoyi-ui]# scp -r /root/RuoYi-Vue/ruoyi-ui/dist  192.168.29.50:/ruoyi/ruoyi-ui

编辑nginx配置文件

[root@nginx-server ~]# vim /etc/nginx/conf.d/default.conf
server {
location / {
    root   /ruoyi/ruoyi-ui/dist;
    try_files $uri $uri/ /index.html;
    index  index.html index.htm;
}

location /prod-api/ {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.29.51:8080/;
 }
}

检查配置文件语法格式

[root@nginx-server ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重新加载nginx服务

[root@nginx-server ~]# systemctl reload nginx

检查nginx启动情况

[root@nginx-server ~]# systemctl status nginx

访问http://192.168.29.50

现在虽然可以访问登录页面,但是不可以登录。

打包后端项目
[root@jenkins-server ~]# cd /root/RuoYi-Vue/ruoyi-admin

安装插件

[root@jenkins-server ruoyi-admin]# mvn install

安装插件是根据pom.xml文件来安装的,所以工作目录下需要有项目对应的pom.xml文件

编译代码

# clean 清理删除已有target目录
# package 对项目进行打包
[root@jenkins-server ruoyi-admin]# mvn clean package[root@jenkins-server ruoyi-admin]# mvn clean
[root@jenkins-server ruoyi-admin]# mvn package

查看打包的项目

[root@jenkins-server ruoyi-admin]# ls
pom.xml  src  target
[root@jenkins-server ruoyi-admin]# ls target/
classes  generated-sources  maven-archiver  maven-status  ruoyi-admin.jar  ruoyi-admin.jar.original

后端项目部署

后端服务器创建后端项目存放目录

[root@java-server ~]# mkdir -p /ruoyi/ruoyi-admin

将后端jar包从jenkins服务器拷贝到到后端服务器指定目录

[root@jenkins-server ruoyi-admin]# scp -r /root/RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar 192.168.29.51:/ruoyi/ruoyi-admin

启动jar包

[root@java-server ruoyi-admin]# nohup java -jar ruoyi-admin.jar &

# 查看运行日志
[root@java-server ruoyi-admin]# tail -f nohup.out

浏览器访问

http://192.168.29.50

Gitlab准备项目

Jenkins配置密钥对

jenkins服务器配置密钥对,将公钥配置在gitlab服务上

[root@jenkins-server ~]# ssh-keygen

[root@jenkins-server ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGTI+auW3n00cAi4puLLh1nRLh7y8xa4SBhcsobxtGdtPOfZYY8tefcJaP3OSHzGkz0YI7MRaz5I42syTsWB1J03AgQ122VkwUgNuuLppOQ0vAFioaVt5tbvxsRS4gLJEFbv5isWmq3enhQjiSNeaJ1KIrizqsPNoabeKGvOXn8XjJquTEJZH3MpbkZ0OZe8ZUEjotswsoArYFU6rA0vaX8RBnmRZxbTcW05N7YA5VO87zLbZ/ivm0JDZNWB/wQylcZv9ToBeiCarBWROCjRfK/j7jkfBXehGUg5e/QxN0EUcgIrFdSTFx48ONiJJk1aGVABuUg2JWekhAIqNvQbw7 root@jenkins-server

复制gitlab项目地址

将ruoyi-web项目拉取到jenkins服务器指定目录

[root@jenkins-server ~]# cd /tmp/
[root@jenkins-server tmp]# git clone git@192.168.29.54:root/ruoyi-vue.git
[root@jenkins-server tmp]# ls
ruoyi-vue
[root@jenkins-server tmp]# ls ruoyi-vue/
README.md

将前端源码拷贝到代码目录

[root@jenkins-server tmp]# cp -r /root/RuoYi-Vue/* ruoyi-vue/

[root@jenkins-server tmp]# cd ruoyi-vue/
[root@jenkins-server ruoyi-vue]# ls
bin  LICENSE  README.md    ruoyi-common     ruoyi-generator  ruoyi-system  ry.bat  sql
doc  pom.xml  ruoyi-admin  ruoyi-framework  ruoyi-quartz     ruoyi-ui      ry.sh

将代码推送到gitlab仓库

[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "RuoYi前端源码第一版"
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 887, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (780/780), done.
Writing objects: 100% (885/885), 73.21 MiB | 11.01 MiB/s, done.
Total 885 (delta 100), reused 0 (delta 0)
remote: Resolving deltas: 100% (100/100), done.
To git@192.168.29.54:root/ruoyi-vue.git
   b8150e0..1f23afc  main -> main

Jenkins服务配置

Jenkins安装插件

插件搜索git、ssh、maven、nodejs

安装完成之后最好重启一下jenkins

等待重启完成。

Jenkins配置Node工具&JDK工具

经常点击“应用”按钮

Jenkins构建前端项目

源码仓库配置&配置公钥私钥

[root@jenkins-server ~]# cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxkyPmrlt59NHAIuKbiy4dZ0S4e8vMWuEgYXLKG8bRnbTzn2W
GPLXn3CWj9zkh8xpM9GCOzEWs+SONrMk7FgdSdNwIENdtlZMFIDbri6aTkNLwBYq
GlbebW78bEUuICyRBW7+YrFpqt3p4UI4kjXmidSiK4s6rDzaGm3ihrzl5/F4yark
xCWR9zKW5GdDmXvGVBI6LbMLKAK2BVOqwNL2l/EQZ5kWcW03FtOTe2AOVTvO8y22
f4r5tCQ2TVgf8EMpXGb/U6AXogmqwVkTgo0Xyv4+45HwV3oRlIOXv0MTdBFHICKx
XUkxcePDjYiSZNWhlQAblINiVnpIQCKjb0G8OwIDAQABAoIBAHytJFj+nyhzwR+J
nIa63VstX/LnxH9I/23EJkCM4tRB39fjRBz5ijJ3wmI/Wvw6vCZVYpE+wuxmFjg0
GFH08K07IDNYx7HdvkXh4r04FdKBIz5pcR1QYtbhQhn8wQx/mMqWx6BbtXk1v1fe
n9zlwMYGB9Ri3IfwVpzpW9SlLdPO9hiHu41jsn2pu8BDa0HuIZCeBclxSMLp5WAE
zhf0VIPqxe4QkOhBSyDAhrrZL4+JM/NEwNIVWDhd9GtrpW7WSpmDLQLplh+NIjOY
IL6YRNMWKtFaC2ubg0tpQhHdUMclJlcSnFfGwnpePNieaET053oZHOCu/1hLLd9K
foU6UDkCgYEA7P5w2sCxQ4Fky+Aqzbhqe1CEX1jZQWwxKPJKOPc+/IyDKsSnmJMO
gLy/myweDQ+4l+n6R2l9lcos3QRLyMrgLO2x+eQ9P79laBYpX/AlTZXVeqCl0voz
GZsHOdSCxwAF5cWP9tZpGOhZTYgC8nhiMJyZzT1Z55JvC3NjO0bkvy8CgYEA1jOz
7zqsJ4jVGMUuV3cUkGmwhRqTtLh6agprJzD887/fh+ErBDqEfX3fUCtSw8D0+BJ1
uwbUb3DHCgBAgRrDsUCKePMptB+U71TVARwefpICmg3r5HgnhRZUHfrb0UmBbwIb
3kRUOxk26mhV6SoeVcubjNlfGJ6qCV+K11m+cLUCgYEAukBpDvIbHdNmFPfyi8Sg
IpOvxIM+ErVlmSl5fXWKUc5YE1eD41vHLROpfdjZMSimyPUAVfko0nyWb4g9yurt
7UFM+vgNzririHbKQ3SmzGex43K3f6xUVo5IyoEh2iVBfUebkcEFzaZk8JKwxkAn
4s5f7TWHH4AstxIS7XYUtc8CgYAJdXMGp2KexE4Ur/Bh8GI6FlCzL/9BxbuyHw+o
RWOGJ/zo9Sp/H05mdD5+PcuD1Wt74OTOA3kyCprfeC9hBBuMIjt7J9G5oINlJivZ
xrIaCLyQrPizuBKWr+u6/y7hyQssKb2tTPsjOPPR2hWhHDkGtN0DlT27ypXboBpz
dAUS2QKBgEKHw6oJ8+IqYlA4TlyDoyT6lXiR+iQdURVxY9VL1tArtAO3c+meW8E5
LVNV+SLxTNEPeCfYClE7QDYEwn8oVi2yXgazvKF8blBEjYnHn7PWBLoa072UifQL
oyAdEQaKx4l7gMkvXKNnSxxfHP19AbOVcJACheGW0fQuSQVccEBq
-----END RSA PRIVATE KEY-----

尝试ssh拉取

Jenkins服务器查看代码是否拉取成功

[root@jenkins-server ~]# cd /root/.jenkins/workspace/ruoyi-web
[root@jenkins-server ruoyi-web]# ls
bin  LICENSE  README.md    ruoyi-common     ruoyi-generator  ruoyi-system  ry.bat  sql
doc  pom.xml  ruoyi-admin  ruoyi-framework  ruoyi-quartz     ruoyi-ui      ry.sh
配置node工具

Jenkins配置Publish Over SSH

[root@jenkins-server ~]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxkyPmrlt59NHAIuKbiy4dZ0S4e8vMWuEgYXLKG8bRnbTzn2W
GPLXn3CWj9zkh8xpM9GCOzEWs+SONrMk7FgdSdNwIENdtlZMFIDbri6aTkNLwBYq
GlbebW78bEUuICyRBW7+YrFpqt3p4UI4kjXmidSiK4s6rDzaGm3ihrzl5/F4yark
xCWR9zKW5GdDmXvGVBI6LbMLKAK2BVOqwNL2l/EQZ5kWcW03FtOTe2AOVTvO8y22
f4r5tCQ2TVgf8EMpXGb/U6AXogmqwVkTgo0Xyv4+45HwV3oRlIOXv0MTdBFHICKx
XUkxcePDjYiSZNWhlQAblINiVnpIQCKjb0G8OwIDAQABAoIBAHytJFj+nyhzwR+J
nIa63VstX/LnxH9I/23EJkCM4tRB39fjRBz5ijJ3wmI/Wvw6vCZVYpE+wuxmFjg0
GFH08K07IDNYx7HdvkXh4r04FdKBIz5pcR1QYtbhQhn8wQx/mMqWx6BbtXk1v1fe
n9zlwMYGB9Ri3IfwVpzpW9SlLdPO9hiHu41jsn2pu8BDa0HuIZCeBclxSMLp5WAE
zhf0VIPqxe4QkOhBSyDAhrrZL4+JM/NEwNIVWDhd9GtrpW7WSpmDLQLplh+NIjOY
IL6YRNMWKtFaC2ubg0tpQhHdUMclJlcSnFfGwnpePNieaET053oZHOCu/1hLLd9K
foU6UDkCgYEA7P5w2sCxQ4Fky+Aqzbhqe1CEX1jZQWwxKPJKOPc+/IyDKsSnmJMO
gLy/myweDQ+4l+n6R2l9lcos3QRLyMrgLO2x+eQ9P79laBYpX/AlTZXVeqCl0voz
GZsHOdSCxwAF5cWP9tZpGOhZTYgC8nhiMJyZzT1Z55JvC3NjO0bkvy8CgYEA1jOz
7zqsJ4jVGMUuV3cUkGmwhRqTtLh6agprJzD887/fh+ErBDqEfX3fUCtSw8D0+BJ1
uwbUb3DHCgBAgRrDsUCKePMptB+U71TVARwefpICmg3r5HgnhRZUHfrb0UmBbwIb
3kRUOxk26mhV6SoeVcubjNlfGJ6qCV+K11m+cLUCgYEAukBpDvIbHdNmFPfyi8Sg
IpOvxIM+ErVlmSl5fXWKUc5YE1eD41vHLROpfdjZMSimyPUAVfko0nyWb4g9yurt
7UFM+vgNzririHbKQ3SmzGex43K3f6xUVo5IyoEh2iVBfUebkcEFzaZk8JKwxkAn
4s5f7TWHH4AstxIS7XYUtc8CgYAJdXMGp2KexE4Ur/Bh8GI6FlCzL/9BxbuyHw+o
RWOGJ/zo9Sp/H05mdD5+PcuD1Wt74OTOA3kyCprfeC9hBBuMIjt7J9G5oINlJivZ
xrIaCLyQrPizuBKWr+u6/y7hyQssKb2tTPsjOPPR2hWhHDkGtN0DlT27ypXboBpz
dAUS2QKBgEKHw6oJ8+IqYlA4TlyDoyT6lXiR+iQdURVxY9VL1tArtAO3c+meW8E5
LVNV+SLxTNEPeCfYClE7QDYEwn8oVi2yXgazvKF8blBEjYnHn7PWBLoa072UifQL
oyAdEQaKx4l7gMkvXKNnSxxfHP19AbOVcJACheGW0fQuSQVccEBq
-----END RSA PRIVATE KEY-----

将Jenkins服务器root用户生成的公钥发送给nginx服务器的root用户

[root@jenkins-server ~]# ssh-copy-id root@192.168.29.50

配置构建步骤

Jenkins配置发送到nginx服务器

构建前端项目

在Jenkins服务器上查看是否打包成功

在Nginx服务器上查看项目目录时间是否更新

[root@nginx-server ruoyi-ui]# pwd
/ruoyi/ruoyi-ui
[root@nginx-server ruoyi-ui]# ll
total 3388
drwxr-xr-x 4 root root     108 Sep 17 16:21 dist
-rw-r--r-- 1 root root 3465701 Sep 17 16:21 dist.tar.gz
模拟代码更新尝试构建

模拟前端开发人员修改页面

[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue

推送代码

[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "阿里云9999优惠券"
[main 60d5f35] 阿里云9999优惠券
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 497 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
   1f23afc..60d5f35  main -> main

Jenkins再次构建

Jenkins构建后端项目

源码仓库配置&配置公钥私钥

添加后端SSH Server

将Jenkins服务器root用户生成的公钥发送给后端服务器的root用户

[root@jenkins-server ~]# ssh-copy-id root@192.168.29.51

配置构建步骤

Jenkins配置发送到后端服务器

后端服务器准备脚本
[root@java-server ruoyi-java]# pwd
/ruoyi/ruoyi-java
[root@java-server ruoyi-java]# vim java1.sh
#!/bin/bash
ruoyi_pid=`ps -ef|grep "ruoyi-admin"|grep -v "grep"|awk '{print $2}'`
if [[ $ruoyi_pid != "" ]];then
    echo "若依后端服务PID: $ruoyi_pid"
    kill -15 $ruoyi_pid && echo "若依后端服务已关闭"
        nohup java  -jar /ruoyi/ruoyi-java/ruoyi-admin.jar &
    if [ $? -eq 0 ];then
        echo "若依后端服务重新启动成功"
    else
        echo "若依后端服务重新启动失败"
    fi
else
    nohup java  -jar /ruoyi/ruoyi-java/ruoyi-admin.jar &
    if [ $? -eq 0 ];then
        echo "若依后端服务启动成功"
    else
        echo "若依后端服务启动失败"
    fi
fi
构建后端项目

在Jenkins服务器上查看是否打包成功

在后端服务器上查看项目目录时间是否更新

[root@java-server ruoyi-java]# pwd
/ruoyi/ruoyi-java
[root@java-server ruoyi-java]# ll
total 81580
-rwxr-xr-x 1 root root      624 Sep 17 17:06 java1.sh
-rw------- 1 root root     6370 Sep 17 17:08 nohup.out
-rw-r--r-- 1 root root 83532942 Sep 17 17:08 ruoyi-admin.jar

参数化构建前端项目

安装Git Parameter插件

参数化构建前端项目(commit号)

配置Git参数选项

版本切换构建

当前版本为“阿里云9999优惠券”,我们切换到最初版本

查看构建结果

参数化构建前端项目(tag标签)

模拟前端开发人员更新代码
[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue

推送代码

[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "阿里云6666优惠券"
[main b26c040] 阿里云6666优惠券
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git tag -a "v1.0" -m "阿里云6666优惠券"
[root@jenkins-server ruoyi-vue]# git tag
v1.0
[root@jenkins-server ruoyi-vue]# git push origin v1.0
Counting objects: 12, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 642 bytes | 0 bytes/s, done.
Total 7 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
 * [new tag]         v1.0 -> v1.0

配置Git参数选项

标签切换构建

查看构建结果

自动化触发构建

Jenkins安装插件

Jenkins配置webhook

本次未采用参数化构建,还是克隆所有代码,操作的仍是main分支最新版本代码

其他配置不变

Gitlab配置webhook钩子

开启允许本地添加webhook操作

添加仓库webhook钩子

测试自动推送

点击之后,去Jenkins服务查看是否会自动构建

模拟前端开发人员更新代码

[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue

推送代码

[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "webhook自动构建"
[main 9c2d702] webhook自动构建
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 522 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
   60d5f35..9c2d702  main -> main

git参数化自动构建(commit修订号)

测试
[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue

[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "webhook自动触发构建(commit修订号)"
[main 9cba997] webhook自动触发构建(commit修订号)
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 550 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
   9c2d702..9cba997  main -> main

Jenkins配置钉钉机器人通知

Jenkins安装插件

配置钉钉机器人

钉钉群添加机器人

Jenkins添加机器人

钉钉机器人在最下面配置

Jenkins配置机器人

模拟前端开发人员更新代码

[root@jenkins-server ruoyi-vue]# pwd
/tmp/ruoyi-vue
[root@jenkins-server ruoyi-vue]# vim ruoyi-ui/src/views/index.vue

推送代码

[root@jenkins-server ruoyi-vue]# git add *
[root@jenkins-server ruoyi-vue]# git commit -m "webhook自动触发构建(commit修订号)+钉钉机器人通知"
[main 97e9484] webhook自动触发构建(commit修订号)+钉钉机器人通知
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@jenkins-server ruoyi-vue]# git push origin main
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 580 bytes | 0 bytes/s, done.
Total 6 (delta 5), reused 0 (delta 0)
To git@192.168.29.54:root/ruoyi-vue.git
   9cba997..97e9484  main -> main

Jenkins多节点配置

在企业里面使用Jenkins自动部署+测试平台时,每天更新发布几个网站版本,很频繁,但是对于一些大型的企业来讲,Jenkins就需要同时处理很多的任务,这时候就需要借助Jenkins多个node或者我们所说的Jenkins分布式SLAVE。

添加Linux平台Jenkins SLAVE配置:

1、由于Jenkins是Java程序,添加的SLAVE客户端服务器必须安装Java JDK环境;

2、创建远程执行Jenkins任务的用户,一般为jenkins用户,工作目录为/home/jenkins;

3、Jenkins服务器免密钥登录Slave服务器或者通过用户名和密码登录;

添加从节点

参数详解

名字:节点的名字

描述:说明这个节点的用途等

Number of executors:并发构件数量

远程工作目录:用于存放jenkins的工作空间

标签:分配job会以标签的名称去分配

用法:节点的使用策略

启动方法:windows的话就不要给自己添堵了,选择Java web start

测试从节点

项目指定到哪个节点运行。

对于Jenkins自动部署前后端分离项目的过程,可以按照以下步骤进行操作: 1. 首先,下载好前端和后端的项目代码,并将其打包成war包。 2. 将war包部署到服务器上,可以使用以下命令进行启动: ``` nohup java -jar jenkins.war > ../logs/jenkins.log 2>&1 & ``` 这样就可以在后台启动Jenkins。 3. 进入Jenkins的后台页面,通过在浏览器中输入Jenkins的URL地址来访问。 4. 在Jenkins后台页面中,可以创建一个新的任务来进行自动部署。例如,可以在任务配置中指定前端项目的代码仓库地址和构建脚本,以及后端项目的代码仓库地址和构建脚本。 5. 在Jenkins的任务配置中,可以设置触发器,例如每当有新的提交时自动触发构建。这样,当有新的代码提交到代码仓库时,Jenkins就会自动进行构建和部署。 6. 在Jenkins的任务配置中,可以设置构建步骤,例如编译前端项目、编译后端项目、打包、部署等。根据具体项目的需求,可以自定义构建步骤。 7. 完成任务配置后,保存并启动任务。Jenkins会根据配置的触发器自动进行构建和部署。 8. 在部署完成后,可以通过Tomcat等服务器来访问部署好的前后端分离项目。可以通过访问相应的URL地址来查看项目的运行情况。 综上所述,通过以上步骤,可以实现Jenkins自动部署前后端分离项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [jenkins一键部署前后端分离项目](https://blog.csdn.net/weixin_45880270/article/details/124308587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Jenkins部署前后端分离项目最全图文教程(手把手教学)](https://blog.csdn.net/HJW_233/article/details/131816735)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值