docker
drone.io
OSS

OSS Drone CI の 構築方法

はじめに

DroneとはOSS版クラウド版で提供されているCIツールです。

download.png

今回は、OSS版のDroneを起動し、Github(Enterprise)と連携したので、その手順をまとめます。

ザクザク行けば15分程度でDrone起動とGithub連携認証までいけると思います。

※Docker自体の環境構築がお済みでない方は、DockerをMacにインストールする をご参考下さい。

また、@y_tsubukuが所属するユリシーズでは採用もしておりますので、良ければご覧ください :tada:

docker-compose.ymlを作成する :sparkles:

適当なディレクトリ(今回はdroneとします)にdocker-compose.ymlを作成します。

$ mkdir drone && cd drone
$ vi docker-compose.yml
docker-compose.yml
version: '2'

services:
  drone-server:
    image: drone/drone:0.7.3
    ports:
      - 80:8000
    volumes:
      - ./drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true # ユーザ登録を可能にする
      - DRONE_HOST=${DRONE_HOST} # 後述
      - DRONE_GITHUB=true # Githubを使用する
      - DRONE_GITHUB_URL=${DRONE_GITHUB_URL} # Github Enterpriseを使用している場合に設定する
      - DRONE_GITHUB_CLIENT=${DRONE_GITHUB_CLIENT} # 後述
      - DRONE_GITHUB_SECRET=${DRONE_GITHUB_SECRET} # 後述
      - DRONE_SECRET=${DRONE_SECRET} # 後述
      - DRONE_GITHUB_PRIVATE_MODE=true # Github Enterpriseをプライベートモードで動かしている場合はtrueにする

  drone-agent:
    image: drone/drone:0.7.3
    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_SECRET}

Droneを起動する :rocket:

$ docker-compose up

この状態で、http://localhost/ にアクセスすると…

スクリーンショット 2017-07-03 19.22.25.png

これで動作確認ができました :tada:

ngrokでローカルとグローバルを繋ぐ :map:

Githubとの連携にはOauth認証が必要です。
その際、コールバックのURLがグローバルでないとリクエストを受けれないため、
ngrokの使い方(windows, mac) - Qiita
を参考にngrokでグローバルなURLを取得してください。

環境変数を設定する :leaves:

docker-compose.ymlと同じディレクトリに.envを作成します。

.env
DRONE_GITHUB_URL=使用しているドメイン # ex) https://your-domain.com
DRONE_GITHUB_CLIENT=Githubで取得
DRONE_GITHUB_SECRET=Githubで取得
DRONE_SECRET=ランダムな文字列
DRONE_HOST=ngrokで取得したURL
  • DRONE_GITHUB_CLIENTとDRONE_GITHUB_SECRET
  • DRONE_SECRET
  • DRONE_HOST
    • Droneサーバのパブリックアドレス(ここではngrokで取得したURL)を設定
    • Githubのステータスを更新するのに使用される(参考)

Githubにアプリケーションを登録する際の参考

OAuth_Application_Settings.png

ログインする :computer:

https://{ngrokで割り当てられたホスト名}.ngrok.io/login
から、アプリケーションを認証すれば連携可能な状態になります :tada:

welcome___drone.png

終わりに

OSS版Droneを使用すれば、オンプレミス環境での運用も可能です。
Github Enterpriseや、閉じたネットワーク内でのCIとしての有効活用など色々と試して見てもらえればと思います。