实现前端项目自动构建和部署(Gitee Go)

前言

相信所有的前端开发者都希望将自己的代码部署在服务器上让所有人都能访问到,但是却不知道如何进行部署。其实要是实现代码上线非常简单,我们只需要将build之后的代码上传到服务器,然后通过Nginx起一个服务指向我们build后的代码就可以了。但是这种方式非常不优雅,我们每次开发一个内容都需要手动上传,这显然不是一个优秀开发者该有的样子。

所以接下来我会教大家使用Gitee GO + Nginx从零到一实现项目上线,并且后续构建和部署的环节完全自动化。我们真正的做到了只需要开发。废话不多说我们开始吧。

这里默认大家都已经拥有了一台nodejs镜像的腾讯云服务器,如果没有可以点击前往购买

一:新建项目

我们首先使用vite新建一个前端项目用来测试部署,随便找一个目录输入以下命令:

npm create vite@latest test-ci -- --template react-ts  # 没有vite需要自己本地装一个
cd test-ci
npm install
npm run dev

这样我们就建好了一个前端项目,已经可以在本地看到运行效果了。

image-20240704145747387

二:绑定gitee仓库

  1. 新建一个空白仓库
image-20240704144646786
  1. 按照仓库所给提示将我们的本地代码和远程仓库建立关联,在项目根目录下执行以下命令

    git init
    git add .
    git commit -m "first commit"
    git remote add origin `替换为你的仓库地址`
    git push -u origin "master"
    

三:配置项目流水线

Gitee Go Gitee 全新推出的一款CI/CD工具,提供持续集成、持续交付(部署)能力。我们可以通过配置Gitee Go来实现代码的自动构建和部署,省时省心。具体操作如下

  1. 点击仓库流水线功能并开通。
image-20240704150123092
  1. 选择node语言并点击不创建
image-20240704150451547
  1. 配置流水线的触发规则,也就是流水线在什么时候会执行,我们这里可以选择pushmaster分支时执行流水线。

    image-20240704150619281
  2. 配置流水线执行任务。这一步也是最关键的,我们的构建和部署都是在一个过程执行

    • 首先新建一个构建任务,我们选择nodejs构建。
    image-20240704150834304
    • 选择node,编写构建命令。后面流水线执行的时候执行的就是我们编写的对应构建命令
    image-20240704151054483
  3. 新建一个任务,选择主机部署。也就是将我们的产物要推送到哪个服务器上去。

    image-20240704151308480

    第一次肯定是没有主机的,我们选择添加主机。按照所给提示一步步创建即可。

    image-20240704151521234 image-20240704151552973

    要注意的是我们一定要将我们的仓库添加到仓库作用域中去。操作系统选择云服务器的操作系统即可。

    image-20240704151654250

    选择添加主机,然后选择通过命令行逐台添加。将对应的命令复制到我们的浏览器中运行。

    image-20240704151930079

    安装成功后就可以在Gitee看到我们对应的服务器了

    image-20240704152015995
  4. 回到流水线页面,选择我们刚刚新建的主机组。

    image-20240704152101081
  5. 然后我们可以按需更改我们的部署脚本。要注意这个路径非常重要,后续我们的nginx配置依赖于这个路径。

    image-20240704152411104

    脚本内容如下:

    mkdir -p /home/admin/test-ci # 新建目录
    rm -rf /home/admin/test-ci/*
    tar zxvf ~/gitee_go/deploy/output.tar.gz -C /home/admin/test-ci # 解压内容
    chmod -R 777 /home/admin/test-ci # 设置目录访问权限,防止nginx访问403
    # git clone ***@***.git
    echo 'Hello Gitee Go!'
    
  6. 配置完成后点击保存,可以看到流水线已经开始执行了,等执行完之后我们可以登陆服务器查看/home/admin/test-ci目录下是不是有构建后的dist代码即可。

四:服务器配置Nginx

  1. 进入到Nginx配置目录,Node轻量应用服务器目录位于/usr/local/lighthouse/softwares/nginx/conf/include

  2. inlude内新建一个nginx配置

    touch test-ci.conf
    vim test-ci.conf
    

    将以下内容粘贴进去。注意root就是我们在部署上面配置的路径

    server {
    	listen 80;
    	server_name  localhost;
      server_tokens off;
    
    	keepalive_timeout 5;
    
        location / {
          root /home/admin/test-ci/dist;
          index  index.html;
          try_files $uri $uri/ /index.html;
          autoindex on;
          gzip on;
          add_header Access-Control-Allow-Origin '*';
          add_header Access-Control-Allow-Methods 'GET, POST, PUT, OPTIONS';
        }
    
        access_log logs/app.log combinediox;
        error_log logs/app.error.log;
    
        location /50x.html {
            root /usr/local/lighthouse/softwares/nginx/html;
            index 50x.html;
        }
    }
    
  3. 重启Nginx

    /usr/local/lighthouse/softwares/nginx/sbin/nginx -s reload
    

做完上述步骤之后我们访问服务器的公网ip就已经可以看到我们的项目内容了。现在就已经实现将本地代码部署到服务器上,并且当我们每次进行push操作之后都会进行流水线的运行(构建和部署),我们线上的代码也会同步更新。真正的实现了我们只用关注开发,而不用关心部署了。

五:总结

以上就是如何利用Gitee GO实现代码自动构建和部署的全部内容了,相信大家看完之后对一个项目如何部署上线有了更深刻的认识。自己以后开发的项目也能够轻松上线了。

最后打个广告,我新开了个公众号,旨在将自己日常学习的内容进行沉淀。这个公众号会经常更新前端相关的技术文章,还请大家多多支持,点点关注💗。

image-20240703162104337

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解析MySQL核心技术:视图的实用指南与实践案例

在数据库管理中,MySQL视图(View)是一种强大的功能,利用它可以简化复杂查询、提高数据安全性以及增强代码的可维护性。本篇文章将详细介绍MySQL视图的相关知识,包括视图的创建、修改、删除、使用场景以及常见的最佳实践…

WAIC热点聚焦|具身智能简介:AI新浪潮的领跑者

WAIC热点聚焦|具身智能简介:AI新浪潮的领跑者 引言 随着"具身智能"(Embodied Intelligence)的火热讨论,2024年标志着人机交互新时代的开启。在大模型技术的推动下,机器人响应语音指令成为现实,…

如何自动筛选螺丝不良品?

四角螺丝是一种特殊设计的螺丝,其螺纹头部呈四个平行的角状结构,与传统的六角螺丝相比具有独特的外观和功能。这种设计使得四角螺丝在安装和拆卸时更容易使用,并提供了更好的扭矩传递效率。四角螺丝头部呈现四个平行的角,与常见的…

系统级应用锁的实现方法

前言: 应用锁是一种常见的需求, 下面提供一个个人认为还比较完美的解决方法。本篇从两个方面详述应用锁的实现方法。 一. 流程图 二. 实现细节 一.流程图 二. 实现效果及细节

RocketMQ复杂过滤尝试

需求 消息实体,根据实体中的一个字段,决定推给多个业务系统。 例:一个点位信息Bean,这个点位信息,设备、能源、安全都有用,那么点位信息表中有适用模块标识。 点位新增 需要通知所有勾选业务系统 tag -…

摄像机反求跟踪软件/插件 Mocha Pro 2024 v11.0.2 CE Win

AE/PR/OFX/达芬奇/AVX插件 | 摄像机反求跟踪软件Mocha Pro 2024 v11.0.2 CE Win-PR模板网 Mocha Pro 软件(插件),用于平面运动跟踪、3D跟踪、动态观察、对象移除、图像稳定和PowerMesh有机扭曲跟踪等功能。整合了SynthEyes核心的3D跟踪算法,能够快速自动…

Pluck-CMS-Pluck-4.7.16 远程代码执行漏洞(CVE-2022-26965)

前言 CVE-2022-26965 是一个影响 Pluck CMS 4.7.16 版本的远程代码执行(RCE)漏洞。该漏洞允许经过身份验证的用户通过 /admin.php?actionthemeinstall 的主题上传功能执行任意代码。 漏洞细节 在 Pluck CMS 的管理界面中,管理员可以上传主…

【数据结构】(C语言):堆(二叉树的应用)

堆: 此处堆为二叉树的应用,不是计算机中用于管理动态内存的堆。形状是完全二叉树。堆分两种:最大堆,最小堆。最大堆:每个节点比子树所有节点的数值都大,根节点为最大值。最小堆:每个节点比子树…

千万不要用国产BI,不然你会发现它性价比奇高——以奥威BI软件为例

在信息技术日新月异的今天,企业对于商业智能(BI)软件的选择往往陷入了一个误区:盲目追求国际品牌,却忽视了身边那些性价比极高的国产精品。如果你不慎踏入了“千万不要用国产BI”的陷阱,那么奥威BI软件将是…

PHP家政服务预约单开版微信小程序系统源码

🏠 —— 便捷生活,从指尖开始💪 🌈【开篇:家政新风尚,一键触达】 在忙碌的生活节奏中,你是否渴望拥有一个温馨、整洁的家,却又苦于找不到合适的家政服务?现在&#xff…

C++_03

1、构造函数 1.1 什么是构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。 每次构造的是构造成员变量的初始化值,内存空间等。 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不…

对标GPT-4o!不锁区、支持手机、免费使用,Moshi来啦!

7月4日凌晨,法国知名开源AI研究实验室Kyutai在官网发布了,具备看、听、说多模态大模型——Moshi。 Moshi功能与OpenAI在5月14日展示的最新模型GPT-4o差不多,可以听取人的语音提问后进行实时推理回答内容。但GPT-4o的语音模式要在秋天才能全面…

适合弱电行业的项目管理软件!找企智汇软件!

随着科技的不断发展,弱电行业对于项目管理的需求日益增强。为满足这一需求,企智汇推出了一款专为弱电行业打造的工程项目管理系统。 企智汇弱电行业工程项目管理系统以其专业性、高效性和智能性,赢得了业界的广泛认可。该系统深入融合了弱电…

仓库管理系统

create database Warehouse_management;//建库 use Warehouse_management; 一、建表 1、管理员信息表 CREATE TABLE ManagerInfo (Mno CHAR(3) PRIMARY KEY,Mname VARCHAR(10) NOT NULL,Mgender CHAR(1) DEFAULT 男,Mbirhdate DATE,Mtelephone CHAR(11) NOT NULL,Mhiredate …

数据预处理:统计关联性分析/数据清洗/数据增强/特征工程实例

专栏介绍 1.专栏面向零基础或基础较差的机器学习入门的读者朋友,旨在利用实际代码案例和通俗化文字说明,使读者朋友快速上手机器学习及其相关知识体系。 2.专栏内容上包括数据采集、数据读写、数据预处理、分类\回归\聚类算法、可视化等技术。 3.需要强调的是,专栏仅介绍主…

C++(第四天----拷贝函数、类的组合、类的继承)

一、拷贝构造函数(复制构造函数) 1、概念 拷贝构造函数,它只有一个参数,参数类型是本类的引用。如果类的设计者不写拷贝构造函数,编译器就会自动生成拷贝构造函数。大多数情况下,其作用是实现从源对象到目…

Access,Trunk,Hybrid网络设备链接类型详解

带着问题找答案:网络链路上的数据包怎么看,是否携带vlan-id如何看,以及如何设计链接类型满足用户要求,请看如下解析。 第一种:链接类型access 无标记数据帧 第二种:链接类型trunk 第三种&#xf…

最新mysql打开远程访问和修改最大连接数

这里写目录标题 1.使用navicat进入命令控制板,进入use mysql;2.查询用户表3.更新user表中root用户域属性,%表示允许外部访问4.执行以上语句之后再执行,FLUSH PRIVILEGES;5. 执行授权语句修改最大连接数 1.使用navicat进入命令控制板,进入use mysql; use…

为什么写Python脚本时要加上if __name__ == ‘__main__‘?

目录 一、__name__ 的秘密 二、if __name__ __main__: 的作用 三、代码示例与案例分析 示例一:简单的数学工具模块 示例二:命令行工具 四、实际应用场景 五、进阶应用 1. 插件开发 2. 动态加载模块 3. 交互式与脚本模式切换 六、结论 在Pyth…

电商API对接流程丨从零开始快速打通电商平台数据通道

开发电商业务管理系统时,怎么对接电商接口呢?有两种方式可供选择,一种方式就是自己入驻想要对接的电商平台对应的开放平台,按照要求与流程与电商接口进行对接,还有一种方式就是寻找电商中台,通过第三方接口…