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

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.htmllocation / {#linux下HTML文件夹,就是你的前端项目文件夹root  /usr/share/nginx/html;# 解决history模式try_files $uri $uri/ /index.html;#输入网址(server_name:port)后,默认的访问页面index  index.html;}}

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

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

CONTAINER_NAME="test-ui"
# 检查容器是否存在
if docker ps -a --format '{{.Names}}' | grep -q "$CONTAINER_NAME"; thenecho "容器 $CONTAINER_NAME 存在,正在删除..."docker rm -f "$CONTAINER_NAME"if [ $? -eq 0 ]; thenecho "容器 $CONTAINER_NAME 删除成功。"elseecho "删除容器 $CONTAINER_NAME 时出错。"exit 1fi
elseecho "容器 $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.mzph.cn/web/74335.shtml

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

相关文章

使用 libevent 处理 TCP 粘包问题(基于 Content-Length 或双 \r\n)

在基于 libevent 的 TCP 服务器开发中,处理消息边界是常见需求。以下是两种主流分包方案的完整实现: 一、基于 Content-Length 的分包方案 1.1 数据结构设计 typedef struct {struct bufferevent *bev;int content_length; // 当前消息的预期长度int received_bytes; //…

酶动力学预测工具CataPro安装教程

简介:预测酶动力学参数是酶发现和酶工程中的一项重要任务。在此,研究人员基于蛋白质语言模型、小分子语言模型和分子指纹,提出了一种名为 CataPro 的新酶动力学参数预测算法。该研究从 BRENDA 和 SABIO-RK 数据库中收集了最新的转化率&#x…

项目实战:基于Spring WebFlux与LangChain4j实现大语言模型流式输出

一、背景 在大语言模型(LLM)应用场景中,GPT-4等模型的响应生成往往需要数秒至数十秒的等待时间。传统同步请求会导致用户面对空白页面等待,体验较差。本文通过Spring WebFlux响应式编程与SSE服务器推送技术,实现类似打…

Go语言入门经典:数组与切片详解

Go语言入门经典:数组与切片详解 数组和切片是Go语言中两种重要的数据结构。数组是一种固定长度的集合,而切片则是一种灵活的动态集合。本章将详细讲解数组和切片的定义、初始化、访问元素、动态操作等内容,帮助读者全面掌握这两种数据结构。…

uniapp中如何用iconfont来管理图标集成到我们开发的项目中

我们在开发不管小程序还是APP的过程中都会用到图标这个东西,那么iconfont提供了对应的功能,怎么才能方便的集成到我们的小程序或者APP项目中,目标是方便调用并且方便管理。 首先注册ICONFONT账号 www.iconfont.cn中去注册即可选择我们需要的图标如下 我们搜索我们需要的图…

从实用的角度聊聊Linux下文本编辑器VIM

本文从实用的角度聊聊Vim的常用命令。何为实用?我举个不实用的例子大家就明白了,用vim写代码。;) “vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成…

优化程序命名:提升专业感与用户体验

在软件开发的广阔天地中,程序命名这一环节常常被开发者们忽视。不少程序沿用着简单直白、缺乏雕琢的名字,如同素面朝天的璞玉,虽不影响其核心功能的发挥,但却在无形之中错失了许多提升用户印象与拓展应用场景的机会。今天&#xf…

LeetCode BFS解决最短路问题

广度优先搜索(BFS, Breadth-First Search)是一种用于图和树结构的遍历算法,特别适合解决无权图的最短路径问题。 算法思想: BFS从起始节点开始,按照"广度优先"的原则,逐层向外扩展搜索: 先访问起始节点的…

[物联网iot]对比WIFI、MQTT、TCP、UDP通信协议

第一步:先理解最基础的关系(类比快递) 假设你要给朋友寄快递: Wi-Fi:相当于“公路和卡车”,负责把包裹从你家运到快递站。 TCP/UDP:相当于“快递公司的运输规则”。 TCP:顺丰快递&…

基于python的电影数据分析及可视化系统

一、项目背景 随着电影行业的快速发展,电影数据日益丰富,如何有效地分析和可视化这些数据成为行业内的一个重要课题。本系统旨在利用Python编程语言,结合数据分析与可视化技术,为电影行业从业者、研究者及爱好者提供一个便捷的电…

Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)

Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8) 系列目录 Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)Java 8 到 Java 21 系列之 Stream API:数据处理的…

②EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

型号 协议转换通信网关 EtherCAT 转 Modbus TCP 配置说明 网线连接电脑到模块上的 WEB 网页设置网口,电脑所连网口的网段设置成 192.168.1.X(X 是除 8 外的任一数值)后,打开浏览器,地址栏输入 192.168.1.8 &#xff…

机器视觉--python基础语法

Python基础语法 1. Python标识符 在 Python 里,标识符由字母、数字、下划线组成。 在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。 Python 中的标识符是区分大小写的。 以下划线开头的标识符是有特殊意义的…

算法日常记录

1. 链表 1.1 删除链表的倒数第 N 个结点 问题描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 思路:先让fast跑n步,然后…

14使用按钮实现helloworld(1)

目录 还可以通过按钮的方式来创建 hello world 涉及Qt 中的信号槽机制本质就是给按钮的点击操作,关联上一个处理函数当用户点击的时候 就会执行这个处理函数 connect(谁发的信号, 信号类型, 谁来处理这个信息, 怎么处理的&…

【Golang】泛型与类型约束

文章目录 一、环境二、没有泛型的Go三、泛型的优点四、理解泛型(一)泛型函数(Generic function)1)定义2)调用 (二)类型约束(Type constraint)1)接…

k8s常用总结

1. Kubernetes 架构概览 主节点(Master): 负责集群管理,包括 API Server、Controller Manager、Scheduler 和 etcd 存储。 工作节点(Node): 运行 Pod 和容器,包含 kubelet、kube-pr…

Android 单例模式全解析:从基础实现到最佳实践

单例模式(Singleton Pattern)是软件开发中常用的设计模式,其核心是确保一个类在全局范围内只有一个实例,并提供全局访问点。在 Android 开发中,单例模式常用于管理全局资源(如网络管理器、数据库助手、配置…

ffmpeg滤镜使用

ffmpeg实现画中画效果 FFmpeg中,可以通过overlay将多个视频流、多个多媒体采集设备、多个视频文件合并到一个界面中,生成画中画的效果 FFmpeg 滤镜 overlay 基本参数 x和y x坐标和Y坐标 eof action 遇到 eof表示时的处理方式,默认为重复。…

OpenAI即将开源!DeepSeek“逼宫”下,AI争夺战将走向何方?

OpenAI 终于要 Open 了。 北京时间 4 月 1 日凌晨,OpenAI 正式宣布:将在未来几个月内开源一款具备推理能力的语言模型,并开放训练权重参数。这是自 2019 年 GPT-2 部分开源以来,OpenAI 首次向公众开放核心模型技术。 【图片来源于…