本篇文章为《前端组件库的开发与维护》系列的第八篇文章。本文案例在线文档:calendar.hxkj.vip。GitHub 仓库:github.com/TangSY/vue3…。
前言
经过前面七篇文章的铺垫,今天终于进入自动化部署环节了,相信大家最期待的就是这一环节了,好了,话不多说,直接进入正题吧。
工具选型
俗话说:工欲善其事,必先利其器。想要提高部署效率,必须选择一款趁手、好用的工具。
前段时间在这篇文章中(让你的项目部署由五档手动升级为全自动)也对目前各种 CI/CD
工具进行过一波横向对比,最终选择 GitLab
的原因是受众比较多。有评论指出 GitLab
的资源消耗太大,根本运行起不来,我当时提到了可以用 Onedev
代替,并且本人线上服务器部署的也是 Onedev
。那今天就从各个方面重点对比一下这两个工具。
整体性对比
先从宏观上来个对比,总结如下:
对比特性 | OneDev | GitLab | 概括 |
---|---|---|---|
功能特点 | 支持敏捷开发、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
官方提供了多种安装方式
这里推荐 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
查看一下状态
配置 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
经过前面的步骤,网站已经可以正常访问了,打开之后会让你进行简单的初始化配置。
第一步:配置管理员账户
上面的信息根据自身喜好填写即可
第二步:配置服务端域名
这里填写前面配置好的域名,没有域名就填 IP + 端口。
后续如果要修改,也可以在这里修改。
新建项目
1、点击 + 号添加项目
2、填写项目信息
3、提交已经存在的项目,按照提示操作即可
配置 CI/CD
到这一步,它的优点就体现出来了,全程可视化操作,自动生成配置文件。
1、添加 .onedev-buildspec.yml
配置文件
2、添加新 Job
3、填写 Job
信息
- name:随便取个敞亮的名字,我这里写的 CI/CD
- Job Executor:选内置的
internal
就可以了
点击 Steps 的 + 号
添加步骤
类型选 Checkout Code
再取个敞亮的名字,我这里写的 checkout
其他的全部默认就好,点击 OK 完成。
现在第一个步骤就添加好了,这个主要用于拉取代码。
接下来再按上面的方式添加一个步骤,这次的类型选择 Execute Commands
,并填写如下信息:
- 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
添加完成之后,我们就可以看到两条步骤了
接下来继续配置这个任务的触发条件,意思就是满足什么条件才触发自动构建/部署
类型按需选择即可,我这里配置的是 当 master 分支更新时,触发自动构建任务
。
其他的配置咱们暂时用不上,就不管了,直接点击 Save
按钮保存即可
4、点击 Commit
提交本次修改
验证 CI/CD
经过前面简单的配置,一条自动化流水线就搭建起来了,咱们改一下 master
分支的代码,看看能不能正常触发构建。
提交代码的过程咱们就省略了哈
在 build
菜单下,看到这个绿油油的标志,那就恭喜你,成功了!!!
当然,同时也支持手动触发,进入配置界面,点击启动按钮即可
总结
今天这篇文章主要讲解了如何利用 OneDev
进行自动化网站的构建与部署。
并且每个步骤都有对应的图文说明。
安装 & 部署过程中如果遇到问题,可以评论区提问哦~
下一篇咱们来看看如何自动发布 npm
包。
对此系列感兴趣的,不妨一键三连(点赞 + 关注 + 收藏),方便跟进后续文章。
本系列往期文章
本文正在参加「金石计划」