CodeFresh + Docker Swarm 工作流

只是简单写一下总体流程,不是一步步详细教的教程。

CodeFresh + Docker Swarm 工作流

(题图仅仅是为了有个图不会那么无聊,不是为了让你看清的。题图是 codefresh.yml 文件,文章内有写)

看完这篇文作为读者你能学到什么?

如果你在用 Docker Swarm 而且想知道怎么整合 CodeFresh 这个 CI/CD 工具。
那么这篇文章对你有用。如果不是,那么就对你没用(关掉这篇文章)

这篇文不是教程,纯粹是个短总结

今天2019-2-11,昨天2019-2-10花了一个下午和晚上弄 CodeFresh。
我原本以为1个小时做完的事情结果花了5个小时+
(好了好了我知道你不关心花了多少时间,现在直入重点,请继续看下去)

目标

我只需要 git push 到 Github,然后后面的测试和部署全部交给 CodeFresh。
意思就是:我只需要专心写代码这一件事情,只要推送了代码,部署是全自动的。
部署用的是 Docker Swarm,没用 kubenetes 是因为我还不会。学习成本稍高。先用 Swarm。

实现目标的流程

  1. 先把 host 机器配置好,我这里用的是一台 Azure 机器,用 Azure 纯粹是因为我有优惠卷就开台机器来测试。这台机器没有什么特殊的(你在 Google 上开台 Compute Engine,或 Amazon 上面开一台 EC2。阿里云上面开一台云主机,UCloud 上面开一台主机,是完全一样的。就是选 CPU 和内存配置而已)

host 机器配置好的意思是:
1. 公钥私钥配好(因为后面需要把私钥复制到 CodeFresh 里,这样才能访问你的机器)
2. Docker 安装好,跑下 docker version 命令看装好没,然后 docker swarm init 初始化 Swarm。

  1. 把代码和 CodeFresh 配置好

代码方面:

  • Dockerfile 负责做镜像
  • docker-compose.yml 负责本地开发
  • docker-stack.yml 负责部署
  • codefresh.yml 负责配置 Codefresh

CodeFresh 要配置环境变量:
https://codefresh.io/docs/docs/deploy-your-containers/docker-swarm/
照着这个文档来,不长。
variable

以下是我配置的环境变量,供你参考
variable2

docker-stack.yml
image-location
注意镜像名。因为是和 codefresh 搭配使用的。

codefresh.yml
codefresh.yml

小备注(关于价钱)

CodeFresh 免费版:120 次 build 一个月
build 的意思就是触发的工作。
比如默认是 git push 到 Github 会马上触发 build。
build 的默认行为是根据你的 Dockerfile ,打包一个 Docker 镜像,
放到 CodeFresh 的 Container Registry 里。

你可以扩展这个行为,写一个 codefresh.yml 配置文件(看官方文档里怎么配)
然后可以做到:先 build docker image 然后跑测试和跑部署。

结论

CI 测试我还没做。但是 CD 自动化部署做到了,
通过搭配 CodeFresh + Docker Swarm(跑在 Azure 上) 做到。

题外话:
给我的感觉是 CodeFresh 似乎把精力更多放在了 Kubenetes 上,
因为文档里就一篇提到了 Docker Swarm。

因为我弄错了蛮多次的,免费限额用到了 41/120 了。用了三分之一
fail

(用了41/120)
fail-quote