Drone 是一个轻量级的持续集成工具。它具有许多现代持续集成工具的特性:轻巧(Docker 镜像不到 10M)、部署方便(docker-compose 一键部署)、经过 YAML 文件描述构建过程、内置支持主流的代码托管平台、使用 Docker 容器执行构建。 下面介绍如何使用 Drone 构建 Coding(平台版/企业版)项目,实现开发、测试、部署的自动化。(介绍中使用的是 Coding 定制的 Drone,由于 Coding 的小伙伴们老是但愿每时每刻都能见到可爱的洋葱猴,这样打起码来特精神!^_^)git
一、新建一个 OAuth 应用。『应用主页』填写本身部署的 Drone 所在主机的 URL,如:https://example.com
;『回调地址』填写 Drone 的回调地址,通常为 Drone 主机加上/authorize
,如:https://example.com/authorize
。还能够给这个应用添加醒目的图标。最后点『建立应用』。 github
二、进入刚才建立的应用,接下来要用到上面的『Client ID』和『Client Secret』。 docker
三、在要部署 Drone 的 Linux 主机里安装好 Docker 和 Docker-Compose,而后建立名为docker-compose.yml
的 Docker-Compose 配置文件,内容以下:浏览器
version: '2' services: drone-server: image: houseboy/drone:20170512.1 restart: always volumes: - ./drone:/var/lib/drone/:rw environment: - DRONE_OPEN=true - DRONE_CODING=true - DRONE_CODING_CLIENT=<应用的 Client ID> - DRONE_CODING_SECRET=<应用的 Client Secret> - DRONE_CODING_URL=<Coding 主页> - DRONE_CODING_GIT_MACHINE=<Coding Git 主机> - DRONE_SECRET=<drone-server 和 drone-agent 的通讯密钥> ports: - "80:8000" drone-agent: image: houseboy/drone:20170512.1 command: agent restart: always depends_on: [ drone-server ] volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DRONE_SERVER=ws://drone-server:8000/ws/broker - DRONE_SECRET=<drone-server 和 drone-agent 的通讯密钥>
主要环境变量的说明:工具
DRONE_CODING
要为 true
。DRONE_CODING_CLIENT
填写上一步获得的『Client ID』。DRONE_CODING_SECRET
填写上一步获得的『Client Secret』。DRONE_CODING_URL
为 Coding 主页。平台版填 https://coding.net
;企业版填企业对应的https://*.coding.net
子域名的 URL。DRONE_CODING_GIT_MACHINE
为 Coding Git 主机。平台版填 git.coding.net
;企业版填 e.coding.net
。DRONE_SECRET
为随机字符串,是用于 drone-server
和 drone-agent
之间的通讯,只要两个都填写同样值便可。docker-compose 配置中的其余内容请根据实际状况填写。测试
四、在建立 docker-compose.yml
的目录里执行 docker-compose up
,若上一步的配置正确,就能看到 Drone 启动输出的日志: spa
五、用浏览器打开 Drone 所在主机的 URL .net
六、点击登陆,跳转至 Coding 的登陆页面。若是已经登陆 Coding,则会看到『应用受权』页面,这时点击『受权』 rest
七、若受权成功,即会跳转回 Drone 的首页,并在右上角看到已登陆用户的 Coding 头像。 日志
八、点击头像,选择『用户设置』,即可看到项目列表。
九、点击对应项目右侧的开关便可开启和关闭该项目的 Drone 持续集成。
十、再次回到『仪表盘』便可以看到已开启了 Drone 持续集成的项目。
十一、向已开启 Drone 持续集成的仓库推送代码,便可触发构建过程。
上述介绍中用到集成了 Coding 的 Drone 版本源码发布在 https://github.com/Coding/drone,同时已经向源仓库 https://github.com/drone/drone 提交了 PR,代码正在审核中。同时欢迎有兴趣的码士提交 PR 助力完善 Drone 对 Coding 的集成支持。
有关 Drone 的更多使用帮助请查看官方文档:http://docs.drone.io/