Skip to content

前言

这一个星期无意间在github接触到action,也就是cicd。由于github的runner在国外,在cicd的时候会遇到网络问题,非常慢。于是,我把我的vitepress博客项目搬到国内的代码托管平台,玩了gitee和国内的gitlab,尝试自己配置工作流(只知道大概原理),debug了很长时间。(吐槽一嘴,gitee真的是一坨s)

产物的部署

虽然我的项目的cicd非常简单,主要就是构建打包和部署两部。构建产物我是用一个虚拟runner来实现(虚拟runner可以理解为一个虚拟云电脑),部署则是直接将产物放到我自己的服务器。因为虚拟runner和我自己的服务器,是两个隔开的东西,如何将虚拟runner跑出来的产物传给我自己服务器这是个问题。在看日志的时候,发现gitee是通过登陆到我的云服务器,用wget链接来获取。gitee和gitlab在虚拟runner跑完,成功构建出产物,会将产物生成一个临时链接放进去,有一个专门放产物的选项,在gitee和gitlab可以看到,点击就能下载到本地电脑。

而gitlab可能也是通过这种方式,我不确定因为gitlab的日志没有详细显示具体操作了什么。
有一点gitee很好,gitee有一个绑定云服务器的功能。这样它就可以root用户直接操作你的服务器了,不用担心命令权限的问题了。gitlab则不是,在gitlab创建一个shell执行器runner,这一步就是相当于gitee绑定自己服务器的操作。gitlab会在你的云服务器创建一个gitlab_runner用户和一个目录,这个目录是用来接产物的。因为gitlab是以一个普通用户来操作你的服务器,后续有些命令执行的时候,会因为权限的问题执行失败,导致工作流停止,所以debug了很久。

后语

我现在也不清楚我是否对cicd理解到位,我只是凭着自己的感觉,问ai,看日志,来理解cicd底层具体实现原理。我也是第一次玩cicd,全凭这自己的感觉来,ai在这过程中解决我很大一部分问题,把日志无脑复制给ai,他能告诉你大致错误出在哪。国内的gitee和gitlab使用起来,我更推荐gitlab。gitee有很多bug→,官方的guide也是一坨。相比较gitlab,gitee的官方就像是敷衍了事,无人维护,像是一个草台班子的感觉。