Ubuntu上Jenkins自动化部署Gitee上VUE项目

文章目录

    • 1.安装NodeJS插件
    • 2.配置全局工具配置-NodeJS环境变量
    • 3.新建自由风格的软件项目任务
    • 4.配置General
      • 配置丢弃旧的构建
      • 配置参数化构建过程
    • 5.配置源码管理
    • 6.构建触发器
    • 7.设置构建环境
    • 8.配置构建步骤
    • 9.配置构建后操作
    • 10测试构建

前文链接: Ubuntu上Jenkins自动化部署Gitee上SpringBoot项目

相关Jenkins和服务器环境都已配置完成。

1.安装NodeJS插件

Dashboard -> 系统管理 -> 插件管理 -> 可选插件,搜索nodejs,安装即可。

安装完成后重启Jenkins(空闲时)

2.配置全局工具配置-NodeJS环境变量

Dashboard -> 系统管理 -> 全局工具配置(Global tool configuration),添加NodeJS。

如果服务器已经安装了NodeJS,可以配置路径,否则可以选自动安装

也可以添加多个node版本,后面选择其中一个使用。

保存就OK!这样我们在新建任务,配置项目构建环境时就可以选择这里配置的nodejs。

# 注意 服务器和Jenkins上是隔离的
# 这里服务器上没安node,我们选择自动安装。
# 服务器上执行时报错的
# node -v
bash: node: command not found
#这里执行是对的
# /root/.jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS21/bin/node -v
v21.6.2

3.新建自由风格的软件项目任务

Dashboard -> 新建任务

  • 输入任务名称
  • 选择构建一个自由风格的软件项目
  • 点击确认按钮

4.配置General

描述:就是注释,给我们这个job一个更便于其他查看的详解

Throttle builds:节流构建,通过设置时间段内允许并发的次数来实现构建的控制

  • Number of builds:构建的次数
  • Time period:设置指定的时间段,单位可以是年、月、日、周、时、分、秒

在必要时进行并发构建:满足策略要求时就会进行并发构建

安静期:设置一个时间来间隔每次构建的间隔

重试次数:这个和系统设置的一样,拉取源码重试的次数

该项目的上游项目正在构建时阻止该项目构建与该项目的下游项目正在构建时阻止该项目构建:用于上下游项目有关联的构建策略

使用自定义的工作空间:使该项目独立于系统的工作空间

配置丢弃旧的构建

设置构建历史的保存策略

  • log Rotation:日志循环,只有一个默认值选项 Log Rotation,无须修改;
  • 保持构建的天数:根据你所填写的天数来保存构建记录;
  • 保持构建的最大个数:有几条构建记录保存;
  • 发布包保留天数
  • 发布包最大保留个构建

配置参数化构建过程

参数化构建,可以单击添加参数,在每次构建之前需要用户给参数赋值,根据不用的参数值执行不同的处理流程。

以一个示例场景为例,考虑到每次构建可能不需要运行npm install,我们可以通过参数化配置来判断是否在构建时执行这个依赖安装命令。

添加一个布尔值参数INSTALL_DEPENDENCIES.

5.配置源码管理

  • 仓库 URL:https://gitee.com/lakernote/easy-admin.git。
  • 凭证:用于访问Git仓库的用户名密码、ssh 密钥、token 等凭证。
  • Branches to build:指定分支。

6.构建触发器

构建触发器用来设置触发项目构建的时间或者事件。

这里也可以什么都不选,然后手动在Jenkins点击按钮触发。

触发远程构建

勾选此复选框之后,Jenkins 会提供一个特定的 URL 用来触发项目的自动构建。为了安全起见,可以看到在 URL 之后还会要求有一个用于授权的 Token 字段。这样就可以使用 wget 或 curl 这样的工具触发构建。

其它项目构建完成后构建

用来设置在某个项目构建完成后才能触发本项目的构建。而且可以对其它项目的具体构建结果进行设定,比如,稳定的(成功),不稳定的,失败的。比如我们需要在 war 包发布成功后,再进行测试脚本的执行,这种场景下就可以配置此项。

定时构建

img

这是一种类似于 crontab 命令的功能,可以指定在某个或某些具体时间自动进行项目的执行。包含 5 个字段,这些字段以空格或者 Tab 键分割,用来指定多久去执行一次构建。格式为:

  1. MINUTES:一小时内的分钟,取值范围(0-59)
  2. HOURS:一天内的小时,取值范围(0-23)
  3. DAYMONTH :一个月中的某一天,取值范围(1-31)
  4. MONTH :月份,取值范围(1-12)
  5. DAYWEEK:一周中的星期几,取值范围(0-7)。0 和 7 都表示星期日
# every fifteen minutes (perhaps at :07, :22, :37, :52).
H/15 * * * *

# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24).
H(0-29)/10 * * * *

# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.
45 9-16/2 * * 1-5

# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM).
H H(9-16)/2 * * 1-5

# once a day on the 1st and 15th of every month except December.
H H 1,15 1-11 *

轮询 SCM

img

就是定期到指定的代码仓库查询是否有变化,如果有变化就执行。语法同 cron 是一样的。

与周期性构建的区别就是,让 Jenkins 在指定的时间去检查代码仓库是否有变化,有变化了才运行项目,而不是直接到点了就运行项目。

注意:最下面一行有一个复选框,忽略 post-commit 钩子,就是告诉 Jenkins 要忽略来自钩子的信号,目的就是为了防止重复触发操作。

7.设置构建环境

  • Delete workspace before build starts 会在构建之前清空工作空间。
  • Use secret text(s) or file(s) 使用加密文件或者文本。

8.配置构建步骤

选择执行shell

注意脚本中的一些相对目录问题。

# 在脚本中的执行结果如下
# 命令:echo $PATH
11:29:22 echo $PATH
11:29:22 /usr/lib/jvm/java-11-openjdk-amd64/bin:/root/.jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/NodeJS21/bin:/usr/lib/jvm/java-11-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# 命令: pwd
11:29:23 + pwd
11:29:23 /root/.jenkins/workspace/laker-vue

Shell内容

# 进入Jenkins工作空间下vue项目目录
cd ./laker-admin

# 根据 INSTALL_DEPENDENCIES 参数的值判断是否需要安装依赖包
if [ "$INSTALL_DEPENDENCIES" = true ]; then
    echo "下载依赖包"
    npm config set registry https://registry.npmmirror.com  # 设置npm镜像源
    npm config list  # 打印npm配置列表
    npm install  # 安装依赖包
fi

echo "删除dist目录"
rm -rf ./dist/*  # 删除dist目录下的所有文件

npm run build:prod  # 执行生产环境构建命令

echo "清空目标目录"
rm -rf /laker/admin-client/*  # 删除目标目录下的所有文件

# 确保目标目录存在
mkdir -p /laker/admin-client/dist

# 将构建生成的文件复制到目标目录
cp -rf ./dist/* /laker/admin-client/dist

9.配置构建后操作

一些常见的构建后操作包括:

  • 邮件通知: 发送构建结果通知给指定的邮件地址。
  • 部署到服务器: 将构建产物部署到指定的服务器。
  • 触发其他任务: 在当前任务构建完成后触发其他Jenkins任务。
  • 生成报告: 生成测试报告、代码覆盖率报告等。

点击保存按钮。

10测试构建

1.点击使用参数构建

2.在Console Output 菜单可以查看构建日志。

12:36:59   Images and other types of assets omitted.
12:36:59 
12:36:59  DONE  Build complete. The dist directory is ready to be deployed.
12:36:59  INFO  Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html
12:36:59       
12:37:00 + echo 清空目标目录
12:37:00 清空目标目录
12:37:00 + rm -rf /laker/admin-client/*
12:37:00 + mkdir -p /laker/admin-client/dist
12:37:00 + cp -rf ./dist/favicon.ico ./dist/index.html ./dist/static ./dist/tinymce4.7.5 /laker/admin-client/dist
12:37:00 Finished: SUCCESS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/418602.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 OpenCV 通过 SIFT 算法进行对象跟踪

本文介绍如何使用 SIFT 算法跟踪对象 在当今世界,当涉及到对象检测和跟踪时,深度学习模型是最常用的,但有时传统的计算机视觉技术也可能有效。在本文中,我将尝试使用 SIFT 算法创建一个对象跟踪器。 为什么人们会选择使用传统的计…

深入Linux内核(进程篇)—进程切换之ARM体系架构 简单总结

context_switch函数完成Arm架构Linux进程切换,调用两个函数: 调用switch_mm() 完成用户空间切换,刷新I-CACHE,处理ASID和TLB,页表转换基址切换(即把TTBR0寄存器的值设置为新进程的PGD)&#xf…

应用多元统计分析--多元数据的直观表示(R语言)

例1.2 为了研究全国31个省、市、自治区2018年城镇居民生活消费的分布规律,根据调查资料做区域消费类型划分。 指标: 食品x1:人均食品支出(元/人) 衣着x2:人均衣着商品支出(元/人) 居住x3:人均居住支出(元/人) 生活x4…

智能驾驶规划控制理论学习-基于采样的规划方法

目录 一、基于采样的规划方法概述 二、概率路图(PRM) 1、核心思想 2、实现流程 3、算法描述 4、节点连接处理 5、总结 三、快速搜索随机树(RRT) 1、核心思想 2、实现流程 3、总结 4、改进RRT算法 ①快速搜索随机图&a…

Newtonsoft.Json

目录 引言 1、简单使用 1.1、官方案例 1.2、JsonConvert 2、特性 2.1、默认模式[JsonObject(MemberSerialization.OptIn/OptOut)] 2.2、序列化为集合JsonArrayAttribute/JsonDictionaryAttribute 2.3、序列化该元素JsonProperty 2.4、忽略元素JsonIgnoreAttribute 2.5、…

来,和同频的人一起学习论文#理解技术趋势

学习新技术,慢慢也有了施展拳脚的地方。今天我们给ComfyUI中文爱好者社区成员提供了一个工作机会,有需要可以联系我们的小助手: 相信这几天大家都看到了我们更新了些论文笔记出来,阅读1篇英文论文我们需要花几个小时,如…

STM32串口DMA发送接收(1.5Mbps波特率)机制

数据拷贝过程中不需要CPU干预,数据拷贝结束则通知CPU处理。 以115200bps波特率,1s传输11520字节,大约69us需响应一次中断,如波特率再提高,将消耗更多CPU资源 高波特率场景下,串口非常有必要使用DMA。 关…

C#使用iText7将多个PDF文档合并为单个文档

使用HtmlAgilityPack抓取并分析网页内容,然后再调用PuppeteerSharp将网页生成PDF文件,最终的成果如下图所示,得到将近120个pdf文档。能看,但是不方便,需要逐个打开文档才能看到所需的内容,最好能将这些文档…

Ps:绘画对称功能

Photoshop 中的绘画对称 Paint Symmetry功能允许用户在画布上创建对称的绘画和设计,极大地提高了创作的效率和准确性,尤其适合于制作复杂的对称图形和图案。 可在使用画笔工具、铅笔工具或橡皮擦工具时启用“绘画对称"功能。 提示: 绘画…

【IO流系列】ObjectStream 序列化流与反序列化流

序列化流与反序列化流 1. 概述2. 作用3. 序列化流(对象操作字节输出流)3.1 构造方法3.2 成员方法3.3 代码示例 4. 反序列化流(对象操作字节输入流)4.1 构造方法4.2 成员方法4.3 代码示例 5. 细节6. 练习6.1 练习1:用对…

看待事物的层与次 | DBA与架构的一次对话交流

前言 在计算机软件业生涯中,想必行内人或多或少都能感受到系统架构设计与数据库系统工程的重要性,也能够清晰地认识到在计算机软件行业中技术工程师这个职业所需要的专业素养和必备技能! 背景 通过自研的数据库监控管理工具,发现 SQL Server 数据库连接数在1-2K之间,想…

【git】入门

当我们设计文档时,我们会不断的修改文档,而设计的文档通过第一次修改,第二次修改,很难讲每次修改的版本维护起来,每个版本可以分为v1,v2 ,v3,v4如果需要哪个版本,我们可以直接查看。 随着版本的不断增多&am…

当大语言模型遇到AI绘画-google gemma与stable diffusion webui融合方法-矿卡40hx的AI一体机

你有想过建一台主机,又能AI聊天又能AI绘画,还可以直接把聊天内容直接画出来的机器吗? 当Google最新的大语言模型Gemma碰到stable diffusion webui会怎么样? 首先我们安装stable diffusion webui(automatic1111开源项目&#xff…

群晖NAS配置WebDav结合内网穿透实现公网访问本地影视资源

文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是:1 使用环境要求:2 配置webdav3 测试局域网使用potplayer访问webdav3 内网穿透,映射至公网4 使用固定地址在potplayer访问webdav ​ 国内流媒体平台的内…

贪心算法(算法竞赛、蓝桥杯)--修理牛棚

1、B站视频链接&#xff1a;A27 贪心算法 P1209 [USACO1.3] 修理牛棚_哔哩哔哩_bilibili 题目链接&#xff1a;[USACO1.3] 修理牛棚 Barn Repair - 洛谷 #include <bits/stdc.h> using namespace std; const int N205; int m,s,c,ans; int a[N];//牛的位置标号 int d[N…

opencv--使用直方图找谷底进行确定分割阈值

直方图原理就不说了&#xff0c;大家自行百度 直方图可以帮助分析图像中的灰度变化&#xff0c;进而帮助确定最优二值化的灰度阈值&#xff08;threshold level&#xff09;。如果物体与背景的灰度值对比明显&#xff0c;此时灰度直方图就会包含双峰&#xff08;bimodal histo…

【golang】25、图片操作

用 “github.com/fogleman/gg” 可以画线, 框 用 “github.com/disintegration/imaging” 可以变换颜色 一、渲染 1.1 框和字 import "github.com/fogleman/gg"func DrawRectangles(inPath string, cRects []ColorTextRect, fnImgNameChange FnImgNameChange) (st…

C# 获取类型 Type.GetType()

背景 C#是强类型语言&#xff0c;任何对象都有Type&#xff0c;有时候需要使用Type来进行反射、序列化、筛选等&#xff0c;获取Type有Type.GetType, typeof()&#xff0c;object.GetType() 等方法&#xff0c;本文重点介绍Type.GetType()。 系统类型/本程序集内的类型 对于系…

【k8s配置与存储--配置管理】

1、ConfigMap的配置 1.1 ConfigMap介绍 ConfigMap 是一种 API 对象&#xff0c;用来将非机密性的数据保存到键值对中。使用时&#xff0c; Pod 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。 ConfigMap 将你的环境配置信息和容器镜像解耦&#xff0c;便于应用配…

蓝牙耳机和笔记本电脑配对连接上了,播放设备里没有显示蓝牙耳机这个设备,选不了输出设备

环境&#xff1a; WIN10 杂牌蓝牙耳机6s 问题描述&#xff1a; 蓝牙耳机和笔记本电脑配对连接上了&#xff0c;播放设备里没有显示蓝牙耳机这个设备&#xff0c;选不了输出设备 解决方案&#xff1a; 1.打开设备和打印机&#xff0c;找到这个设备 2.选中这个设备&#…
最新文章