豆瓣读书:https://book.douban.com/subject/33950316/
    image.png


    这是一本实践性质很强的书,详细介绍了一系列开源系统的安装、配置和使用方法:

    • Gitlab:源代码管理
    • Gerrit:代码审查
    • SonarQube:代码扫描
    • Jenkins:持续集成
    • Rancher:持续部署

    以上都是开源方案,看完以后几乎可以搭建一个中小型公司 CI/CD 全流程了。

    其中一个作者在 “序” 中写道:

    我不善于讲解理论,所以主要围绕问题讲思路、讲方法、讲实际操作。 没有什么比动手操作更令人印象深刻的了,没有什么比动手操作更好的学习方法了。

    所以本书真的是非常的 “实战”。


    CI/CD(持续集成持续部署)总共包含这几件事情:

    • 代码的版本管理:Gitlab CE(ruby 应用)
      • 安装:服务端、客户端;邮件服务器;初始化配置;修改服务端口;重启;设置初始密码;创建新用户;
      • 配置:git 存储仓库目录;配置邮件 SMTP;与 Open LDAP 集成;备份和还原;
      • 使用:角色和权限;创建新组和项目;本地 git 配置;
    • 代码扫描和管理平台:SonarQube(Java 应用)
      • 安装:SonarQube 服务器;数据库配置;账户权限配置;安装插件
      • 使用:扫描方式和配置;本地开发工具代码扫描;通过 Maven 方式扫描;服务器界面;
    • 代码审核工具:Gerrit(Java 应用)
      • 安装:SMTP 配置;监听端口;配置插件;创建用户以及用户认证
      • 配置:通过 SSH 公钥连接;GitWeb 安装和配置;与 Gerrit 集成;Gerrit 集成 LDAP 认证;Gerrit 和 Gitlab 集成
      • 使用:用户和组;项目创建,删除分支;为项目添加代码审核者
    • 持续集成:Jenkins(Java 应用)
      • 安装:实用 Docker 安装;为 CentOS 虚拟机安装;升级备份和还原;
      • 配置:系统配置;全局安全配置;LDAP;全局工具配置;Jenkins CLI;Jenkins 插件
      • 使用:分布式构建;Jenkins 界面;
    • 持续部署:Rancher(Java 应用)【企业级容器管理平台】
      • 安装:安装环境;Rancher HA;添加本地账户;设置环境;添加主机;集成 Harbor 镜像仓库;
      • 使用:单系统部署;集群部署;微服务部署;租户隔离;多环境发布

    本书更像是一本 企业级 CI/CD 搭建方法 的说明书。
    我们只要按照书中文档说明,就可以把整套系统搭建起来。


    读完这本书之后,还有额外的感受。这些系统分属于不同的开源项目,它们之间互相配合,这是自下而上的视角。
    但是如果自顶向下来看,面对 CI/CD 这个复杂场景,我们能否在进行系统设计的时候,进行这样的子系统拆分呢?

    此外,这些子系统虽然要解决的问题不同,但是结构上却非常的相似:

    • 安装包:下载安装包可以把应用在本地运行起来,后者在 Docker 中运行
    • 命令行:提供了一系列命令行操作
    • 可配置:尤其是 DB 方面的配置,与存储系统解耦
    • 插件化:几乎每个系统都提供了插件方案
    • 用户界面:每个系统都有相应的用户界面,管理员可在用户界面中进行操作
    • 可搭配使用:提供了与其他工具进行集成的方案

    这给我们设计系统,带来了很大的启发性,一个复杂的实际系统我们能否这样拆成多个部分呢?

    本书值得一读。