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

相关文章