从 Drone 0.8 升级到 1.0

分享一下 Drone 升级到 1.0 后发现的新特性或者坑。

Runner

1.0 以前的时候有过一阵需要部署 drone-agent 的版本,后来 drone 又可以独立运行。直到现在 1.0 版本drone 又要求了 Runner,当然如果你还是使用 Docker 部署,那么配置运行 drone-runner-docker 就好。

Trigger, Condition

现在的条件逻辑不一样了:

Note that all triggers must evaluate to true when combining multiple triggers.

也就是每个 trigger 的执行结果都要为 true 时才能触发,这个改到导致的结果是不能像以前那样同时配置 branch 和 event tag 的条件了,官方也做了解释:

Note that you cannot use branch triggers with tags. A tag is not associated with the source branch from which it was created.

就是说 tag 创建以后跟分支就没有关系了不能同时触发 branch 和 event trigger。

不过也有解决方法,通过配置 Reference trigger 可以同时满足分支推送或 tag 推送,如下:

1
2
3
4
trigger:
ref:
- refs/heads/develop
- refs/tags/*

同理 Steps 中的 When 关键词的逻辑同上

Orgsecret

上个版本的苦衷终于得到解决,每开一个项目都要配置 secret 只有企业版才有全局 secret ,现在 1.0 可以添加组织级别的 secret 了,不过 ui 中没有体现,需要用 drone-cli 配置:

1
drone orgsecret add ined rsync_key @/home/admin/.ssh/id_rsa

添加 orgsecret 后同 org 下的仓库部署就一劳永逸了。

Gitea

和 Gitea 的连接方式变了,通过在 gitea 上创建 application 并将 clientId, clientSecret 配置到 drone 中授权连接。

pull

每一步骤可以增加这个参数来跳过每次触发时拉取最新镜像的操作,否则每次任务可能会非常耗时:

1
2
3
pull: never
pull: if-not-exists
pull: always // 默认为 always

.drone.yml

配置文件的整体结构调整也很大,比如 Volume, Steps, 插件 settings 等等。