はじめに
DroneとはOSS版とクラウド版で提供されているCIツールです。
今回は、OSS版のDroneを起動し、Github(Enterprise)と連携したので、その手順をまとめます。
ザクザク行けば15分程度でDrone起動とGithub連携認証までいけると思います。
※Docker自体の環境構築がお済みでない方は、DockerをMacにインストールする をご参考下さい。
また、@y_tsubukuが開発するyaritori - メール共有システムも、良ければご覧ください
docker-compose.ymlを作成する
適当なディレクトリ(今回はdrone
とします)にdocker-compose.yml
を作成します。
$ mkdir drone && cd drone
$ vi 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を起動する
$ docker-compose up
この状態で、http://localhost/ にアクセスすると…
これで動作確認ができました
ngrokでローカルとグローバルを繋ぐ
Githubとの連携にはOauth認証が必要です。
その際、コールバックのURLがグローバルでないとリクエストを受けれないため、
ngrokの使い方(windows, mac) - Qiita
を参考にngrokでグローバルなURLを取得してください。
環境変数を設定する
docker-compose.yml
と同じディレクトリに.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
- https://github.com/settings/developers から取得
- (enterprise版をお使いの場合はFQDNを変えてアクセス)
- DRONE_SECRET
- ランダムな文字列。このあたりを参考に生成
- DRONE_HOST
- Droneサーバのパブリックアドレス(ここではngrokで取得したURL)を設定
- Githubのステータスを更新するのに使用される(参考)
Githubにアプリケーションを登録する際の参考
ログインする
https://{ngrokで割り当てられたホスト名}.ngrok.io/login
から、アプリケーションを認証すれば連携可能な状態になります
終わりに
OSS版Droneを使用すれば、オンプレミス環境での運用も可能です。
Github Enterpriseや、閉じたネットワーク内でのCIとしての有効活用など色々と試して見てもらえればと思います。