Sucha's Blog ~ Archive for November, 20245

25年11月29日 周六 10:57

gitlab-ci

公司用 gitlab 搭建了源码版本控制平台,然后领导让我搞一个 pipeline 出来,自动打包,上传内网下载平台,以及给聊天机器人推打包成功、失败的消息。

不得不学习 gitlab-ci 的编写,以及数据的传递。

因为是 flutter 框架,所以打包倒也挺简单,只是如果是 iOS 的 ipa 包,涉及到签名,最好使用 --export-options-plis 来指定,要不然 xcode 如果是自动签名管理的话,会遇到签名失败的问题。

gitlab-ci 的逻辑,可以选择不同执行环境,为了方便,实际上是用的 shell 环境,把自己的机器注册上去,其实很简单,只要跑一个所谓的 gitlab-runner 就可以注册到 gitlab 上了,当然前提是需要这个 gitlab 仓库的管理权,可以在 setting 里面设置 CI/CD。

之后是将工作划分为不同的 job,比如打 Android 包是一个 job、打 iOS 包又是一个 job,当然合并为一个 job 也是可以的,但分不同的 job 好处是,job 是 gitlab 调度的单位,如果有多个不同的 gitlab-runner,那么不同的 job 可以分配过去,而且完全可以将 apk 打包的工作划分给 windows 下的 gitlab-runner,而将打 ipa 包划分给 mac 下的 gitlab-runner,这两个 job 同时处理,最后全部打包成功的时间可以提前。

一个 gitlab pipeline 就是工程里面一个 gitlab-ci.yaml 描述,这里也描述了在什么场景下启动 pipeline 的工作,我们设置了在代码被 merge 进指定分支后,开启这个打包的 pipeline,pipeline 被拉起后可以在 gitlab 里面看到,所执行的 job,job 的关系也能看到,包括日志、结果。

打包自动化后,省了自己动手的时间,而且打完包后,pipeline 的开启、成功、失败,都会有 bot 通知,感觉挺好玩的~