Drone.io(OSS版)でGithubのプロジェクトをCIしたい
Drone.io(OSS版)でCIをする
Githubのプロジェクトなら、その他のCIサービスが利用できると思うけれど、Gitlab使ってるからみたいな環境に向けて。
GithubにOAuth Application登録をしておく
インストール中に必要になるので、事前に設定しておきましょう。 GithubのUserSettingsにアクセスし、 Register New Applicationから必要な情報を入力していきます。
Application Name : 任意の名前 Homepage URL: Droneを配置するURL Apllication description: 任意の説明書き Authorization callback URL: <上記URL>/authorize
作成が完了すると、Client ID
とClient 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 ID
とClient 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番ポートにアクセスすると、以下ページが表示されていれば成功です。
ログインしてもろもろの設定を行う
前段のGithub OAuthの設定が上手く済んでいれば、Loginボタンを押下すればGithubのOAuthのページが表示されログインできます。 ログイン後は以下のページが表示されます。
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