Open annProg opened 5 years ago
尝试了drone ci,
存在的问题
.drone.yml
?感觉Makefile
不可缺少(保留Makefile
,不使用CI yaml配置),CI
基于Makefile
直接执行 make build-docker
, make push
,make up
比较好,这样可以不绑定特定CI
Makefile
里build镜像的指令写死了并且写错了,可能会覆盖其他项目的镜像,怎么处理这种情况?Makefile
,直接执行docker build
,取代码仓库命名空间和repo名作为镜像名称,这样就要求代码仓库的命名空间需要被管理起来,要和cmdb
业务线保持一致,否则会比较乱(如何管理?)Makefile
,如果项目有多个Dockerfile
,需要编译多个镜像,咋整?(还是得有个配置或者Makefile
)Makefile
,如何检测Makefile
是否符合要求?(比如要求必须定义 REGISTRY ?= xxx.com
,IMAGE ?= xxx
等,这样可以支持CI通过环境变量重定义这些值)(git remote get-url origin |awk -F ':' '{print $2}' |sed 's/.git$//g'
获取代码仓库 命名空间/repo名称
)Trusted
,普通用户没有权限,如何处理?drone的docker插件是否能解决此问题(此插件默认向docker hub提交镜像,有安全隐患,最好实现用户免配置,由CI用指定的账号提交至指定registry)?调研 drone插件开发方法,开发一种 自动生成 .drone.yml
的插件,只需要active代码仓库,剩下的事情就是自动生成.drone.yml
,然后依次执行
如果有多个镜像需要制作
build-docker: build-php5 build-php7
build-php5:
docker build ...
build-php7:
docker build ...
.drone.yml
,设置secret,如果想要提供一个默认的账号密码用于push镜像,还可能存在密码暴漏的问题(commands指令可以执行任意命令)drone ci 存在的安全问题
plugins/docker
插件,加上commands:
,执行curl http://xxx.com/ci/$PLUGIN_PASSWD
,会暴漏密码为了简单的任务去承担这些风险可能有些不值得
docker push
镜像设置默认的账号密码,避免每个用户输入密码的麻烦settings
和commands
不能同时存在,否则报错。只存在 settings
时认为是插件,注入 pre defined plugin setting.docker push
,就无法信任用户提供的 repo 名称,如果用户疏忽或者故意写错,会有镜像被覆盖。用个人账号,并且 docker registry 进行了权限限制的时候,可避免此情况。(可能的解决方案,不提供 repo 设置,docker registry repo和和据代码仓库的 repo 名 保持一致)接上条,考虑一个仓库要做多个镜像的问题,不提供repo设置,则无法实现。
因此,综合考虑,drone目前的实现算是最好的,不需要在改动了。
gitlab 8.6.4
版本集成drone时报错如下
Login Failed. invalid character '<' looking for beginning of value
参考:https://www.58jb.com/html/drone-configure-gitlab.html
需要升级到11.x
版本
调研jenkens
或者结合itop自行实现
itop端设置是否使用ci, ci-bot抓取启用ci的app的repo配置, 监视repo更新, 拉取新代码依次 make build-docker, make push 结果写入itop(类似eveny) 执行make test做自动化测试
ci-bot不仅要更新cmdb,还要发邮件通知和报表