AttsuBlog

ATTSU INC. Official Blog
0 comments

オープンソース版DroneでCI環境 Part1

タグ:, , ,

おはこんばんちは、萬屋です。

おはこんばんちはに反応した人は同世代か少し上の方ですね(*´ω`*)
「おはよう」「こんにちは」「こんばんは」を一つにまとめたという便利な挨拶。元ネタはアニメ、Dr.スランプアラレちゃんのエンディングで使われていたものです。
言葉の乱れとはよく言われていますが、日本人って昔(Dr.スランプはそんなに昔じゃないですが(^_^;))から略語が好きなのかなぁと思います。
「演説歌」→「演歌」「ゆかたびら」→「ゆかた」「ハンカチーフ」→「ハンカチ」「学生生徒」→「学徒」など昔から略語があふれていたのですね。

こういう日本語の歴史みたいなものを辿るのは楽しいものです(^^)

関係無いですが、写真は散歩中に見つけたポンプ式の井戸です。

前置きはここまでにして、今回はオープンソース版DroneでCI(継続的インテグレーション)環境を構築するお話です。

最近色々なホスティング型のCI環境がたくさん出ていますね。TravisCIやCircleCIなど使っている方も多いのではないでしょうか?
同じホスティング型にDrone.ioというのがありますが、実はこちらのサービス、オープンソース版も出しているのです。ソースはこちら
Go言語で書かれているあたり、新しさを感じますね〜(・∀・)GitHubやBitBucketなどとも連携ができます。

こちらのDrone、何が特徴かと言いますとDockerを利用してテストやビルドを行う点にあります。
Dockerとは簡単に言うとサーバ上にサーバOSとは隔離されたアプリケーション環境(コンテナと言います)を構築できる仮想化ソフトウェアです。
詳しい説明はDockerに関する記事が沢山あるのでそちらにお任せしますが、VMWareなどとくらべてディスク使用量が少なかったり起動が早かったり、いろいろ利点があります。

では実際に試してみましょう( ´∀`)CentOS7.0 + MariaDB + BitBucketという環境でやっていきます。ちなみにCentOS6だとDroneが入らないので注意です(知らずに最初入れようとしてハマってました……)

まずはDockerのインストールです。おなじみyumでどーんと入れちゃってください。


# インストール
$ sudo yum install docker
# 確認
$ systemctl list-unit-files --type=service | grep docker
docker.service                              disabled
# 自動起動をON
$ sudo systemctl enable docker.service
# サービススタート
$ sudo systemctl start docker.service
# 状態確認
$ systemctl status docker
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
   Active: active (running) since 火 2015-05-12 09:42:58 JST; 4s ago
     Docs: http://docs.docker.com
 Main PID: 1548 (docker)
   CGroup: /system.slice/docker.service
           └─1548 /usr/bin/docker -d --selinux-enabled --add-registry registry.access.redhat.com

はい、これだけです( ゚Д゚ノノ☆パチパチパチパチ
設定ファイルなどは /etc/sysconfig に入っています。

お次はDroneのインストールです。


$ wget downloads.drone.io/master/drone.rpm
$ sudo yum localinstall drone.rpm
$ systemctl list-unit-files --type=service | grep drone
drone.service                               disabled
$ sudo systemctl enable drone.service

これもおしまい( ゚Д゚ノノ☆パチパチパチパチ
楽ですね( ´∀`)

DroneはデフォルトだとSQLiteを使用しますが、MySQLやPostgreSQLでもいけます。
弊社にてRDBMSは基本MariaDBを使っているのでこちらで設定を行っていきます。事前にDrone用のDBも作ってください。
Droneの設定ファイルは /etc/drone/drone.toml です。こちらを以下のように編集します。


[server]
port=":8080"

[database]
driver="mysql"
datasource="DBのユーザ名:DBのパスワード@tcp(DBのホスト:DBのポート)/DB名?parseTime=true"

ポートは適宜変更してくださいね、Firewalldでポートを開けるのも忘れずに(・∀・;)

Droneを起動したい気持ちはわかりますが、先にBitBucketの設定を行います。
まずはBitBucketのアカウント管理画面へ行き、「OAuth」を開いてください。その画面で「コンシューマキーを追加」をクリックです。

bitbucket1

名前、説明、URLを適宜入れて保存。

bitbucket2

そうすると「鍵」と「Secret」が発行されます。

bitbucket3

あ、名前がDron用になってる(~_~;)ごめんなさい(´Д`|||)

さて、この「鍵」と「Secret」をメモって再度 drone.toml を編集します。


[bitbucket]
client="<先ほど発行された「鍵」>"
secret="<先ほど発行された「Secret」>"
open=true

これで保存です。

さぁお待たせしました!Droneを起動しちゃってください(゚∀゚)


$ sudo systemctl start drone.service
$ systemctl status drone.service
drone.service - Drone
   Loaded: loaded (/usr/lib/systemd/system/drone.service; enabled)
   Active: active (running) since 金 2015-05-17 10:15:04 JST; 4s ago
 Main PID: 30887 (droned)
   CGroup: /system.slice/drone.service
           └─30887 /usr/local/bin/droned --config=/etc/drone/drone.toml

ではブラウザでhttp://Droneのホスト名:Droneのポート/アクセス!

drone1

で、でたーDrone奴〜!!

これで「BitBucket」のボタンを押すとBitBucketのログイン画面が出るのでログインしてください。

Dashboardが出ますが最初は殺風景です……右上の「sync」を押してください。

drone2

これでBitBucketで作成されたリポジトリが表示されたはずです、お疲れ様でした……

導入まででここまで来てしまったので、例によって続きます(;゚∀゚)=3
次回は別で連載しているClojureとArangoDBのテストケースで実際にDroneを動かしてみたいと思います!

夜はまだまだ冷えるので風邪など引かないように気をつけてくださいね(´・ω・`)


Leave A Comment