使用 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.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-serverdrone-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/