周日时间宝贵,简单说几句就结束吧。
主要是2点:1. 为什么开始用 2. 为什么放弃
简单说就是官方文档不够好,试了很多次都不行,网上其他资料又少。就放弃了。

这篇文章的意义是:给打算使用 Drone.io 的同学看看我的使用体验。

我用的版本是:Release 1.0.0-rc.1

1. 为什么尝试 Drone.io

我为了搭建 CI/CD Workflow 试了一些工具。
Drone.io 刚开始看了一些文章觉得还不错。
主要是学习成本低,我实在不想学 Jenkins。

使用方法是:在自己的服务器上跑一份就行了。界面也干净简洁。
drone.io

(因为我拿了 Azure 的200美元试用,就在 Azure 上开了台机器跑 Drone.io)
(小小的吐槽下,200美元只能试用30天。我觉得有点短,3个月或以上会更好一些)

Drone 可以和多个版本管理工具连起来,下图是官方文档列出来的所有支持的版本管理工具
22-1

我选择的是 Gitlab + Drone.io。
Drone.io 会给 Gitlab 设置一个 Webhook。
每次 Gitlab 有动作了,比如 git push 了一下。Drone.io 不到2秒就会马上开始任务。
ccb

drone2

需要写一个 .drone.yml 配置文件。里面告诉 Drone 怎么做。
(我知道这个截图里的 commit message 全是 update gitlab-ci,因为我放弃了 Drone.io 所以就去折腾 Gitlab 了,截图的意义是让没装过的人看看 Drone.io 的界面)

2. 为什么放弃

我的目标是:1. git push 之后 CI/CD 工具把部署自动搞定。
那么需要以下步骤:

  1. 打包 Docker 镜像,推到某个镜像存储站,比如 Docker Hub/Gitlab/等等。
  2. 把 docker-compose.yml文件 复制到服务器上。
  3. 运行 docker stack deploy -c [docker-compose 文件的路径] 进行 Swarm 部署

第1步打包和推送镜像非常顺畅
第2步是 scp 复制文件。appleboy/scp 这个文档过时了。

现在2019年1月,几乎每一个 Drone plugin 的文档。
顶部都写着 “这是 0.8 的语法。1.0 的语法请看文档”
(看下图红框位置)
fuck

1.0 的语法其实也没有多难,就是把配置塞进去 settings 字段就可以了。
settings

可是我照着 appleboy/scp 和 appleboy/ssh 的文档照着弄。
就是一直报这样那样的错。文档也不充分我修都不知道怎么修。
我哪儿有心情去倒腾这样的奇葩问题。不能用就算了。

image: 字段可以填写任何镜像。
我也试过填 image: ubuntu:18.04 自己进行 scp 和 ssh
没有成功。
懒得折腾。

补充一些 Drone.io 的网上相关文章

https://mritd.me/2018/03/30/set-up-drone-ci/

(我开头原本说就简单写几句,结果贴了这么多图,写了一大堆,
补充文章链接这个部分我就偷懒好了,就这一个)

结论

工具本身很简单,界面也比 Jenkins 好看,学习成本也较低,这个好评。
但是文档和 example 的缺失又把这个学习成本拉上去了。

除非 Drone.io 把文档改好,不然我是不会再用了。

另外 appleboy 是个台湾小哥,https://github.com/appleboy
感兴趣的同学可以去看看他的博客和其他地方的内容。
https://golangcaff.com/articles/330

你可能问,

那你可以帮忙改进 Drone.io 啊?帮忙把文档改改。

回答:作为在国内的上班狗,平时够忙的了,周末想躺尸的情况下我还要爬起来

  • 学 Docker/k8s,不然就等着被环境不一致 / scale 问题折腾死吧
  • 近期团队还可能招人我还要学习怎么当一名好的技术管理者/CTO。(search: how to be a good cto,等等,把能看的英文文章都看一遍总结一下)
  • 怎么面试比较好(我也不喜欢算法/白板面试)(怎样让面试体验对双方都更好)
  • 我们做的产品和区块链相关,区块链相关知识我还没学够,比如最近知道了 oracle 问题,意思就是和外界沟通的时候。怎么确保数据是对的?比如智能合约用在保险业里。合约要去外部 API 查你的房子是不是被烧毁了。那么怎样确保这个信息是可信的?结论:目前没有完美的解决办法弄这个问题。

有这么多东西要做。
我没心情发 PR/去 Gitter 聊天室沟通来改进 Drone.io。。