railsアプリCI環境の構築。スマフォアプリのサーバーサイド側のプログラムをCIに適応させます。
構成は
- jenkins
- docker
- chef
- rails
- slack
- bot
です。
やりたいことは
gitでコミットしたソースをjenkinsで取得 → dockerでコンテナを立ち上げ → railsのテストを実行
です。
slackやbotを使った通知は可能なら設定します。まずは、上記が最優先。
では、開始します。
vagrantでdockerを学習
まずはvagrant上で構築。CoreOS使います。
// vagrantのCoreOsを取得 git clone https://github.com/coreos/coreos-vagrant.git cd coreos-vagrant
vagrantを起動してログインする
// 起動 vagrant up // ログイン vagrant ssh
ログインしたらdockerのバージョンを確認する
docker version Client version: 1.3.2 Client API version: 1.15 Go version (client): go1.3.2 Git commit (client): 50b8feb OS/Arch (client): linux/amd64 Server version: 1.3.2 Server API version: 1.15 Go version (server): go1.3.2 Git commit (server): 50b8feb
dockerファイルを作成する
vi Dockerfile FROM centos MAINTAINER EdyENV CHEFHOME /home/core/chef-repo ADD chef-repo /home/core/chef-repo RUN curl -L http://www.opscode.com/chef/install.sh | bash RUN cd ${CHEFHOME} # install chef dk RUN rpm -ivh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.3.6-1.x86_64.rpm # temporary setting path RUN export PATH=/opt/chefdk/embedded/bin:$PATH # knife install RUN chef gem install knife-solo
内容の詳細は以下に記述
- ENV:環境変数をセット
- ADD:コンテナ外のファイルをコンテナ内に配置
- RUN:ビルドステップ内で実行されるコマンド
dockerをビルド
// -i → コンテナーの標準入力を開く。 // -t → tty(端末デバイス)を確保する。/bin/bashなどでコンテナーを操作する際に指定 docker build -t test .
Dockerコンテナーの起動してchefがinstallされていることを確認
docker run -t -i test /bin/bash chef -v Chef Development Kit Version: 0.3.6 knife -v Chef: 11.18.0
うまくできているのを確認できたので、commitする
docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES af4026699f4f test:latest "/bin/bash" 3 minutes ago Exited (0) 2 minutes ago drunk_mcclintock // コミット docker commit compassionate_shockley newci
色々と作成した不要なDockerイメージを削除
docker images // something // 削除 docker rmi 8efe422e6104
使用中のコンテナは削除できないので、注意してください。
以上
PS : まだdockerに慣れていないので間違えている可能性があるので注意してください。
0 件のコメント:
コメントを投稿