Edited at

OSS Drone CI の 構築方法

More than 1 year has passed since last update.


はじめに

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としての有効活用など色々と試して見てもらえればと思います。