2019独角兽企业重金招聘Python工程师标准>>>
使用 Drone 构建 Coding 项目
Drone 是一个轻量级的持续集成工具。它具备许多现代持续集成工具的特性:轻巧(Docker 镜像不到 10M)、部署方便(docker-compose 一键部署)、通过 YAML 文件描述构建过程、内置支持主流的代码托管平台、使用 Docker 容器执行构建。 下面介绍如何使用 Drone 构建 Coding(平台版/企业版)项目,实现开发、测试、部署的自动化。(介绍中使用的是 Coding 定制的 Drone,因为 Coding 的小伙伴们总是希望每时每刻都能见到可爱的洋葱猴,这样打起码来特精神!^_^)
1、新建一个 OAuth 应用。『应用主页』填写自己部署的 Drone 所在主机的 URL,如:https://example.com
;『回调地址』填写 Drone 的回调地址,一般为 Drone 主机加上/authorize
,如:https://example.com/authorize
。还可以给这个应用添加醒目的图标。最后点『创建应用』。
2、进入刚才创建的应用,接下来要用到上面的『Client ID』和『Client Secret』。
3、在要部署 Drone 的 Linux 主机里安装好 Docker 和 Docker-Compose,然后创建名为docker-compose.yml
的 Docker-Compose 配置文件,内容如下:
version: '2'services:drone-server:image: houseboy/drone:20170512.1restart: alwaysvolumes: - ./drone:/var/lib/drone/:rwenvironment:- 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.1command: agentrestart: alwaysdepends_on: [ drone-server ]volumes: - /var/run/docker.sock:/var/run/docker.sockenvironment:- 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 配置中的其他内容请根据实际情况填写。
4、在创建 docker-compose.yml
的目录里执行 docker-compose up
,若上一步的配置正确,就能看到 Drone 启动输出的日志:
5、用浏览器打开 Drone 所在主机的 URL
6、点击登录,跳转至 Coding 的登录页面。如果已经登录 Coding,则会看到『应用授权』页面,这时点击『授权』
7、若授权成功,即会跳转回 Drone 的首页,并在右上角看到已登录用户的 Coding 头像。
8、点击头像,选择『用户设置』,便可看到项目列表。
9、点击对应项目右侧的开关即可开启和关闭该项目的 Drone 持续集成。
10、再次回到『仪表盘』即可以看到已开启了 Drone 持续集成的项目。
11、向已开启 Drone 持续集成的仓库推送代码,即可触发构建过程。
上述介绍中用到集成了 Coding 的 Drone 版本源码发布在 https://github.com/Coding/drone,同时已经向源仓库 https://github.com/drone/drone 提交了 PR,代码正在审核中。同时欢迎有兴趣的码士提交 PR 助力完善 Drone 对 Coding 的集成支持。
有关 Drone 的更多使用帮助请查看官方文档:http://docs.drone.io/