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

news2024/11/25 15:30:11

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

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

一、手动部署

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 Vercel

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2
      
    - name: Install dependencies
      run: npm install

    - name: Build project
      run: npm run build

    - name: Deploy to Vercel
      uses: amondnet/vercel-action@v20
      with:
        vercel-token: ${{ secrets.VERCEL_TOKEN }}
        vercel-args: '--prod'
        working-dir: ./build
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

四、总结

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

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

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

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

相关文章

Transformers实战02-BERT预训练模型微调

文章目录 简介BERT的基本原理分词模型输出 BERT预训练的方法BERT模型微调加载数据集DatasetDataLoader 训练模型构建模型tqdm使用训练模型模型预测 简介 BERT(Bidirectional Encoder Representations from Transformers)是一种基于 Transformer 模型的预…

Redis - 优惠卷秒杀

场景分析 为了避免对数据库造成压力,我们在新增优惠卷的时候,可以将优惠卷的信息储存在Redis中,这样用户抢购的时候访问优惠卷信息,通过Redis读取信息。 抢购流程: 业务分析 既然在新增优惠卷的时候,我…

CS 下载安装详解

目录 CS简介: CS下载地址: CS的安装: CS简介: CS为目前渗透中常用的一款工具,它的强大在于控制windows木马,CS主要控制windows木马。 CS下载地址: 链接:https://pan.baidu.com/…

并发编程笔记7--并发编程基础

1、线程简介 1.1、什么是线程 现代操作系统中运行一个程序,会为他创建一个进程。而每一个进程中又可以创建许多个线程。现代操作系统中线程是最小的调度单元。 两者关系:一个线程只属于一个进程,而一个进程可以拥有多个线程。线程是一个轻量…

循环进阶-素数回文数的个数c++

题目描述 计算鸭请你帮忙求1到n之间(包括 n),既是素数又是回文数的整数有多少个。 输入 一个大于1小于1000的整数n。 输出 1到n之间的素数回文数个数。 样例输入 23 样例输出 5 分析 这道题就是怎样判断素数和怎样判断回文数的结合…

clion读取文件设置为读取当前目录下的文件

1.问题 使用vs读取文件时一切正常 但是同样的代码在clion中无法正常执行 原因 原因:clion的源文件找不到input.txt文件的位置 需要设置工作目录,例如此时input.txt在当前目录下,那么就设置 设置当前文件的工作目录为$FileDir$即可&am…

Unity面试八股文之基础篇

文章目录 前言1. Unity的生命周期加载第一个场景Editor在第一次帧更新之前帧之间更新顺序协程销毁对象时退出时 2. Unity 协程和线程,进程的区别3. 本地坐标系 世界坐标系4. 碰撞器和触发器的区别后话 前言 开设这个栏目的博文会写一些有关unity的面试题目,在面试的…

清理mysql binglog文件

mysql随着使用时间的推移,binglog文件会越来越大,比如我们的oa系统,上线4年多了,最近总有磁盘空间满影响系统正常使用的情况出现。检查后发现binglog是罪归祸首。 binglog文件最好不要采用应删除的方式清理,如下方式可…

【数据结构与算法】之堆的应用——堆排序及Top_K问题!

目录 1、堆排序 2、Top_K问题 3、完结散花 个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、堆排序 对一个无序的数组…

使用OpenCV dnn c++加载YOLOv8生成的onnx文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集,使用 LabelMe 工具进行标注,然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件,并自动生成YOLOv8支持的目录结构,包括melon.yaml文件,其内容…

HACL-Net:基于MRI的胎盘植入谱诊断的分层注意力和对比学习网络

文章目录 HACL-Net: Hierarchical Attention and Contrastive Learning Network for MRI-Based Placenta Accreta Spectrum Diagnosis摘要方法实验结果 HACL-Net: Hierarchical Attention and Contrastive Learning Network for MRI-Based Placenta Accreta Spectrum Diagnosis…

世界上首位AI程序员诞生,AI将成为人类的对手吗?

3月13日,世界上第一位AI程序员Devin诞生,不仅能自主学习新技术,自己改Bug,甚至还能训练和微调自己的AI模型,表现已然远超GPT-4等“顶流选手”。 AI的学习速度如此之快,人类的教育能否跟上“机器学习”的速…

2、xss-labs之level2

1、打开页面 2、传入xss代码 payload&#xff1a;<script>alert(xss)</script>&#xff0c;发现返回<script>alert(xss)</script> 3、分析原因 打开f12&#xff0c;没什么发现 看后端源码&#xff0c;在这form表单通过get获取keyword的值赋给$str&am…

《拯救大学生课设不挂科第三期之Windows下安装Dev C++(VC 6.0上位替代)与跑通Hello World程序C/C++版教程》【官方笔记】

背景&#xff1a; 大学老师使用的VC6.0(VC 6.0)太老了&#xff0c;老师为什么用VC6.0&#xff0c;象漂亮认为是高校缺乏鲶鱼刺激。很大一部分高校已经与市场脱节&#xff0c;这也是为什么很多同学毕业后想要入行计算机基本都得自己重新回炉打造一次&#xff0c;这和高校的老旧…

OpenStack平台Keystone组件的使用

1. 规划节点 安装基础服务的服务器规划 IP地址 主机名 节点 192.168.100.10 controller Openstack控制节点 2. 基础准备 使用机电云共享的单节点的openstack系统&#xff0c;自行修改虚拟网络编辑器、网络适配器&#xff0c;系统用户名&#xff1a;root&#xff0c;密…

在Github上寻找安装ROS软件包

1、创建一个功能包 并下载git sudo apt install git 2、找到自己想在github上要克隆的包 复制此链接 3、克隆到本地 git clone 链接 4.scripts目录用于放置脚本文件和python程序 使用脚本安装编译需要的依赖库 5、下载完成后&#xff0c;在~catkin_ws目录下运行catkin_make进…

电脑键盘如何练习盲打?

电脑键盘如何练习盲打&#xff1f;盲打很简单&#xff0c;跟着我做&#xff0c;今天教会你。 请看【图1】&#xff1a; 【图1】中&#xff0c;红色方框就是8个基准键位&#xff0c;打字时我们左右手的8个手指就是放在这8个基准键位上&#xff0c;F键和J键上各有一个小突起&…

FTP协议——BFTPD安装(Linux)

1、简介 BFTPD&#xff0c;全称为 Brutal File Transfer Protocol Daemon&#xff0c;是一个用于Unix和类Unix系统的轻量级FTP服务器软件。它的设计理念是提供一个简单、快速、安全的FTP服务器解决方案&#xff0c;特别适用于需要低资源占用的环境。 2、步骤 环境&#xff1…

网络爬虫原理及其应用

你是否想知道Google 和 Bing 等搜索引擎如何收集搜索结果中显示的所有数据。这是因为搜索引擎对其档案中的所有页面建立索引&#xff0c;以便它们可以根据查询返回最相关的结果。网络爬虫使搜索引擎能够处理这个过程。 本文重点介绍了网络爬虫的重要方面、网络爬虫为何重要、其…

卷积神经网络CNN动态演示和输出特征图计算公式

目录 一、卷积运算 1、卷积&#xff08;Convolution&#xff09; 2、填充&#xff08;Padding&#xff09; &#xff08;1&#xff09;Valid Padding &#xff08;2&#xff09;Same Padding 3、步长 4、卷积核大小为什么一般为奇数奇数&#xff1f; 5、卷积核kernel和…