techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

Drone.io(OSS版)でGithubのプロジェクトをCIしたい

Drone.io(OSS版)でCIをする

Githubのプロジェクトなら、その他のCIサービスが利用できると思うけれど、Gitlab使ってるからみたいな環境に向けて。

GithubにOAuth Application登録をしておく

インストール中に必要になるので、事前に設定しておきましょう。 GithubのUserSettingsにアクセスし、 Register New Applicationから必要な情報を入力していきます。

f:id:kobashin__G:20160407082006p:plain

Application Name : 任意の名前 Homepage URL: Droneを配置するURL Apllication description: 任意の説明書き Authorization callback URL: <上記URL>/authorize

作成が完了すると、Client IDClient Secretが表示されますのでコピーしておきましょう。

droneのインストール

今回はDigitalOceanにUbuntuのサーバーを立てて作ってみましたが、どこでも大差ないでしょう。

はじめに、dockerをインストールします。 docker imageで動作させずにdebパッケージをインストールする方法等もありますが、現在(ver0.4)ではこの方法が主流のようです。

$ sudo wget -qO- https://get.docker.com/ | sh

dockerのインストール後に、droneのイメージをpullしてきましょう。 インストールが出来たら、imagesの確認もしておきましょう。

$ sudo docker pull drone/drone:0.4
$ sudo docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
drone/drone            0.4                 5a04143aa544        2 days ago          22.31 MB

続いて、droneのコンフィグファイルを作成します。 公式では /etc/drone/dronerc に作成することを推奨していますが、別にどこでも構いません。 記入内容の為に、GithubにOAuth Application登録したClient IDClient Secretが必要になります。

$ vim /etc/drone/dronerc
REMOTE_DRIVER=github
REMOTE_CONFIG=https://github.com?client_id=<作成したID>&client_secret=<作成したSecret>

その他、Databaseの設定など様々な設定が行えます。 詳細はこちらとかこちらを参照ください。

最後にdockerイメージを立ち上げます。 env-fileオプションに作成したdronercファイルを設定しています。

docker run \
--volume /var/lib/drone:/var/lib/drone \
--volume /var/run/docker.sock:/var/run/docker.sock \
--env-file /etc/drone/dronerc \
--restart=always \
--publish=80:8000 \
--detach=true \
--name=drone drone/drone:0.4

起動後にサーバーの80番ポートにアクセスすると、以下ページが表示されていれば成功です。

f:id:kobashin__G:20160407083902p:plain

ログインしてもろもろの設定を行う

前段のGithub OAuthの設定が上手く済んでいれば、Loginボタンを押下すればGithubのOAuthのページが表示されログインできます。 ログイン後は以下のページが表示されます。

f:id:kobashin__G:20160407084544p:plain

AVAILABLE REPOSITORIESのタブからCI対象のプロジェクトを選択し、ACTIVATE NOWを実行するとACTIVE REPOSITORIESの欄に表示されるようになります。 レポジトリがACTIVEになっている状態で、.drone.ymlファイルがプロジェクトのルートに配置したpushを行うとymlで指定したビルドを実行することができます。

.drone.ymlの設定

最後にymlの設定を行います。 詳細な設定パラメータは本家のページが参考になります。

imagesには公開されているDockerイメージを指定できます。(もちろん自分でビルドしたものも指定可能です。) 巷に公開されているAndroid SDKの入っているよさげなものを持ってくるとよいでしょう。 今回はcommandにdebug buildを指定したのみですが、その他にもオプションを駆使して便利な環境を作っていけます。

参考程度に利用した .drone.yml は以下の通りです。

build:
  image: koba-local/android
  command:
    - ./gradlew assembleDebug

f:id:kobashin__G:20160407090407p:plain