【前端】从手动部署到自动部署:前端项目进化之路

从手动部署到自动部署:前端项目进化之路

在前端开发的领域内,部署是一个不可忽视的环节。随着项目复杂度的增加和线上更新频率的提升,手动部署逐渐暴露出它的弊端。本文将带你从手动部署过渡到自动部署,完成前端项目进化的重要一步。
在这里插入图片描述

一、手动部署

1. 初始阶段:手动部署的简述

在早期阶段,前端项目往往并不复杂,手动部署是直接且可行的方法。部署步骤如下:

  1. 编写代码。
  2. 测试并确认无误。
  3. 打包项目,例如,使用Webpack打包命令:
    npm run build
    
  4. 将打包后的文件通过FTP或其他方式上传至服务器。
  5. 在服务器上配置Nginx或Apache来提供静态文件服务。

2. 手动部署的弊端

手动部署虽然简单直接,但随着项目的复杂和团队的扩大,它的弊端也显现出来:

  • 容易出现人为错误,例如文件漏传等。
  • 更新效率低。
  • 无法快速回滚到之前的版本。
  • 部署过程缺乏一致性,容易导致环境不一致问题。

理解了你的反馈。下面我将更详细地介绍自动部署的工作原理。

二、迈向自动化:自动部署的工作原理

自动部署(自动化部署)是现代开发中的一项重要技术,它通过CI/CD(持续集成和持续部署)流水线,将代码自动发布到生产环境,减少人为干预,显著提高了部署的可靠性和效率。

1. 什么是CI/CD?

持续集成(Continuous Integration - CI)

持续集成是一种软件开发实践,开发者常常、多次地将代码集成到共享代码库中。每次集成后,都会自动进行构建和测试,以尽早发现错误,提高软件质量和开发效率。

持续部署(Continuous Deployment - CD)

持续部署是在持续集成的基础上,将代码自动部署到生产环境。每次代码变更,经过自动化测试,通过后会立即部署到生产环境,以确保最新的代码随时能够提供给用户。

2. 自动部署的核心组件

自动部署系统通常由以下几个核心组件构成:

源码管理系统(SCM)

例如GitHub、GitLab等,用于源代码的管理。开发者将代码推送到这个系统后,触发自动部署流程。

CI/CD 工具

如Jenkins、GitHub Actions、GitLab CI等。这些工具帮助我们自动管理从代码提交到生产部署的各个环节。

构建工具

如Webpack、Parcel,它们将源代码打包成可供部署的静态文件。

部署目标

例如Vercel、Netlify、AWS S3等,用于实际托管和运行前端应用的服务器或服务。

3. 自动部署的工作流程

步骤1:代码提交

开发人员将最新的代码提交到源码管理系统。例如,在Git工作流中,代码通常推送到主分支或特定的功能分支。

步骤2:触发构建

源码管理系统检测到代码变更后,会通知CI/CD工具。CI/CD工具拉取最新的代码,并开始构建流程。

步骤3:自动化测试

在构建过程中,CI/CD工具会运行预定义的自动化测试(单元测试、集成测试等)。如果测试失败,构建过程会中止,并通知相关人员进行修复。

步骤4:打包

测试通过后,CI/CD工具使用构建工具(如Webpack)将项目打包生成静态文件。

步骤5:部署

打包完成后,CI/CD工具会将生成的静态文件上传到指定的部署目标。此步骤可以包括上传到托管服务器、配置CDN、更新缓存等操作。

步骤6:验证和监控

在完成部署后,CI/CD工具可以执行额外的验证步骤,如健康检查、性能测试等。监控系统会持续监控应用的运行状态,以确保没有部署过程中产生的问题。

4. 自动部署的优势

提升效率

自动部署能够实现代码变更后的即时发布,大幅缩短了上线时间,提高了开发和运维效率。

降低错误率

通过自动化测试和标准化部署流程,自动部署减少了人工操作带来的失误,保证了部署的一致性和可靠性。

快速回滚

一旦发现问题,自动部署系统能够快速回滚到之前的稳定版本,减少故障对业务的影响。

增强协作

自动部署使得团队成员可以更紧密地协作,每个人都能迅速看到他们对项目的贡献如何影响整体系统。

通过CI/CD工具和自动化部署,我们能够持续集成和部署代码,从而显著提升开发效率和产品质量。这不仅是一种技术升级,更是开发流程的一次深刻变革。下面我们详细介绍如何在前端项目中具体实现这一过程。

三、实现自动部署的详细步骤

以一个使用GitHub、Jenkins、和Vercel的前端项目为例,详细介绍自动部署的流程。

1. 准备工作

  • 一个GitHub仓库
  • 服务器(需要安装Jenkins)
  • Vercel账号

2. 配置GitHub仓库

确保你的项目已上传至GitHub,且仓库设置正确。

3. 在服务器上安装Jenkins

  1. 更新软件包列表并安装Jenkins:

    sudo apt update
    sudo apt install openjdk-11-jdk
    wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
    sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
    sudo apt update
    sudo apt install jenkins
    
  2. 启动Jenkins并配置防火墙:

    sudo systemctl start jenkins
    sudo ufw allow 8080
    
  3. 通过浏览器访问Jenkins,初次访问需要输入管理员密码(通过下面命令获取):

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
    
  4. 按照页面提示完成初始设置和插件安装。

4. 配置Jenkins任务

  1. 新建一个Freestyle项目。
  2. 在“源码管理”选项中选择“Git”,填入你的GitHub仓库地址。
  3. 在“构建触发”选项中选择合适的触发条件,例如“GitHub hook trigger for GITScm polling”。
  4. 在“构建”选项卡中,添加一个Execute Shell构建步骤,填入以下打包命令:
    npm install
    npm run build
    
  5. 选择“构建后操作”中的“Send build artifacts over SSH”,配置你的服务器信息,将打包后的文件上传到服务器。

5. 配置Vercel进行自动化部署

  1. 登录Vercel,创建一个新项目并连接到GitHub仓库。

  2. 配置Vercel项目,指定打包命令和输出目录。例如:

    • Build Command: npm run build
    • Output Directory: build
  3. 保存配置后,每当你将代码推送到GitHub仓库时,Vercel会自动执行打包和部署。

6. 集成持续集成工具(可选)

除了Jenkins,还可以使用其他CI工具如GitHub Actions、GitLab CI等来实现持续集成。配置流程类似,主要是通过配置文件指定构建和部署步骤。

例如,GitHub Actions配置文件(.github/workflows/deploy.yml)示例:

name: Deploy to Vercelon:push:branches:- mainjobs:build:runs-on: ubuntu-lateststeps:- name: Checkout repositoryuses: actions/checkout@v2- name: Install dependenciesrun: npm install- name: Build projectrun: npm run build- name: Deploy to Verceluses: amondnet/vercel-action@v20with:vercel-token: ${{ secrets.VERCEL_TOKEN }}vercel-args: '--prod'working-dir: ./buildenv:GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

四、总结

从手动部署到自动部署的过渡,不仅是技术的提升,更是效率和稳定性的保障。通过CI/CD工具,前端团队可以极大地降低部署风险、提高响应速度,真正实现敏捷开发与快速迭代。

希望通过本文的介绍,你能够顺利将你的前端项目从手动部署迁移到自动部署,迎接更加高效、稳定的开发体验。

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

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

相关文章

【笔记】软件架构师要点记录(1)

【笔记】软件架构师要点记录 20240517 20240517 连续性:恢复能力;可用性:保持稳定态的时长 增量开发模式:在增量开发中,每个增量都有明确的范围和功能,并按照特定的功能顺序完成。增量之间的范围划分在开发…

【C++】牛客——OR64 求和

✨题目链接: OR64 求和 ✨题目描述 输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来 ✨输入描述: 每个测试输入包含2个整数,n和m ✨输出描述: 按每个组合的字典序排列…

作业-day-240523

思维导图 知识点问答 1、IO多路复用的原理 1、创建一个检测文件描述符的容器 fd_set fds; 2、将需要检测的文件描述符放入容器中 FD_SET(文件描述符,&fds); 3、通过一个阻塞函数阻塞等待容器中是否有事件产生,如果有一个或多个事件产生&#xff0c…

由于找不到mfc140u.dll怎么办,介绍5种靠谱有效的解决方法

当您的电脑显示“mfc140u.dll丢失”的错误时,通常是因为系统中缺少了某个必要的动态链接库文件。这个问题可能会导致某些应用程序无法正常运行,给用户带来困扰。下面我将详细介绍解决该问题的五种方法。 一,关于mfc140u.dll文件的概述 mfc14…

OneAPI接入本地大模型+FastGPT调用本地大模型

将Ollama下载的本地大模型配置到OneAPI中,并通过FastGPT调用本地大模型完成对话。 OneAPI配置 新建令牌 新建渠道 FastGPT配置 配置docker-compose 配置令牌和OneAPI部署地址 配置config.json 配置调用的渠道名称和大模型名称 {"systemEnv": {&qu…

一文带你了解所有常用排序算法

目录 快速排序 堆排序 桶排序 归并排序 拓扑排序 本文主要介绍那些我在刷题过程中常用到的排序算法: 快速排序,堆排序,桶排序,归并排序,拓扑排序 其余算法例如冒泡,插入这种效率特别低的算法就不介绍了,用的可能性极小 每一个算法都将采用例题加解释的方式进行介绍 快速…

行业首发 | MS08067-SecGPT(送邀请码)

一、简介 MS08067-SecGPT基于LLM大模型技术专门为网络安全领域设计的智能助手,集问答、分析、工具为一体的对话式安全专家,支持可以创建多会话问答。目的是辅助用户完成网络安全相关的工作,学员通过问答方式体验到SecGPT所具备的威胁情报分…

flume使用实例

1、监听端口a1.sources.r1.type netcat 配置文件nc-flume-console.conf # Name the components on this agent a1 表示jvm进程名 a1.sources r1 a1.sinks k1 a1.channels c1 # Describe/configure the source a1.sources.r1.type netcat a1.sources.r1.bind node…

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION--论文笔记

论文笔记 论文来源 Very Deep Convolutional Networks for Large-Scale Image Recognition 代码来源 还没上传 数据集 这里采用的是猫狗数据集 还没上传 1论文摘要的翻译 在这项工作中,我们研究了卷积网络深度对其在大规模图像识别设置中的准确性的影响。我…

防火墙技术基础篇:解析入侵检测与预防系统(IDPS)功能

防火墙技术基础篇:解析入侵检测与预防系统(IDPS)功能 入侵检测与预防系统(Intrusion Detection and Prevention Systems, IDPS)作为防火墙技术的核心组成部分,扮演着保护网络安全的关键角色。本文将全面讲…

OSPF状态机及网络接口类型

、OSPF 状态机 Down一旦接收到hello 包进人下一个状态机 Init 初始化接收到的hello 包中,若存在本地的 RID,进入下一状态 2way 双向通讯--邻居关系建立的标志 条件匹配:点到点网络直接进入下一个状态机 MA 网络将进行 DR/BDR 选举(40S) 非 DR…

哪个网盘最适合个人文件长期储存?用派盘最好

派盘是一款面向个人和企业的本地云存储解决方案,专为长期文件存储而设计。这种存储方式利用了本地硬盘的存储容量,通过“云化”的方式,可以将本地硬盘变成云存储空间。它具有强大的数据保护功能,确保了数据的私密性和安全性。 派盘的主要特点 高效的存取速度:由于使用本地…

这种电脑原来这么耗电……震惊了粉丝小姐姐

前言 在今年1月份的时候,一位来自重庆的小姐姐加了小白,咨询电脑的问题: 哦豁,这个电脑看着确实闪闪发光,是真的很漂亮~(嗯,小姐姐也很漂亮) 电脑无法开机,按…

什么是流量削峰?如何解决秒杀等业务的削峰场景

文章推荐 1 作为程序员,开发用过最好用的AI工具有哪些? 2 Github Copilot正版的激活成功,终于可以chat了 3 idea,pycharm等的ai assistant已成功激活 4 新手如何拿捏 Github Copilot AI助手,帮助你提高写代码效率 5 Jetbrains的a…

数字驱动,教育先行——低代码揭秘教育机构管理数字化转型

数字化时代为教育带来了许多变革和挑战,同时也为教育创新提供了无限可能。数字化转型可以帮助教育机构应对这些变革和挑战,提高教育效率和质量,满足学生个性化需求,优化教育管理和服务,并提高教育机构的竞争力。 并且…

docker 安装 yapi

文章目录 docker 安装 yapi一、拉取镜像二、创建目录三、添加配置文件四、初始化数据库表五、启动 yapi六、测试以及修改默认密码 没有 MongDB 的可以先看这个教程:MongDB安装教程 docker 安装 yapi 版本: 1.9.5 一、拉取镜像 docker pull yapipro/y…

以及Spring中为什么会出现IOC容器?@Autowired和@Resource注解?

以及Spring中为什么会出现IOC容器?Autowired和Resource注解? IOC容器发展史 没有IOC容器之前 首先说一下在Spring之前,我们的程序里面是没有IOC容器的,这个时候我们如果想要得到一个事先已经定义的对象该怎么得到呢?…

131. 面试中关于架构设计都需要了解哪些内容?

文章目录 一、社区系统架构组件概览1. 系统拆分2. CDN、Nginx静态缓存、JVM本地缓存3. Redis缓存4. MQ5. 分库分表6. 读写分离7. ElasticSearch 二、商城系统-亿级商品如何存储三、对账系统-分布式事务一致性四、统计系统-海量计数六、系统设计 - 微软1、需求收集2、顶层设计3、…

【Django】从零开始学Django(持续更新中)

PyCharm的版本必须为专业版,社区版不具备Web开发功能的。 一. Django建站基础 Django采用MTV的框架模式,即模型(Model)、模板(Template)和视图(Views),三者之间各自负责不同的职责。 ●模型:数据存取层,处理与数据相关…

信号:MSK调制和GMSK调制

目录 一、MSK信号 1. MSK信号的第k个码元 2.MSK信号的频率间隔 3.MSK信号的相位连续性 3.1 相位路径 3.2初始相位ψk 4.MSK信号的产生 原理框图 5.MSK信号的频谱图 二、高斯最小频移键控(GMSK) 1.频率响应 2.GMSK调制产生方式 2.1 高斯滤波器法 2.2 正交调制器法…