Jenkins + CICD流程一键自动部署Vue前端项目(保姆级)

news2025/4/4 12:16:02

git仓库地址:参考以下代码完成,或者采用自己的代码。

南泽/cicd-test

拉取项目代码到本地

使用云服务器或虚拟机采用docker部署jenkins

安装docker过程省略

采用docker部署jenkins,注意这里的命令,一定要映射docker路径,否则无法找到(ps:已踩坑)

docker run -u root --name jenkins-test -d -p 8899:8080 -p 50000:50000 -v jenkins-data1:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts

容器启动成功后,采用以docker logs 查看登录密码

docker logs -f 容器名 

然后进入登录界面,注意放开防火墙端口,服务器放开安全组

然后选择安装推荐的插件即可

插件安装完成,自行创建一个用户,也可以使用admin账户继续。

实例配置的地址采用默认的即可

进入jenkins找到凭据管理在Manage Jenkins底下

进入仓库后,看到账号和密码配置。然后配置jenkins中的用户名和密码即可。

点击这里配置私人令牌

输入验证密码

将这个token填写到Jenkins配置中。

然后保存并且应用配置,接下来创建自定义风格的item任务

配置git仓库地址,然后选择刚刚创建的凭据。

在这里指定一个node的版本号,其它的不用勾选。会保存后默认选择。

再选择Build steps,再执行以下命令。

注意这里项目里要有dockerfile文件,才能执行。

# 使用基于 CentOS 的 Nginx 镜像
FROM nginx:latest

# 设置环境变量,指定项目编码为 UTF-8
ENV LANG=en_US.UTF-8
ENV LC_ALL=en_US.UTF-8

# 将 Vue 项目的构建产物(假设存放在本地的 dist 目录)拷贝到容器内的 Nginx 静态文件目录
COPY ./dist/ /usr/share/nginx/html

# 移除默认的nginx配置文件
RUN rm /etc/nginx/conf.d/default.conf

# 将本地的 nginx.conf 文件拷贝到容器内的 Nginx 配置目录
COPY ./nginx.conf /etc/nginx/conf.d

# 暴露 Nginx 默认的 8088 端口
EXPOSE 8088

# 启动 Nginx 服务
CMD ["nginx", "-g", "daemon off;"]    

nginx.conf文件在这里给出

	#这里两个环境使用一个nginx.conf文件,也可以单独分开来
    #pro环境
    server {
        #监听的端口
        listen  8088;
        server_name  localhost;
        #设置日志
        #access_log  logs/dev.access.log  main;

        #定位到index.html
           location / {
               #linux下HTML文件夹,就是你的前端项目文件夹
               root  /usr/share/nginx/html;
               # 解决history模式
               try_files $uri $uri/ /index.html;
               #输入网址(server_name:port)后,默认的访问页面
               index  index.html;
           }
    }

然后再选择一个执行shell,并且将这个打包的环境执行成为一个镜像。

具体命令已在此处位置给出。

# 检查容器是否存在
if docker ps -a --format '{{.Names}}' | grep -q "$CONTAINER_NAME"; then
    echo "容器 $CONTAINER_NAME 存在,正在删除..."
    docker rm -f "$CONTAINER_NAME"
    if [ $? -eq 0 ]; then
        echo "容器 $CONTAINER_NAME 删除成功。"
    else
        echo "删除容器 $CONTAINER_NAME 时出错。"
        exit 1
    fi
else
    echo "容器 $CONTAINER_NAME 不存在。"
fi
# 通过镜像构建程序
docker run -d  --name $CONTAINER_NAME -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 -p 8088:8088 test-ui:latest

再次添加执行shell,判断容器是否重复。最后通过docker run重新构建程序。

以上配置完成后,应用保存,然后执行构建即可。

此处大家根据具体的错误来排查即可,最后会执行成功。

然后是配置webhook,也是在刚刚的任务配置中配置。

在这里生成一个webhook的密码。

然后进入gitee管理,配置webhook。

添加webhook,

这里填写的地址就是刚刚jenkins中配置的URL,密码也是刚刚在Jenkins中生成的随机密码。配置完成后点击添加即可。注意这里需要选择对应的事件,Push,

选择推送代码时出发。

然后保存应用即可,最后查看效果。

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

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

相关文章

一款超级好用且开源免费的数据可视化工具——Superset

认识Superset 数字经济、数字化转型、大数据等等依旧是如今火热的领域,数据工作有一个重要的环节就是数据可视化。 看得见的数据才更有价值! 现如今依旧有多数企业号称有多少多少数据,然而如果这些数据只是呆在冷冰冰的数据库或文件内则毫无…

RedHatLinux(2025.3.22)

1、创建/www目录,在/www目录下新建name和https目录,在name和https目录下分别创建一个index.htm1文件,name下面的index.html 文件中包含当前主机的主机名,https目录下的index.htm1文件中包含当前主机的ip地址。 (1&…

【C++篇】类与对象(上篇):从面向过程到面向对象的跨越

💬 欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习! 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对C感兴趣的…

智慧运维平台:赋能未来,开启高效运维新时代

在当今数字化浪潮下,企业IT基础设施、工业设备及智慧城市系统的复杂度与日俱增,传统人工运维方式已难以满足高效、精准、智能的管理需求。停机故障、低效响应、数据孤岛等问题直接影响企业运营效率和成本控制。大型智慧运维平台(AIOps, Smart…

基于大语言模型的智能音乐创作系统——从推荐到生成

一、引言:当AI成为音乐创作伙伴 2023年,一款由大语言模型(LLM)生成的钢琴曲《量子交响曲》在Spotify冲上热搜,引发音乐界震动。传统音乐创作需要数年专业训练,而现代AI技术正在打破这一壁垒。本文提出一种…

Reactive编程:什么是Reactive编程?Reactive编程思想

文章目录 **1. Reactive编程概述****1.1 什么是Reactive编程?****1.1.1 Reactive编程的定义****1.1.2 Reactive编程的历史****1.1.3 Reactive编程的应用场景****1.1.4 Reactive编程的优势** **1.2 Reactive编程的核心思想****1.2.1 响应式(Reactive&…

深度剖析:U盘突然无法访问的数据拯救之道

一、引言 在数字化办公与数据存储日益普及的当下,U盘凭借其小巧便携、即插即用的特性,成为了人们工作、学习和生活中不可或缺的数据存储工具。然而,U盘突然无法访问这一棘手问题却时常困扰着广大用户,它不仅可能导致重要数据的丢失…

蓝桥杯-特殊的三角形(dfs/枚举/前缀和)

思路分析 深度优先搜索(DFS)思路 定义与参数说明 dfs 函数中,last 记录上一条边的长度,用于保证新选边长度大于上一条边,实现三边互不相等 。cnt 记录已选边的数量,当 cnt 达到 3 时,就构成了…

一文详解k8s体系架构知识

0.云原生 1.k8s概念 1. k8s集群的两种管理角色 Master:集群控制节点,负责具体命令的执行过程。master节点通常会占用一股独立的服务器(高可用部署建议用3台服务器),是整个集群的首脑。 Master节点一组关键进程&#xf…

wx162基于springboot+vue+uniapp的在线办公小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

Baklib内容中台的核心优势是什么?

智能化知识管理引擎 Baklib的智能化知识管理引擎通过多源数据整合与智能分类技术,实现企业知识资产的自动化归集与动态更新。系统内置的语义分析算法可自动识别文档主题,结合自然语言处理技术生成结构化标签体系,大幅降低人工标注成本。针对…

【C++】C++11介绍列表初始化右值引用和移动语义

个人主页 : zxctscl 如有转载请先通知 文章目录 1. C11简介2. 统一的列表初始化2.1{}初始化2.2 std::initializer_list 3. 声明3.1 auto3.2 decltype3.3 nullptr 4. 范围for循环4.1 范围for的语法4.2 范围for的使用条件 5. STL中一些变化6. 右…

搜广推校招面经六十一

美团推荐算法 一、ANN算法了解么?说几种你了解的ANN算法 ANN 近似最近邻搜索(Approximate Nearest Neighbor Search)算法 1.1. KD-Tree(K-Dimensional Tree,K 维树) 类型: 空间划分数据结构适用场景: 低…

人工智能与软件工程结合的发展趋势

AI与软件工程的结合正在深刻改变软件开发的流程、工具和方法,其发展方向涵盖了从代码生成到系统维护的整个生命周期。以下是主要的发展方向和技术趋势: 1. 软件架构体系的重构 从“面向过程”到“面向目标”的架构转型: AI驱动软件设计以目标…

nacos 外置mysql数据库操作(docker 环境)

目录 一、外置mysql数据库原因: 二、数据库准备工作 三、构建nacos容器 四、效果展示 一、外置mysql数据库原因: 想知道nacos如何外置mysql数据库之前,我们首先要知道为什么要外置mysql数据库,或者说这样做有什么优点和好处&am…

【数电】半导体存储电路

组合逻辑电路输入和输出之间是确定关系,与之前的历史记录没有任何关系。时序逻辑电路则有相应的存储元件,要把之前的状态保存起来。 要构成时序逻辑电路,必须要有相应的存储元件,第五章讲述相应的存储元件 一、半导体存储电路概…

Jenkins插件安装失败如何解决

问题:安装Jenkins时候出现插件无法安装的情况。 测试环境: 操作系统:Windows11 Jenkins:2.479.3 JDK:17.0.14(21也可以) 解决办法一: 更换当前网络,局域网、移动、联通…

postman测试文件上传接口详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 postman是一个很好的接口测试软件,有时候接口是Get请求方式的,肯定在浏览器都可以测了,不过对于比较规范的RestFul接口&#x…

什么是贴源库

贴源库的定义与核心概念 贴源库(Operational Data Store, ODS)是数据架构中的基础层,通常作为数据仓库或数据中台的第一层,负责从业务系统直接抽取、存储原始数据,并保持与源系统的高度一致性。其核心在于“贴近源头”…

UE5中开启ACES工作流程

首先要开启OCIO插件 OpenColorIO 创建配置 下载ACES https://github.com/colour-science/OpenColorIO-Configs/tree/feature/aces-1.2-config 加载ACES的ocio 选择Srgb 选择ACES 参考链接: https://zhuanlan.zhihu.com/p/534357694 https://www.youtube.com/watch?vBo3Bvh…