一开始是想用 Jenkins 来做的,不过我们这边的代码放在code上,愣是没找到 Jenkins 的插件配置 git 的 hook ,碰巧发现了 code 这个平台的 Flow 工具,于是就用了Code + Flow + 自建K8 这一套来实现,原理上都是一样的 ,web hook 提交打包镜像,k8 发布部署容器,运行服务。

    1. 包含工具
      Codeup (https://codeup.teambition.com/)等同于 Gitlab、Coding 等代码托管平台
      Flow (https://flow.teambition.com/)等同于Jenkins等 CI集成工具
      自建 K8s 集群 用于 CD发布 服务

    2. 流水线
      先来看看最终效果
      1.png
      1.2.png
      2.png

    1. 准备
      首先 ,需要准备
      存放在 Code 的代码库,代码里包含 构建 Docker 容器的 Dockerfile ,编排容器的yml文件,我的目录结构如下:
      3.1.png
      黄色的是 Dockfile 和 run dockerfile 中 用到的 sh

    Flow 配置流程
    Flow 是 阿里的一款CI工具,类似 Jenkins ,配置如下3步:
    4.png

    先来配置第一步,代码源 和 web hook
    5.png
    设置 代码仓库 ,开启 源码触发,也就是 webhook ,在代码仓库也添加配置,其实和其他的工具都差不多流程
    6.png
    第二步,设置 docker 镜像打包的 dockerfile 位置,这也是为啥要把dockerfile 放在仓库中的原因,以及设置 dokcerfile 推送的地址 ,由于是阿里自家的工具,这里都是一套阿里的,直接配置阿里镜像仓库
    7.png
    如图,基本没什么好说的,授权会跳转到阿里云,填写 RAM ,这一步提供了 你的 docker registry 的 pull push 权限,相当于替代了 docker login 或者 kubectl 的 secert ,registry 身份验证

    第三步,k8发布
    按道理来说,这里的步骤都是自己选择定制的,可以选择 k8 发布的组件,然后配置,提供了k8自建集群和 k8阿里云集群的两种选择,我这里都没有用,我是配置了 k8master 节点的ssh ,然后自己配置了 sh 脚本,去定制 k8发布的逻辑
    8.png
    至此,流水线配置完成,我的这个流水线是发布10个节点 ,来看下效果

    效果
    仓库 push 之后通过 webhook 触发 docker 镜像构建
    9.png
    推送到阿里云
    10.png
    11.png
    12.png