组件库从开发到维护全链路讲解(八)在线文档自动部署|图文并茂

1,810 阅读8分钟

本篇文章为《前端组件库的开发与维护》系列的第八篇文章。本文案例在线文档:calendar.hxkj.vip。GitHub 仓库:github.com/TangSY/vue3…

前言

经过前面七篇文章的铺垫,今天终于进入自动化部署环节了,相信大家最期待的就是这一环节了,好了,话不多说,直接进入正题吧。

工具选型

俗话说:工欲善其事,必先利其器。想要提高部署效率,必须选择一款趁手、好用的工具。

前段时间在这篇文章中(让你的项目部署由五档手动升级为全自动)也对目前各种 CI/CD 工具进行过一波横向对比,最终选择 GitLab 的原因是受众比较多。有评论指出 GitLab 的资源消耗太大,根本运行起不来,我当时提到了可以用 Onedev 代替,并且本人线上服务器部署的也是 Onedev。那今天就从各个方面重点对比一下这两个工具。

整体性对比

先从宏观上来个对比,总结如下:

对比特性OneDevGitLab概括
功能特点支持敏捷开发、CI/CD、文档管理等多种功能功能全面,支持DevOps全流程管理OneDev在CI/CD、文档管理方面相对较弱,但敏捷开发方面较为优秀;GitLab在DevOps全流程管理方面较为全面。
性能响应速度快,CPU和内存占用低响应速度快,但CPU和内存占用较高OneDev的CPU和内存占用比GitLab低,但响应速度相当。
资源消耗占用硬盘空间少,相对节约成本占用硬盘空间大,相对成本较高OneDev资源占用较少,相对GitLab节约成本。
操作性界面简洁,易于使用和管理界面较为复杂,需要一定的学习成本OneDev界面简洁,易于使用和管理,学习成本低;GitLab界面复杂,需要一定的学习成本。
运行稳定性较为稳定,无明显性能问题较为稳定,无明显性能问题OneDev和GitLab的运行稳定性都较为良好。
可维护性提供可靠的备份和恢复机制提供可靠的备份和恢复机制,但需要额外配置OneDev提供简便的备份和恢复机制,GitLab需要额外配置,但提供详细的备份和恢复文档。
社区支持社区规模较小,但问题得到及时解决社区规模较大,但解决问题的速度相对较慢OneDev的社区规模较小,但提的问题可以得到及时解决,本人在搭建过程中给 OneDev 提过三个 issue,基本在当天或第二天就得到了回复。GitLab的社区规模较大,但问题解决的平均响应时间为2-3个工作日,但是他的成熟度较高,基本上所有的问题都能在网上自行找到答案。
出身背景由国内程序员于2019年发布,目前由其个人维护开发由乌克兰裔美国人Dmitriy Zaporozhets和瑞典人Valery Sizov于2011年创立,目前由GitLab公司维护开发OneDev是由国内程序员开发的,其特点是注重平台的易用性和开发效率。而GitLab则是由一家公司专门维护开发,其特点是注重用户体验和可靠性,并且开源社区的贡献也非常活跃。

好了,对比完这些差异,那咱们继续深入了解一下大家最关心的资源消耗方面,它的区别到底体现在哪!其他的差异大家可以自行品味。

资源消耗对比

资源消耗方面的对比,主要包括硬盘空间占用和内存占用,根据收集到的资料表明:

硬盘空间占用

  • OneDev: OneDev 运行时的硬盘空间占用较少,官方文档中建议使用 500GB 的硬盘,以支持 20 万个 Git 仓库,即平均每个仓库占用 2.5MB 的空间。
  • GitLab: GitLab 运行时的硬盘空间占用较大,官方文档中建议使用 1TB 的硬盘,以支持 10 万个 Git 仓库,即平均每个仓库占用 10MB 的空间。

内存占用

  • OneDev: OneDev 运行时的内存占用较低,根据官方文档中的推荐配置,运行 OneDev 需要最低 2GB 的内存。
  • GitLab: GitLab 运行时的内存占用较高,根据官方文档中的推荐配置,运行 GitLab 需要最低 4GB 的内存,但对于大型项目,需要更高的内存配置。

综上所述,OneDev 的硬盘空间占用和内存占用都比 GitLab 低,主要原因是 OneDev 在设计时采用了更加轻量级的架构,同时采用了更高效的存储方式,从而减少了资源消耗。

资源消耗就意味着金钱的消耗,所以,答案显而易见,就选 OneDev 了。

安装 & 部署

安装OneDev

官方提供了多种安装方式

image.png

这里推荐 docker 安装,一行命令解决,简单粗暴

docker run --name onedev -d --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /data/ondev:/opt/onedev -p 6610:6610 -p 6611:6611 1dev/server

安装完成之后,执行 docker ps -a 查看一下状态

image.png

配置 Nginx

这一步主要做域名的配置以及端口的转发。没有域名的话,直接 IP + 端口访问也可以,默认端口 6610。

如果有域名,可以参考这篇文章进行配置:假如你有个域名,教你三招全方位提升逼格,拉升简历吸引力

具体配置信息如下:

    server {
        listen       80;
        server_name  onedev.hxkj.vip;
        rewrite ^(.*)$ https://$host$1 permanent;
    }

    server {
        listen       443;
        server_name  onedev.hxkj.vip;
	ssl on;
	client_max_body_size 500m;

        ssl_certificate	    /etc/nginx/cert/hxkj.vip/fullchain.cer;
        ssl_certificate_key /etc/nginx/cert/hxkj.vip/hxkj.vip.key;
	include             /etc/nginx/ssl-options.conf;	

	location /wicket/websocket {
             proxy_pass http://localhost:6610/wicket/websocket;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
     	}

     	location /~server {
             proxy_pass http://localhost:6610/~server;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
     	}

	location / {
               proxy_pass http://127.0.0.1:6610;
        }

    }

配置完成之后,就可以直接通过域名进行访问了。

配置 OneDev

经过前面的步骤,网站已经可以正常访问了,打开之后会让你进行简单的初始化配置。

第一步:配置管理员账户

one_设置管理员.jpg

上面的信息根据自身喜好填写即可

第二步:配置服务端域名

one_域名.jpg

这里填写前面配置好的域名,没有域名就填 IP + 端口。

后续如果要修改,也可以在这里修改。

image.png

新建项目

1、点击 + 号添加项目

image.png

2、填写项目信息

image.png

3、提交已经存在的项目,按照提示操作即可

image.png

配置 CI/CD

到这一步,它的优点就体现出来了,全程可视化操作,自动生成配置文件。

1、添加 .onedev-buildspec.yml 配置文件

image.png

2、添加新 Job

image.png

3、填写 Job 信息

image.png

  • name:随便取个敞亮的名字,我这里写的 CI/CD
  • Job Executor:选内置的 internal 就可以了

点击 Steps 的 + 号添加步骤

image.png

类型选 Checkout Code

image.png

再取个敞亮的名字,我这里写的 checkout

image.png

其他的全部默认就好,点击 OK 完成。

现在第一个步骤就添加好了,这个主要用于拉取代码。

image.png

接下来再按上面的方式添加一个步骤,这次的类型选择 Execute Commands,并填写如下信息:

image.png

  • Name:再取个敞亮的名字,我这里填的 build
  • Run In Container:关闭
  • Interpreter:默认值
  • Commands:项目打包,部署相关的操作命令

命令参考值如下:

# 安装依赖
yarn
# 打包
yarn build

# 进入打包产物目录
cd ./dist
# 压缩打包产物
tar -zcvf dist.tar.gz *
# 将压缩包移动到项目跟目录
mv dist.tar.gz /usr/share/nginx/hxkj/
# 进入项目跟目录
cd /usr/share/nginx/hxkj/
# 解压打包产物
tar -zxvf dist.tar.gz
# 删除压缩包
rm -f dist.tar.gz

添加完成之后,我们就可以看到两条步骤了

image.png

接下来继续配置这个任务的触发条件,意思就是满足什么条件才触发自动构建/部署

image.png

类型按需选择即可,我这里配置的是 当 master 分支更新时,触发自动构建任务

image.png

其他的配置咱们暂时用不上,就不管了,直接点击 Save 按钮保存即可

image.png

4、点击 Commit 提交本次修改

image.png

验证 CI/CD

经过前面简单的配置,一条自动化流水线就搭建起来了,咱们改一下 master 分支的代码,看看能不能正常触发构建。

提交代码的过程咱们就省略了哈

build 菜单下,看到这个绿油油的标志,那就恭喜你,成功了!!!

image.png

当然,同时也支持手动触发,进入配置界面,点击启动按钮即可

image.png

总结

今天这篇文章主要讲解了如何利用 OneDev 进行自动化网站的构建与部署。

并且每个步骤都有对应的图文说明。

安装 & 部署过程中如果遇到问题,可以评论区提问哦~

下一篇咱们来看看如何自动发布 npm 包。

对此系列感兴趣的,不妨一键三连(点赞 + 关注 + 收藏),方便跟进后续文章。

本系列往期文章

本文正在参加「金石计划」