DaoCloud 时速云 灵雀云 持续集成功能使用体验

DaoCloud、时速云、灵雀云是国内三家容器云平台商,帮忙一个网友解决容器使用问题时顺便把三家的持续集成功能体验了一下,本文记录了体验操作过程。至于网易的蜂巢,由于没有发现有持续集成的功能,所以就没有体验了。

GitHub Bitbucket Coding GitCafe GitLab Git@OSC 快速构建
DaoCloud √* ×
时速云 × ×
灵雀云 ×

注:DaoCloud 支持私有 GitLab 需要付费。

由于 GitHub 不支持免费私有仓库,Bitbucket 和 GitHub 一样有被墙的风险,GitCafe 快关门了,Git@OSC 只有灵雀云支持,所以可以支持一个免费私有仓库的 Coding 是最佳选择。当然,也可以使用快速构建输入仓库地址实现,不过会丧失一些自动化功能。

DaoCloud

DaoCloud 的持续集成功能在「代码构建」中。

选择创建新项目,在「设置代码源」中绑定支持的代码仓库,将 持续集成」功能开启。这里为了在同一个仓库对应不同的云平台,建议在仓库中增加不同的目录或分支对应不同的云平台。

首先第一次构建开始,等待镜像构建完成后进入设置页面。

DaoCloud 的持续集成分两个部分 一个部分是「镜像构建」另一个部分是「持续集成」。持续基础部分需要用到 daocloud.yml ,使用脚本进行测试或其他操作。

首先是「镜像构建设置」 部分,触发规则可以在 tag 、分支、持续集成功三种条件中选择一种。


如果使用 tag 触发,建议设置好 tag 前缀或后缀进行有目的的触发。分支触发则需要区分发布分支与开发分支,需要发布时将开发分支的代码合并到发布分支。

具体的实践操作步骤可以查看官方文档 http://docs.daocloud.io/ci-image-build/trigger-setting

需要注意的是,这一步只是实现了自动构建镜像,并没有配置镜像自动部署到应用。开启构建镜像自动部署到应用,需要先将生成好的镜像部署到应用,然后在应用的发布设置中开启「自动发布」功能。
这样就能实现根据需要触发镜像构建,镜像构建成功后自动发布到应用的流程。根据需要,可以在「持续集成」用使用脚本进行测试。

注:DaoCloud 绑定代码仓库平台帐号后会自动在代码仓库平台上添加 WebHook,并在对应的代码仓库中添加部署公钥(仅限私有仓库)。

时速云

时速云 的持续集成功能在「代码构建」 中。

选择「添加源代码」,然后选择代码仓库,与 DaoCloud 不同,时速云在选择构建代码时就需要指定分支,并且后续也无法修改。如果想实现不同平台构建参数不同,最好使用不同的分支来对应。
与 DaoCloud 添加 WebHook 的方式不同,时速云需要手动添加专用的部署公钥到对应的仓库(只读模式),具体添加操作请查看官方文档 http://doc.tenxcloud.com/doc/v1/ci/faq-how-to-build-private-code-repositories.html。

等待镜像构建完成后,在「容器服务」中就可以部署镜像了。

由于使用 Coding 私有仓库时根本就找不到「持续集成」的选项。

尝试了一下 GitHub 发现公有仓库下确实出现了「持续集成」 选项,不过添加后在 GitHub 中并没有发现有添加 WebHook,因此推断应该是没有实现触发构建的。而且,自动部署镜像也还是显示即将开放。

总的说来时速云的持续集成功能聊胜于无,代码修改后需要手动执行构建镜像,并部署到容器服务。

灵雀云

灵雀云 的持续基础功能在「构建」中,需要先添加「镜像构建仓库」。这里要吐槽一下,GitCafe 现在已经转移到 Coding 中,但是只支持 GitCafe 不支持 Coding 是什么鬼!
由于 「快速创建」(支持直接输入代码仓库地址,对于私有仓库需要输入 ssh 协议的地址)仅仅支持 GitLab 格式的 WebHook,所以无法测试 Coding 平台的触发构建,可以免费使用私有仓库的就只有 Git@OSC 了。
实际测试,添加 Git@OSC 仓库之后会自动创建 WebHook ,因此,触发构建应该是没有问题的。

由于 灵雀云 已经没有免费实例可供测试了,所以无法继续使用部署服务,不过根据 http://www.alauda.cn/demo/ 官方演示看,镜像构建可以自动触发,但是部署到容器服务还是需要手动更新的。

灵雀云可以实现基本的持续集成,将构建仓库分支选择独立的发布分支,只在合并开发分支到发布分支时触发,也足够满足需求。

总结

假如我有一个服务需要同时部署到各个不同容器云平台,其中应用虽然一致,但使用的配置可能会不一样,如何做才能最大限度的降低部署工作量?

  1. 使用 Coding 代码托管平台的私有仓库,首先在 master 分支创建好 Dockfile 与配置信息。
  2. 根据需要的配置数量建立分支,例如 conf-1、conf-2 等等。
  3. 在各家添加代码构建时选择对应的代码分支。
  4. DaoCloud 上设置为代码有更新时自动构建并部署镜像。
  5. 其他两家使用快速构建,直接填写代码仓库地址(私有仓库只能输入 ssh 协议地址,同时注意选择分支),手动构建镜像和部署容器服务。
  6. 当不同平台需要使用不同配置时,单独修改分支上的配置文件。