实现前端项目自动构建和部署(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

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

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

相关文章

Cocos 7.2~7.4

这几天没更新CSDN,跑去玩Cocos了。自从知道我的粉丝百分之十之八九都是假人,更新确实没什么动力了。主要还是把这边当成一个日记本吧。 选择cocos的原因也很简单。会点js,技术栈比较接近,上手估计也快。简单记录下这几天的内容 主…

@amap/amap-jsapi-loader 实现高德地图中添加多边围栏,并可编辑,编辑后获得围栏各个点的经纬度

先上一张效果图 看看是不是大家想要的效果~ ❤️ 希望其中的小点能帮助大家,主要看怎么绘制在地图上的代码即可 1.第一步要加入项目package.json中或者直接yarn install它都可以 想必大家应该都会 "amap/amap-jsapi-loader": "0.0.7&qu…

C语言作业笔记

1. 要找俩个数使其相加等于一个数,那么俩个数从头尾出发,先动一边,假设是尾先动,一开始俩个数相加大于sum(小于的话就动头),那么总有一时刻俩数相加小于sum,则就在那一刻停下来&…

关于5G和卫星

手机,已经串联起了我们生活中的一切环节。我们随时随地拿出手机,都能畅快地上网。 这一切是如此地理所当然,以至于我们甚至想不到这样不可思议的问题: 移动通信网络真的无处不在吗? 我们都知道,地球虽叫…

毕业论文初稿写作方法与过程

毕业论文初稿写作方法与过程 毕业论文是大学生在学业结束前必须完成的一项重要任务,它不仅是对学生所学知识的综合运用,也是对学生研究能力和写作能力的检验。写好毕业论文初稿是完成高质量毕业论文的关键一步。下面将具体阐述毕业论文初稿的写作方法和过…

Redis 7.x 系列【18】事务

有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 命令2.1 MULTI2.2 EXEC2.3 DISCARD2.4 WATCH2.5 UNWATCH 3. 事务中的错误4.…

无法识别为 cmdlet、函数、脚本文件或可运行程序的名称

一、遇到问题 PS D:\software\nacos\nacos-server-2.3.1\bin> startup.cmd -m standalone startup.cmd : 无法将“startup.cmd”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径, 请确保路径正确,然后…

Ubuntu su命令输入密码后提示“su: 认证失败”

在Ubuntu系统中,使用su命令切换到root用户时提示“su: 认证失败”通常是因为root账户默认情况下是被锁定的,没有设置密码。以下是一些解决这个问题的方法: 使用sudo命令:Ubuntu推荐使用sudo命令代替直接使用root用户。sudo命令允许…

Aavegotchi的Gotchiverse新地图: 沉睡的野兽即将苏醒!

Gotchi 守护者们,准备好了,因为我们要大开杀戒了! 加入我们吧(后果自负!),我们将深入Gotchiverse,前往奥姆夫山--我们虚拟世界中所有 FOMO 的炽热源头。 请继续阅读,了解…

AI 绘画的常用技巧和操作方法

随着人工智能技术的飞速发展,AI 绘画已经成为设计和艺术领域的一股新兴力量。无论是设计师、艺术家,还是普通的科技爱好者,都能通过 AI 绘画工具创造出令人惊叹的作品。 AI 绘画的基本原理 AI 绘画的核心在于机器学习算法。通过训练大量的图像…

餐饮界的新传奇:沃可趣员工社区,让品牌关怀在指尖流淌

咖啡师与顾客发生肢体冲突、员工用咖啡粉泼顾客……某精品咖啡一天爆出两个大瓜! 很快有网友指出咖啡店员工长期遭受重压,与品牌之间存在根本矛盾。 同样做餐饮的老牌快餐,门店密度与之不相上下,却很少发生这样的暴雷。 不仅因…

算法力扣刷题 三十一【150. 逆波兰表达式求值】

前言 栈和队列篇。 记录 三十一【150. 逆波兰表达式求值】 一、题目阅读 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。 每个操作…

Django创建项目(1)

运行 注意 在本次创建Django项目时,出现了一点小问题,由于我之前pip换源过,换源用的是http,结果在创建时,pip只支持https,所以如果出现创建项目失败的问题,那么有可能是因为换源的问题&#xf…

(三十一)Flask之wtforms库【剖析源码下篇】

每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥本文已收录于Flask框架从入门到实战专栏:《Flask框架从入…

AlphaGo 背后的人工智能:机器学习和神经网络

文章目录 一、说明二、背景三、围棋游戏四、AlphaGo 算法五、神经网络六、AlphaGo 的未来七、人工智能的未来八、结论 一、说明 棋盘游戏围棋被视为人工智能最具挑战性的任务之一,因为它“复杂、基于模式且难以编程”。计算机程序 AlphaGo 战胜李世石成为人工智能和…

Redis 五大数据类型底层原理

0、前言 本文涉及的主题: redis 对象存储 底层数据结构:int、embstr、raw、ziplist、listpack、quicklist、skiplist、intset、hashtable redis 数据类型:string、list、set、zset、hash 1、对象存储、底层编码、数据类型 1.1 对象存储…

14-23 深度神经网络的主要架构(RNN/LSTM/CNN)

神经网络架构 神经网络的架构决定了这些网络如何运行,这是执行各种任务和扩展神经网络应用的关键因素,主要有两种方法:前馈神经网络和反馈神经网络。在本文中,在彻底分析每种方法之后,我们将对这两种架构进行深入比较…

规则·理解·成长:与自闭症儿童共绘记忆蓝图

在星贝育园,作为专注于自闭症儿童康复的专业教育者,我们常常遇到家长的疑惑:“为什么我的孩子总是记不清楚规则?”这个问题触及了自闭症谱系障碍(ASD)儿童在理解与遵守规则方面面临的独特挑战。下面&#x…

每日一题——Python实现PAT乙级1005 继续(3n+1)猜想(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码逻辑概述 时间复杂度分析 空间复杂度分析 总结 我要更强 代码优化点…

【MySQL基础篇】函数及约束

1、函数 函数是指一段可以直接被另一段程序程序调用的程序或代码。 函数 - 字符串函数 MySQL中内置了很多字符串函数,常用的几个如下: 函数功能CONCAT(S1,S2,...,Sn)字符串拼接,将S1,S2,...,Sn拼接成一个字符串LOWER(str)将字符串str全部…