Drone官网上说自己是一个自服务的CI平台。Github上说Drone是一个建立在容器技术之上的持续交付系统。它使用一个简单的YAML构建文件来定义构建管道并在Docker容器中执行这些管道。
Odoo是一个开源企业应用套件,包括了CRM、电商、财务、仓库、零售、项目管理、MES等。用Docker部署Odoo,我们通常会将三方代码映射到宿主的目录,其中的优劣咱们不在本文中细说。但是在集群环境下,代码更新是通过构建一个新镜像的方式,所以CI/CD就显得很有必要。本文介绍使用Drone来构建Odoo镜像可能出现的问题的解决思路...


开源软件,文档对于官方和用户来讲,都是极其重要的!我们可以接受软件有BUG,但如果因为文档问题连门都进不去,就另当别论了。
Drone的官方文档结构挺清晰,从Server的安装到Runner的安装,再到使用、插件、参考,看起来不错。但真要用起来,尤其是跟我们一样的使用Contrainerd做容器的集群,问题就来了...插件到底用哪个?OOM问题如何解决?等等
客户1集群的特点是使用了CentOS。
Drone插件使用的是plugins/kaniko,因为我们知道自己的容器不是docker,也不想用dnd的方式,所以自然会选择Kaniko这种不需要依赖docker的镜像构建技术。但是使用最新版本会死在INFO[0332] Taking snapshot of full filesystem...signal: killed。这里注意版本是插件版本,这个插件用的kaniko的版本是多少还需要分辨一下。最终,我们使用1.0版本成功的完成了镜像的构建!


客户2集群的特点是使用了Ubuntu Server 22,除此之外没有什么别的差别。
Drone插件使用的是plugins/docker。按道理,我们应该使用Kaniko的,因为有成功经验嘛。但是,这个世间就是会有太多的“大肠包小肠”事件存在。在客户集群上,如果我们使用1.0版本,会遇到kaniko should only be run inside of a container, run with the --force flag if you are sure you want to continue。参照之前的“成功”经验,开始换版本。然而这并不是解决问题的办法。最终还是败给了docker in docker。
