2015年9月15日火曜日

2015年WEBプログラマー向け開発環境の構築方法。Ansible、Virtualbox、Vagrant、boxファイル、DockerをLinux Mint(Ubuntuベース)にインストールする。

■勉強の為に複数のURLより引用させて頂きました。感謝致します。

1.
開発環境は、基本的にWindowsよりUbuntuベースのLinux(私は、ZorinOS10)をインストールして
デスクトップなら、32bitがオススメ。WindowsのOfficeをインストールして使う為、
32bitどうしの方が互換性を取るのが比較的簡単だからです。
AnsibleとVagrantで開発環境を構築する。
http://knowledge.sakura.ad.jp/tech/2882/ (edited)

AnsibleをUbuntuにインストール
http://www.creationline.com/lab/6628
VirtualboxをUbuntuにインストール
http://linuxcom.info/virtualbox-on-ubuntu.html
$ sudo apt-get install virtualbox
VagrantをUbuntuインストールする。
https://www.vagrantup.com/downloads.html
box ファイルをUbuntuにインストール
http://www.webcyou.com/?p=4632
DockerをUbuntuインストールする。
http://qiita.com/koara-local/items/ee887bab8c7186d00a88

AnsibleでDockerのコンテナを構築する今回は Vagrant 内に Docker 環境を構築することにします。http://qiita.com/nmatayoshi/items/58183cba4d98a151b806

6.  Bitbucket における Docker 自動ビルドを発表

http://japan.blogs.atlassian.com/2014/06/docker-automated-builds-bitbucket/
Docker の自動ビルドが Bitbucket に統合されました!1 つの Dockerfile で、各 CI 実行用の新規環境が手に入ります。
だそうです。



継続的インテグレーション(
CIとは、主にWeb開発のAUTOデプロイ、自動TESTなどによる、開発の効率化の事のようです。

Werckerがもし有料になったり、サービスが無くなったら、Magnum CIに乗り換えようかな。
------------
werckerとMagnum CIは殆ど同じ様な感じですが、 共通な点として
無料でGitHub/Bitbucketのレポジトリを無制限に使える。プライベートレポジトリも無制限。
無制限で共同作業者を加えられる。
ビルドの回数も無制限。
クレジットカードの登録の必要なし。

7.■WerckerのDockerバックエンドを使ってCentOS向けCIをするには
http://www.clear-code.com/blog/2015/7/1.html


8. ■werckerでDockerfileのテストをする

http://qiita.com/mookjp/items/0c6ba3b57648e2ae59bd

■werckerでdocker build後にdocker runでテスト実行する

はじめはDockerfile内でテストコマンドを実行していたのですが、開発中に気軽にコンテナをビルドしようとするとテストに時間がかかって煩わしくなりました。
最終的に「werckerでdocker build後にdocker runでテスト実行する」という方針にしてみたところ、まあまあいい感じに運用できています。
Dockerfile内でテスト実行する
Dockerfileというものを知ったときには、「この中でテストも全部してしまえば、CI環境でいろいろやらなくてもDockerfile単体で完結する!」と思いつき、実際にDockerfileの中でテストを走らせていたりもしました。
しかし、実際にDockerfileを作ってみると、必要なライブラリやソフトウェアをインストールするだけでそれなりに時間がかかります。ここにテストの実行時間も加わると、やる気を削がれます。
また、開発中にDockerfileでADDしているモジュールを修正して試しに動かしてみようとすると、毎回ビルドとテストが走って待ちの時間が入るのでリズムを崩されてしまいます。
werckerでdocker build後にdocker runでテスト実行する
そこでDockerfileからテスト実行コマンドを取り除き、wercker.ymlを以下のように書き換えてみました。
wercker.yml
box: wercker-labs/docker
build:
 steps:
   - script:
       name: docker build
       code: docker build -t pool ./docker/pool
   - script:
       name: run system test
       # 実際には他にオプションを与えているのですが、見やすくするため省略します
       code: |
           sudo docker run -workdir="/tmp/builder" pool  /opt/ruby-2.1.2/bin/bundle exec rspec --tag system_test
1度ビルドしたイメージでコンテナを起動させ、--workdirオプションでテスト対象ディレクトリに移動、コマンドにテスト実行コマンドを指定することでテスト実行しています。
werckerでビルドされたイメージは次のscriptコマンド実行時も保持されているため、
docker build -t <イメージ名>でテスト対象イメージを作成
イメージ作成後にdokcer run <イメージ名> <テスト実行コマンド>でテスト
とすることによって、手元でコンテナを立ち上げる分には長時間かかるテストを実行せずにすみます。
werckerはブランチをプッシュすると自動でビルドを実行してくれて、Pull Requestにも実行結果が表示されるため、レビュー時には結合テストも通っているかが確認できます。
結合テスト環境としてのDockerコンテナについて
werckerに限らず、ビルドパイプライン中で「docker build後にdocker runでテスト実行する」というやり方は結合テストを実行する場合に便利ではないかと思います。
テストを実行する際には、実行環境の状態が等しいというのが理想ですが、毎回AWSのインスタンス+プロビジョニングツールなどの組み合わせでまっさらな環境を用意しているとテスト実行に時間がかかってしまいます。
しかし、テスト実行環境をDockerイメージとしてビルドした後にrunコマンドでテスト実行コマンドを与えてあげれば、毎回同じ状態の環境に対して異なるテストを実行してあげることができます。
結合テストの自動テストをやる際には、このやり方を試してみたいなと思っています。
この投稿は 株式会社リクルートテクノロジーズ Advent Calendar 2014 の 11日目の記事です。
10日目の記事:http://qiita.com/advent-calendar/2014/recruit-technologies#day-10 前の記事
12日目の記事:http://qiita.com/ainoya/items/6c976a817f986dd0d223 Docker registryのwebビューワTankerの紹介
Qiita
[株式会社リクルートテクノロジーズ Advent Calendar 2014](http://qiita.com/advent-calendar/2014/recruit-technologies)の11日目の記事です。 werc...



0 コメント:

コメントを投稿