jenkins部署jeecg-boot3.1(前后端)自动化

2023-11-02

tip:

我是使用我的腾讯云轻量应用服务器做的本次实战

(操作系统:CentOS 7.6 64bit)

(主机规格:CPU: 4核 内存: 4GB)这个配置起前端有点带不动-_-,建议8G内存,这个问题我反复测试很多次。一跑npm 就开始疯狂占资源,然后操作系统内存不够直接把jenkins的进程都给杀了。所以如果你也是4g或者2g内存,尽量不要有其他多余的应用或者容器在机器上运行。

1. Ready

1.1. jenkins

​ tip:如果已经成功启动访问jenkins,可以直接跳过1.1

a.getjenkins.war

​ 启动:

nohup java -jar jenkins.war --httpPort=7999 >output 2>&1 &

b.docker(不推荐,大佬随意)

docker pull jenkins/jenkins
docker run \
  -u root \
  --rm \
  -d \
  -p 7999:8080 \
  -p 50000:50000 \
  -v /jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  jenkinsci/blueocean

a与b的结果都是将jenkins启动,也是我们的目标,本篇文章采用war包方式,也建议war包的方式,docker启的话,里面jdk是11,而我机器的jdk是8,同时项目jdk也是8,换11的话,天知道会出什么问题。 启动之后,访问一下,上述例子中我映射了7999端口,同时我的腾讯云防火墙也开放了7999这个端口,下面是访问图例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zgODUXWE-1648962253693)(E:\MyMdFiles\jenkins部署jeecg-boot3.1图片\1-1.png)]

根据提示粘贴密码,如果是war包启动的就直接复制页面提示的路径就可以,输入命令,即得密码

cat /var/jenkins_home/secrets/initialAdminPassword

,如果是docker启动的,上面的-v挂载了一个路径 /jenkins-data 这里面的文件就是容器里jenkins_home里面的文件,故路径就变成了

cat /jenkins-data/secrets/initialAdminPassword

随后,输入得到的密码,进入,选择安装推荐的插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oT5Lx1FM-1648962253699)(E:\MyMdFiles\jenkins部署jeecg-boot3.1图片\1-2.png)]

,接下来,就等待机器安装,然后创建第一个账户,然后jenkinsURL默认是啥就是啥(反正可以改的),可能会提示重启,如果没有不管。进入jenkins,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9nwR0Lsv-1648962253702)(E:\MyMdFiles\jenkins部署jeecg-boot3.1图片\1-3.png)]

到这里,先停一下。右上角红色的1不管。

1.2. gitee(github和gitlab都类似的,差别不大)

装插件: (系统管理)Manage System -> (插件管理)Manage Plugins -> (可选的插件)Available,在 Filter 中搜索 Gitee,Jersey2 API这两个插件,然后分别选中,然后点install without restart

等待安装完毕即可。

之后,就是配置gitee了

系统管理—>系统配置---->gitee配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-00I4Z2oh-1648962253703)(E:\MyMdFiles\jenkins部署jeecg-boot3.1图片\1-4.png)]

在这里插入图片描述

在 链接名 中输入 Gitee 或者你想要的名字

Gitee 域名 URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)

证书令牌 中如还未配置码云 APIV5 私人令牌,点击 Add - > Jenkins

Domain 选择 全局凭据

Kind 选择 Gitee API 令牌

Scope 选择你需要的范围

Gitee API Token 输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokens
这个令牌建议保存在云笔记之类的东西上,方便自己以后用

ID, Descripiton 中输入你想要的 ID 和描述即可。然后点添加,然后回来选择刚刚添加的令牌,点击测试链接,出现成功即可。

在这里插入图片描述

1.3 maven

我是在宿主机安装的maven,这样后面shell命令里面可以直接用mvn

maven的话最好是使用jeecg官方推荐的

yum -y install maven

找一下settings文件

mvn -v

就可以看到maven home 然后在maven home的conf目录下就有settings文件了。
在这里插入图片描述

然后替换一下 settings.xml文件,或者直接改也行(就下面这部分):

 <mirrors>
       <mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>*,!jeecg,!jeecg-snapshots,!getui-nexus</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
 </mirrors>

1.4 npm

npm是装在宿主机的。因为我是war包直接起的。所以可以直接在后面shell命令里面用npm,如果是docker启动的,容器里面是没有node的,而且容器里面jdk是11,就…不是很方便,所以我前面建议war包直接起。

npm config set registry https://registry.npmmirror.com
npm config get registry

在这里插入图片描述

我的版本:
在这里插入图片描述

1.5 修改前端Dockerfile文件与env文件

jeecg-boot/ ant-design-vue-jeecg / Dockerfile:

FROM nginx
MAINTAINER jeecgos@163.com
VOLUME /tmp
ENV LANG en_US.UTF-8
RUN echo "server {  \
                      listen       8000; \
                      location ^~ /jeecg-boot { \
                      proxy_pass              http://127.0.0.1:8080/jeecg-boot/; \
                      proxy_set_header        Host jeecg-boot-system; \
                      proxy_set_header        X-Real-IP \$remote_addr; \
                      proxy_set_header        X-Forwarded-For \$proxy_add_x_forwarded_for; \
                  } \
                  #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
                  location / { \
                     root   /var/www/html/; \
                      index  index.html index.htm; \
                      if (!-e \$request_filename) { \
                          rewrite ^(.*)\$ /index.html?s=\$1 last; \
                          break; \
                      } \
                  } \
                  access_log  /var/log/nginx/access.log ; \
              } " > /etc/nginx/conf.d/default.conf \
    &&  mkdir  -p  /var/www \
    &&  mkdir -p /var/www/html

ADD dist/ /var/www/html/
EXPOSE 8000
EXPOSE 443

jeecg-boot/ ant-design-vue-jeecg / .env.production

NODE_ENV=production
VUE_APP_API_BASE_URL=http://150.158.39.60:8080/jeecg-boot
VUE_APP_CAS_BASE_URL=http://localhost:8888/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview

2.Begin

新建任务–>构建一个自由风格的软件项目—>源码管理—>点git

输入repository URL:https://gitee.com/xiao_chaowen/jeecg-boot.git(也就是仓库地址)

配置凭证:
在这里插入图片描述

gitee的用户名密码

点高级:

Branch Specifier 选项:
对于单仓库工作流输入: origin/ g i t e e S o u r c e B r a n c h 对 于 P R 工 作 流 输 入 : p u l l / {giteeSourceBranch} 对于 PR 工作流输入: pull/ giteeSourceBranchPR:pull/{giteePullRequestIid}/MERGE
Additional Behaviours 选项:
对于单仓库工作流,如果你希望推送的分支构建前合并默认分支(发布的分支),可以做以下操作:
点击 Add 下拉框
选择 Merge before build
设置 Name of repository 为 origin
设置 Branch to merge to 为 ${ReleaseBranch} 即要合并的默认分支(发布分支)
对于 PR 工作流,码云服务端已经将 PR 的原分支和目标分支作了预合并,您可以直接构建,如果目标分支不是默认分支(发布分支),您也可以进行上诉构建前合并。
在这里插入图片描述

接着构建触发器:

点击gitee webhook触发构建

在这里插入图片描述
在这里插入图片描述

点击生成一下gitee webhook密码 同时记录上面一张图的gitee webhook要填的URL。然后去gitee新增webhook进行填写即可。

在这里插入图片描述

然后回来配置构建,点击增加构建步骤—>执行shell:

在这里插入图片描述

cd jeecg-boot
docker-compose down || true
cd ../ant-design-vue-jeecg
docker stop jeecg-boot-nginx || true
docker rm jeecg-boot-nginx || true
docker rmi nginx:jeecgboot || true
node -v
npm -v
rm -rf node_modules || true
rm -rf dist || true
npm install
npm install webpack --save-dev
rm -rf node_modules/caniuse-lite
rm -rf node_modules/browserslist
npm i --save-dev caniuse-lite browserslist
npm run build
docker build -t nginx:jeecgboot .
docker run --name jeecg-boot-nginx -p 8000:8000 --restart=always -d nginx:jeecgboot
cd ../jeecg-boot
mvn clean install
docker-compose build
docker-compose up -d

这堆命令,就是起后台和前台的镜像,可以根据自己情况更改

然后是构建后操作:
在这里插入图片描述

完事了保存一下。就可以在gitee webhook那里点击测试,然后回到jenkins查看控制台输出

在这里插入图片描述
然后查看服务器,会有四个容器已经启动,如果启动失败的,看一下logs,有可能是配置之类的问题。
在这里插入图片描述
现在就可以访问8000

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jenkins部署jeecg-boot3.1(前后端)自动化 的相关文章

  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 从文本文件中读取阿拉伯字符

    我完成了一个项目 在该项目中我读取了用记事本编写的文本文件 我的文本文件中的字符是阿拉伯语 文件编码类型是UTF 8 当在 Netbeans 7 0 1 中启动我的项目时 一切似乎都正常 但是当我将项目构建为 jar 文件时 字符以这种方式
  • 在 Java 中使用 Batik 检查和删除 SVG 中的属性

    这个问题基本上说明了一切 如何检查 SVG 是否具有 viewBox 属性 我正在使用蜡染库 我需要这个 因为我需要 至少 通知用户有一个 viewBox 属性 我可以删除它吗 使用 org w3c dom 类 您可以按照以下方式做一些事情
  • 在 jTextfield 中禁用“粘贴”

    我有一个用 Swing awt 编写的应用程序 我想阻止用户将值粘贴到文本字段中 有没有办法在不使用动作监听器的情况下做到这一点 您可以使用 null 参数调用 setTransferHandler 如下所示 textComponent s
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • 即使在轴上进行自动量程调整,我也可以保留积分刻度线吗?

    我 偷 了一些代码here http fxexperience com 2012 01 curve fitting and styling areachart 拥有一个AreaChart我在 FXML 中使用了 平滑线条 它的工作原理如下
  • 如何在 MSSQL 中获取 CURRENT_DATE?

    我正在使用 jpa 3 o 和 Hibernate 我有一个命名查询 SELECT COUNT wt id FROM WPSTransaction wt WHERE wt createdDate gt CURRENT DATE WPSTra
  • 无法从资源加载图片

    So I am trying to load a image file from a resource so that when I export my application into a jar file it could be use
  • 确定序列化对象的类型

    我需要通过套接字发送消息 从用户到引擎的请求 以及从引擎到用户的响应 所以流程本质上是 serialized request Server lt network gt Client serialized response request r
  • 无法指向 Jenkins 主机上 ~/.ssh 中的 ssh 密钥

    我已经安装了 SSH 代理插件来使用 SSH 身份验证拉取 Git 存储库 我想使用位于系统文件中的 SSH 密钥 来自 Jenkins master ssh选项 这是从官方插件页面截取的屏幕截图 不幸的是我没有看到这个选项 我只能选择 直
  • 插入时的 iBatis 判别器

    我有一个抽象类Example以及与之相伴的具体子类 我使用鉴别器来提取数据out数据库的 像这样
  • 纱线上的火花,连接到资源管理器 /0.0.0.0:8032

    我正在我的开发机器 Mac 上编写 Spark 程序 hadoop的版本是2 6 spark的版本是1 6 2 hadoop集群有3个节点 当然都在linux机器上 我在idea IDE中以spark独立模式运行spark程序 它运行成功
  • 用于层次结构树角色的 Spring Security / Java EE 解决方案

    我知道 Spring Security 非常适合标准角色和基于权限的授权 我不确定的是这种情况 系统中管理着 10 000 名员工 员工被组织成组织结构图 跨部门的谁向谁报告的树 其中一些员工是用户 这些用户仅被允许访问其职责范围内的员工
  • 在 Java 中创建 XML 文件的最佳方法是什么?

    我们目前使用 dom4j 来创建 XML 文件 不过 我猜现在有更好的东西了 如果我们使用的是 Java 1 6 或更高版本 那么在编写 XML 文件时最好使用什么类 运行速度最快 使用简单 我不需要构建一个 DOM 然后编写整个 DOM
  • 如何从字符串中解析一个大整数? [复制]

    这个问题在这里已经有答案了 我有一个这样的方法 Integer parseInt myInt 不是这个整数变得很长 我得到以下异常 java lang NumberFormatException For input string 40001
  • 如何从intellij项目视图中隐藏不必要的文件?

    给定一个示例 gradle 项目 其项目结构如下所示 正如你所看到的 有很多东西你实际上不需要在想法中看到 但你需要它们存在 我知道下面被忽略的文件 文件夹类型Editor File Types但这些正在影响库和项目 idea 会在各处忽略
  • 如何制作一个makefile只用于编译一些java文件?

    我有三个java文件 名为A java B java C java A将创建对象B B将创建对象C 但我以前从未构建过makefile 有谁可以帮我构建一个 makefile 来编译这三个 java 文件吗 我应该使用什么工具来制作 mak
  • Collections.sort(list) 和 list.sort(Comparator) 之间的区别

    有什么理由让我应该选择Collections sort list 方法而不是简单地调用list sort 内部Collections sort只是调用sort的方法List无论如何 上课 令人惊讶的是几乎每个人都告诉我使用Collectio
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 决策树和规则引擎 (Drools)

    In the application that I m working on right now I need to periodically check eligibility of tens of thousands of object

随机推荐

  • 最小二乘法拟合圆公式推导及其实现

    1 1最小二乘拟合圆介绍与推导 最小二乘法 least squares analysis 是一种数学优化技术 它通过最小化误差的平方和找到一组数据的最佳函数匹配 最小二乘法是用最简的方法求得一些绝对不可知的真值 而令误差平方之和为最小来寻找
  • 在线教育录播视频防下载安全测试 _EduSoho_HLS(m3u8)

    基于测试某录播课平台视频安全性的需求 对平台上的免费视频进行安全测试 看看到底能否较好的防下载 以下为几种常用的视频加密技术 我们这次的测试平台采用的是第二种 第三种方式主要依靠专用播放器来解决数据交到客户端的这一环的安全性 但是专用播放器
  • js递归缓存方法

    方法一 普通递归缓存法 function fn n if isFinite n n gt 0 n Math round n 不是无限数 是否大于0 取整 if n in fn 是否在fn缓存内 if n lt 1 当n 1时 结果为1 re
  • mysql 索引相关,什么时候该使用索引,什么时候不使用

    索引为什么能提高数据访问性能 很多人只知道索引能够提高数据库的性能 但并不是特别了解其原理 其实我们可以用一个生活中的示例来理解 我们让一位不太懂计算机的朋友去图书馆确认一本叫做 MySQL性能调优与架构设计 的书是否在藏 这样对他说 请帮
  • Qt中UDP通信的简单示例

    udp通信分为发送端和接收端 通信步骤可以分为以下 接收端 创建QUdpSocket对象 在 h文件中添加类的前置声明 定义该类的指针 在 cpp的构造函数中定义指向该类的指针 bind 绑定IP和端口 connect 绑定readyRea
  • 深入理解MongoDB高级架构

    一 MongoDB 索引 MongoDB提供了多样性的索引支持 索引信息被保存在 system indexes 中 且默认总是为 id创建索引 它的索引使用基本和 MySQL 等关系型数据库一样 其实可以这样说说 索引是凌驾于数据存储系统之
  • docker-compose安装redis

    基于docker compose快速安装redis 目录 一 目录结构 1 docker compose yml 2 redis conf 二 连接使用 一 目录结构 1 docker compose yml version 3 servi
  • 安装vm tools时提示本程序需要您将此虚拟机上安装的操作系统更新到SP1

    VMware安装win7后 安装VMware Tools时报错安装程序无法继续 本程序需要您将此虚拟机上安装的操作系统更新到SP1 原因 镜像文件不适合 原版本是 cn windows 7 enterprise x64 dvd x15 70
  • 重装系统蓝屏,电脑开机蓝屏解决方法记录

    电脑开机就kmode exception not handled 并且重装系统进不了pe 出现错误代码 unexpected kernel mode trap 电脑问题详细描述 开机就蓝屏 进不了系统 进不了安全模式 并且电脑会循环开机关机
  • GPT模型系列

    文章目录 1 Mask Multi head Attentiion 2 Generative Pre Traning GPT 3 GPT2 4 GPT3 1 Mask Multi head Attentiion Mask Multi hea
  • php数据库判断登录用户,【判断用户登录】PHP这样判断流程是否正确?每次都查询数据库 存COOKIE...

    我自己来做的PHP判断用户是否登录 流程 1 先判断有没有cookie uid cookie uid 如果没有跳出循环检测 2 如果有 连接数据库查询该uid对应的记录 如果没有改记录则跳出循环检测并且注销所有用户cookie 3 如果有
  • 前k个高频单词

    不要害怕前方的未知和困难 因为它们都是你成长的机会 不要过于在意别人的眼光和评价 因为唯有你的内心才知道自己真正的价值 珍惜当下 享受生活的点滴 让自己变得更加坚强 自信 成熟 作者 不能再留遗憾了 专栏 Java学习 本文章主要内容 前k
  • 星星之火-52:6G十大领域关键技术

    目录 1 6G超宽带通信系统的网络架构 2 6G超宽带通信系统的软件架构 3 太赫兹通信技术 4 6G 信道仿真技术及射线跟踪 5 超大带宽与全频谱协作 6 轨道角动量调制技术 7 宽带太赫兹硬件元器件技术 8 太赫兹天线技术 9 太赫兹射
  • 国产系统有了,芯片有了,编译器有了,那编程语言呢?

    国产操作系统一直在发展 市面上也早有了多款基于Linux内核的操作系统 各大OS厂商也都有自己的市场和拥趸 而芯片这块 虽然我们起步晚 商业市场也显得浮躁纷繁 但依旧有务实的IT科研工作者 工程师为主的企业或团队默默无闻十年磨一剑 苦心孤诣
  • (十三)MySQL数据库安装——从0开始大数据开发实战:电影推荐系统(scala版)

    执行一下命令 安装MySQL sudo apt get update sudo apt get install mysql server 安装过程中会提示设置MySQL数据库root用户的密码 本案例设置密码为hadoop 安装完成后默认启
  • 常用英语缩写

    Abandon简写为ABAN Abandoned简写为ABD Abbreviate简写为ABBR Abbreviated简写为ABR Abbreviation简写为ABR Ability简写为ABL Abundance简写为ABUND Ac
  • 虚幻4学习笔记(4)光照、游戏角色、上下车、冲刺瞬移多段跳、打包

    光照 光照 光照分类 光的移动性 自动曝光 指数级高度雾 生成光束 使用体积雾创建光束 使用天空球制造夜晚 设置玩家角色 设置玩家切换 镜头过度 上下车 上车 下车 下车减速 人物冲刺和瞬移 冲刺 瞬移 多段跳设置 打包 B站UP谌嘉诚课程
  • LinkedList工作原理及实现

    以双向链表实现 链表无容量限制 但双向链表本身使用了更多空间 也需要额外的链表指针操作 按下标访问元素 get i set i e 要悲剧的遍历链表将指针移动到位 如果i gt 数组大小的一半 会从末尾移起 插入 删除元素时修改前后节点的指
  • Qt编写自定义控件大全

    最新版可执行文件 https pan baidu com s 1Y z4GT4kslgsb4f46yLILA 不定期增加控件及修正BUG和改进算法 目前已超过90个控件 总图 总图 1 动画按钮 1 可设置显示的图像和底部的文字 2 可设置
  • jenkins部署jeecg-boot3.1(前后端)自动化

    tip 我是使用我的腾讯云轻量应用服务器做的本次实战 操作系统 CentOS 7 6 64bit 主机规格 CPU 4核 内存 4GB 这个配置起前端有点带不动 建议8G内存 这个问题我反复测试很多次 一跑npm 就开始疯狂占资源 然后操作