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

news2024/11/19 1:23:18

文章目录

    • 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.coloradmin.cn/o/1478859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI、AIGC、AGI、ChatGPT它们的区别?

今天咱们聊点热门话题,来点科普时间——AI、AIGC、AGI和ChatGPT到底是啥?这几个词听起来好像挺神秘的,但其实它们就在我们生活中。让我们一起探索这些术语的奥秘! AI(人工智能):先说说AI&#…

spring security oauth2 之GitHub应用注册

前言: 要想使用spring security oauth2 来实现GitHub授权登录,就必须先要有一个GitHub的应用。如果使用gitee也是同理。本文介绍如果注册GitHub应用。 step1:进入到注册应用的页面 注册地址:Sign in to GitHub GitHub step2:填写信息 图中…

MFC教程 -- Windows界面开发

MFC教程 -- Windows界面开发 Windows消息机制 初步认识MFC 要想熟练掌握 Windows 应用程序的开发, 首先需要理解 Windows 平台下程序运行的内部机制。如果想要更好的学习掌握 MFC,必须要先了解Windows 程序的内部运行机制,为我们扫清学习路…

中间件-Nginx加固(控制超时时间限制客户端下载速度并发连接数)

中间件-Nginx加固(控制超时时间&限制客户端下载速度&并发连接数) 1.1 Nginx 控制超时时间配置1.2 Nginx 限制客户端下载速度&并发连接数 💖The Begin💖点点关注,收藏不迷路💖 1.1 Nginx 控制超…

Ubuntu整系统迁移到另一个硬盘中

以ubuntu20.04为例,之前使用的是1T的移动硬盘,每次进入后性能不太稳定,所以最近买了块1T的固态硬盘给我的笔记本装上了,但是如果重新进行各种软件安装及环境配置就太麻烦了,所以采用了系统迁移 1.首先制作一个Ubuntu系…

[Android View] 可绘制形状 (Shape Xml)

一切以官方文档为主 官方文档https://developer.android.com/guide/topics/resources/drawable-resource?hlzh-cn#Shape 什么是可绘制形状 可以理解为用xml文件来描述一个简单的Drawable图形&#xff0c;比如说以下这段xml就可以用来描述一个白色的圆形&#xff1a; <?…

蓝桥杯:真题讲解3(C++版)附带解析

报纸页数 来自&#xff1a;2016年七届省赛大学C组真题&#xff08;共8道题) 分析&#xff1a; --画出报纸长的样子&#xff0c;如果我们在上面多画一张报纸&#xff0c;那么就符合题意的5&#xff0c;6&#xff0c;11&#xff0c;12。 观察这张图&#xff1a;观察3&#xf…

Google大模型Bard更名Gemini,现在实力如何?(VS gpt系列)

名人说&#xff1a;一花独放不是春&#xff0c;百花齐放花满园。——《增广贤文》 作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、简要介绍1、Gemini是什么&#xff1f;2、主要特点3、Gemini的版本4、应用潜力5、…

【Pytorch深度学习开发实践学习】【AlexNet】经典算法复现-Pytorch实现AlexNet神经网络(1)model.py

算法简介 AlexNet是人工智能深度学习在CV领域的开山之作&#xff0c;是最先把深度卷积神经网络应用于图像分类领域的研究成果&#xff0c;对后面的诸多研究起到了巨大的引领作用&#xff0c;因此有必要学习这个算法并能够实现它。 主要的创新点在于&#xff1a; 首次使用GPU…

PyTorch-Ignite的介绍与快速上手

PyTorch-Ignite 是一个用于 PyTorch 的高级库&#xff0c;旨在帮助开发者更快、更简洁地编写可复用的代码来进行深度学习实验。它由 PyTorch 社区开发&#xff0c;提供了一套灵活的抽象&#xff0c;用于构建和管理训练和验证循环&#xff0c;而无需牺牲 PyTorch 的灵活性和强大…

四、《任务列表案例》后端程序实现和测试

本章概要 准备工作功能实现前后联调 4.1 准备工作 数据库脚本 CREATE TABLE schedule (id INT NOT NULL AUTO_INCREMENT,title VARCHAR(255) NOT NULL,completed BOOLEAN NOT NULL,PRIMARY KEY (id) );INSERT INTO schedule (title, completed) VALUES(学习java, true),(学…

电力运维是做什么的?电力行业智能运维工作内容?

电力行业智能运维工作内容具体涉及哪些关键任务&#xff1f;实施智能运维过程中&#xff0c;如何利用现代信息技术、人工智能和大数据分析来提升电力系统的运行效率与维护响应速度?在电力行业中引入智能运维后&#xff0c;对于预防性维护、故障诊断、设备寿命预测以及成本控制…

react native中如何实现tab切换页面以及页面可以左右滑动效果

react native中如何实现tab切换页面以及页面可以左右滑动效果 效果示例图主体代码 效果示例图 主体代码 import React, {useRef, useState} from react; import {View,ScrollView,Text,StyleSheet,Dimensions,Animated, } from react-native; import {pxToPd} from ../../comm…

Linux系统——LAMP架构

目录 一、LAMP架构组成 1.LAMP定义 2.各组件的主要作用 3.CGI和FastCGI 3.1CGI 3.3CGI和FastCGI比较 4.PHP 4.1PHP简介 4.2PHP的Opcode语言 4.3PHP设置 二、LAMP架构实现 1.编译安装Apache httpd服务 2.编译安装Mysql 3.编译安装PHP 4.安装论坛 5.搭建博客 W…

力扣区间题:合并区间、插入区间

我们可以将区间按照左端点升序排列&#xff0c;然后遍历区间进行合并操作。 我们先将第一个区间加入答案&#xff0c;然后依次考虑之后的每个区间&#xff1a; 如果答案数组中最后一个区间的右端点小于当前考虑区间的左端点&#xff0c;说明两个区间不会重合&#xff0c;因此…

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

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

【基于ChatGPT大模型】GIS应用、数据清洗、统计分析、论文助手、项目基金助手、科研绘图、AI绘图

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

Google Genie:创意互动环境

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

渗透测试靶场环境搭建

1.DVWA靶场 DVWA&#xff08;Damn Vulnerable Web Application&#xff09;是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用&#xff0c;包含了OWASP TOP10的所有攻击漏洞的练习环境&#xff0c;旨在为安全专业人员测试自己的专业技能和工具提供合法的环境&#xff0c;同时…

完美解决git 执行git push origin master指令 报错command not found

问题描述 报错信息为&#xff1a;在提交项目时的操作&#xff1a;找不到命令行 解决方案 &#xff08;1&#xff09;可以通过如下命令进行代码合并【注&#xff1a;pullfetchmerge】 git pull --rebase origin master&#xff08;2&#xff09;再执行语句&#xff1a; git p…