为什么我们需要 CI/CD 自动化?如:GitLab Runner CI/CD

我们不讨论那些笼统理论

我们不讨论 CI/CD 是绝大多数开源软件的必选项

我们在这里只讨论 CI/CD 解决了我遇见的哪些问题

我们在这里只讨论 CI/CD 减少了哪些工作量

自建 GitLab 服务 https://gitlab.xuxiaowei.com.cn (需要哔哩哔哩 充电用户 才能访问,只能查看项目,无法创建项目)

  1. 搭建时间 2024-05-19
  2. 截止目前(2026-08-18,运行 821 天)
    • 流水线运行 15783 次
    • 作业运行 77977 次
    • 项目数量 624

已整理部分通过 CI/CD 历史日志分析解决的问题

  • 下面是最近几天遇见的问题
  • 主要时解决了 之前都是好用的,现在不好用了 之类的问题
    • 并非上了 CI/CD 就能解决问题,而是我要要在 CI/CD 中,把将来可能需要分析的内容,打印在 CI/CD 中,如:
      1. 在 CI/CD 中,如果使用了 Docker,我们应该运行一次 docker info,这样以来,日志会记录当时的 Docker 客户端版本、服务端版本、储存类型、代理、域名信任 等等
      2. 在 CI/CD 中,如果使用了 Docker 部署容器,我们应该在容器部署前后都要运行一次 docker ps,这样我们方便知道容器部署前后使用的 镜像的标签镜像的ID 分别是什么,方便后期出现问题时排除

减少工作量的 CI/CD

自动编译、发布项目

同步 Docker 镜像到国内

  • 由于众所周知的原因,国内使用 Docker Hub 存在网络问题
  • 个人有非中国大陆的服务器,可以连接国际互联网
  • 个人研究 kubernetes 等情况下,需要一些 Docker Hub 镜像,但是手动拉取太繁琐了,于是基于可以连接国际互联网的服务器与 GitLab Runner CI/CD,写了一个基于 Git 分支的 CI,可以根据不同的分支,同步对应的镜像推送到国内阿里云容器镜像服务,国内可以直接使用
  • 类似的镜像同步有很多,具体见:https://gitlab.xuxiaowei.com.cn/hub.docker.com 群组(需要登录才能看到具体项目),下面只列举一个项目地址
  • 后续需要新版本的镜像,直接新建一个分支即可

https://gitlab.xuxiaowei.com.cn/hub.docker.com/github.com/projectcalico/calico/-/pipelines