2014年10月20日月曜日

ニフティクラウド上のCentOSでdroneが動くか試してみた

概要

droneはGo言語で書かれたCI・CDツールでJenkinsみたいなやつです
今回はニフティクラウド上のCentOSで動作するか試してみました

環境準備

  • CentOS 6.4 64bit
  • docker 1.1.2
  • drone 0.3-v
  • golang 1.3.3

インストール

各種インストールしていきます

GLIBC2.14のインストール

droneの動作にはGLIBCの2.14が必要になります
yumでインストールできるGLIBCのバージョンが2.12でダメなので公式のソースを持ってきてソースインストールします
makeでのビルド時間が非常に長いです

yum -y groupinstall "Development Tools"
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.1.tar.gz
tar zvxf glibc-2.14.1.tar.gz
mkdir build
cd build
../configure --prefix=/usr/glibc
make
make install

cd /usr/glibc/lib/
cp libc-2.14.1.so /lib64/
ln -nfs libc-2.14.1.so libc.so.6
ldconfig

で以下のような感じになっていればOKです

[root@localhost lib64]# pwd
/lib64
[root@localhost lib64]# ls -l libc.so.6 
lrwxrwxrwx 1 root root 14 Oct 20 00:22 libc.so.6 -> libc-2.14.1.so

dockerのインストール

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install docker-io

インストールが完了したらservice docker startでもして起動できることを確認してください

yum install時に以下のようなエラーが出る場合はepel.repoを編集してください

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

vim /etc/yum.repos.d/epel.repo

#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

golangのインストール

yum -y install golang

golangはこれだけ

droneのインストール

wget downloads.drone.io/master/drone.rpm
sudo yum localinstall drone.rpm

droneはデフォルトでSQLiteを利用します
MySQLやPostgresを使う方法もあるようです
その場合は/etc/drone/drone.tomlを編集することで実現できるようです

droneもrpmでインストールできれば完了です

起動

docker, golang, droneがインストールできたら早速起動してみましょう

droned -config="/etc/drone/drone.toml"

で起動できます
ターミナルで起動すると標準出力には何も表示されませんが、起動しています
80番でLISTENしているので
http://hostname/にアクセスしてみましょう
まだ使うことはできませんが、起動していることは確認できると思います

セットアップ

http://drone.readthedocs.org/en/latest/setup.html
を元にセットアップしていきます

Githubにアプリを作成

droneと連携するためのアプリを1つ作成します
https://github.com/settings/applications
にアクセスし「Register new application」からアプリを作成します
以下のような感じで作成します
create_github_app.png
黒塗りしている部分はDroneが起動しているホストのIPやホスト名を入力してください

アプリの作成が完了したらアプリの詳細画面に戻りClient IDClient Secretをメモしておきましょう

そして、drone.tomlを編集します
vim /etc/drone/drone.toml

[github]
client="メモしておいたClient IDを入力"
secret="メモしておいたClient Secretを入力"

の部分を記載してdornedを再起動してください

認証

再度http://hostname/にアクセスするとGithubのアカウントを使って認証できるようになっています
enter image description here

Githubというボタンを押下しアプリからの認証を許可して、自分のGithubアカウントのパスワードを入力するとリポジトリが同期してdrone上に表示されます
enter image description here
※この辺りでうまくGithubのOAuthが発動しない場合は、構築したインスタンスのACL、FWの設定周りを確認してみてください

あとは、droneと連携したいリポジトリをアクティブにすればOKです
droneと連携してCIできるようにするには、travis.ciみたいにリポジトリのルートに.drone.ymlというファイルがないとダメなのでアクティブにする場合はファイルをあらかじめpushしておいてください

また、今回はGithubと連携しましたが、設定ファイルを見るとGithub_enterpriseやbitBucketなどとも連携できるので同じようにアプリを作って認証できるようにしてやれば、使えそうです

終わりに

結構長くなりましたが、今回の紹介は以上です
とりあえずCentOS上でも動作させることはできました
特につまるところはなかったですが、つまった場合はdronedでDebugログを出すといいと思います

参考リンク

0 件のコメント:

コメントを投稿