Drone 一次失败的尝试
文章目录
什么是Drone
Drone 是一个基于Docker的CI/CD工具,使用Golang开发,相对老牌Jenkins来说资源消耗相对小很多。
十一打算在lede软路由上搭建一套Blog程序,用来整理Wiz笔记里的文章。然后这一次打算尝试一下Markdown的静态Blog,所以打算将CI工具也一并搭建起来,然而因为软路由CPU和内存都比较差,就打算尝试一下Drone来配合我自己搭建的Gogs实现文章发布和自动构建。
安装Drone
安装和配置最开始参考的文章群晖上配置生产力工具 gogs + drone和作者的另外一篇Hugo + Gogs + Drone 搭建博客。
|
|
然后按照文章中命令启动,再然后去Gogs中尝试测试Web hook是否正常,大概位置是在这里:
接下来开心的测试了一条推送(测试前需要在项目中放一个.drone.yml
文件),看到绿色小勾勾瞬间就激动了,然后各种坑就开始了。
碰到的问题
-
推送了git后Drone的后台显示一直是Pending状态
- 开始以为版本不兼容,各种升级降级版本,甚至看着参考的文章发布时间去hub.docker.com找,在文章发布到现在的版本挨个试了一遍。无果
- 然后百度一圈没有什么有价值的中文资料(这货还是太小众?)
- 找了个梯子去Google,在官方论坛发现官方人员发布的一篇文章Builds are Stuck in Pending Status,然后发现居然这东西还需要有一个
drone/agent
才能真正执行任务 - 无奈
1
docker pull drone/agent
-
漫漫配(zhe)置(teng)路
- 放弃前两篇文章配置跟着官方文档的这篇和这篇重新配置
- 然后官方文档版本也不够新
- 最坑的是全部过程没有任何error信息,docker logs也没任何异常
- 还是看官方论坛中其他人的问题,开启了
DRONE_LOGS_TRACE=true
日志,瞬间一屏一屏的error闪瞎了我的眼 - 各种尝试后在docker-compose文件中指定了
extra_hosts
将gogs和drone server的域名指向内网ip - 这时候终于Pending可以结束了
- 然后发现一个新坑,执行的log中显示每次都需要重新获取git中文件,并且会暂存在一个叫
/drone/src
的目录 - 然后……这个clone每次需要将近一分钟时间去执行
- 映射了本地的目录给
drone/drone
和drone/agent
,但没有任何卵用,而且agent执行时候映射的/drone/src本地路径中并没有任何文件 - 这时候发现
docker images
看到多了一个叫drone/git
的image,猜测因为缺失git需要去自行下载一个git的docker实例来执行git命令,这个agent居然不自带git?? - 映射本地git
/usr/bin/git
给drone agent,然而没任何用处,好吧每次不就是要重新clone整个项目么,就整个clone好了(当然貌似Jenkins也这么干?)
-
新一轮尝(cai)试(keng)
- 尝试用前两篇文章的配置来发布文章到git pages
- 失败
- 换了一个新的docker imagesplugins/gh-pages
- 失败
- Google出来的其他images
- 失败
-
放弃 花了一晚上的时间,还是简单的通过原始的shell来实现半自动更新文章了事。
结论
有时间的话可以去把官方的文档重新翻一遍,但是有那时间我为啥不在其他服务器上找一个机器配置Jenkins呢???
社区和生态真的很重要,即便这个Drone可能性能、内存或者设计理念等等比Jenkins会更优秀,但应该在使用人数和生态完善起来之前不会再去尝试了。
日志很重要,头一次看到一个很重要的应用是把error默认吃掉的,而且agent执行job的时候,返回的错误信息也是各种模糊不清……
后记
如果再有可能,我应该会再尝试Github去年发布的新的CI工具:GitHub Actions,而不是这种受众小一些的产品。
Mark一下GitHub Actions的文章
文章作者 P.X.C
上次更新 2019-10-04
许可协议 不允许任何形式转载。