yusukesasaki-com / Monaka

Other
7 stars 0 forks source link

CIについて #10

Open yusukesasaki-com opened 8 years ago

yusukesasaki-com commented 8 years ago

CIについて理解し、導入する。

yusukesasaki-com commented 8 years ago

CIとは

https://ja.wikipedia.org/wiki/%E7%B6%99%E7%B6%9A%E7%9A%84%E3%82%A4%E3%83%B3%E3%83%86%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3

継続的インテグレーション、CI(英: continuous integration)とは、主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のことである。エクストリーム・プログラミング (XP) のプラクティスの一つで、狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する[1]。特に、1990年代後半以降の開発においては、継続的インテグレーションをサポートするソフトウェアを使用する傾向が強まってきた。

yusukesasaki-com commented 8 years ago

継続的インテグレーションとは

http://www.slideshare.net/pfi/ss-12878066

・インテグレーション   ・複数のコンポーネントで構成されるソフトウェアが一つのシステム として機能することを検証すること ・継続的?   ・変更がある度に!


・継続的インテグレーションの価値

・検証コストの削減   ・ビルドの自動化による恩恵 ・常にデプロイ可能なソフトウェアを提供できる   ・迅速なフィードバックによりバグの混入∼修正まで短時間で   ・失敗したら最優先で直す ・修正/機能追加を自信を持って行える   ・既存のテストを壊してないかすぐ分かる ↓

品質の高いソフトウェアへ


・コンポーネントとは http://e-words.jp/w/%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88.html

ITの分野では機器やソフトウェア、システムの構成する部品や要素などのことを意味する。

yusukesasaki-com commented 8 years ago

ビルドとは

http://qiita.com/Mura-Mi/items/225825cc3715dc04d923

「ビルド」という言葉の意味は文脈に依って多岐にわたるのですが,本来的な意味は「要求された実行環境で動作できる形式にアプリケーションやライブラリを組み立てる」ことです.


・ビルドツール

・プロダクトによって実行出来ることは変わってくるのですが,だいたい以下の様なことを可能としています.   ・ビルドを構成するタスクを定義し,それを実行する.例えば以下の様なタスクを行う.     ・ソースファイルのコンパイル     ・テストや静的解析の実行,およびその結果のレポート出力     ・リリース用アプリケーションイメージの構築   ・ビルドを構成するタスク間の依存関係を管理し,そのタスクのインプットとなる上流タスクの結果やソースコードなどの変更有無からタスクの実行有無を判断する.   ・ライブラリの依存関係を管理する.(これを行うことに特化した「パッケージマネージャー」というカテゴリに属するツールもあります.有名なのは JavaScript の npm や,Ruby の RubyGems など.)   ・タスクのインプットとなるファイルを監視し,変更があった場合に自動的にタスクを実行する. (Grunt における watch や,Gradle における continuous build など)


・コンパイルとは http://e-words.jp/w/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB.html

コンパイルとは、プログラミング言語で書かれたコンピュータプログラム(ソースコード)を解析し、コンピュータが直接実行可能な形式のプログラム(オブジェクトコード)に変換すること。


・ビルドの種類 http://www.slideshare.net/pfi/ss-12878066

・種類   ・プライベートビルド   ・インテグレーションビルド   ・リリースビルド ・実行される場所や内容が異なる   ・迅速なフィードバックを得られるようにするため


・プライベートビルド

・開発環境でのビルド   ・リポジトリに変更をコミットする前に実行する   ・個人(開発者)向け ・ビルドの範囲   ・コンパイル   ・軽量なテスト(単体テスト) ・実行時間の目安   ・10分以内


・インテグレーションビルド

・インテグレーションサーバーでのビルド   ・開発チーム向け ・分類   ・コミットビルド   ・2次ビルド

・コミットビルド   ・リポジトリに変更がコミットされる度に実行される   ・ビルドの範囲     ・コンパイル     ・軽量なテスト(単体テスト)   ・実行時間の目安     ・10分以内

・2次ビルド   ・コミットビルドが成功した後に実行される(場合によって日次/週次)   ・ビルドの種類     ・コンパイル     ・軽量なテスト(単体テスト)     ・重量なテスト(総合テスト/システムテスト/受け入れテスト)     ・インスペクション     ・デプロイ   ・実行時間の目安     ・10分〜数時間以内


・リリースビルド

・リリース前に行うビルド   ・ユーザ(顧客)向け ・ビルド範囲   ・コンパイル   ・テスト     ・単体テスト/総合テスト/システムテスト/受け入れテスト     ・性能テスト/負荷テストを含めることも   ・インスペクション ・実行時間の目安   ・インテグレーションビルドと同様+α


・インスペクションとは http://www.weblio.jp/content/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%9A%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3

インスペクター(該当する領域の専門家)が商品・サービスを体験して、品質実態を評価すること。

インスペクションは通常よくユーザーテストと比較される。 インスペクションは専門家が評価するのに対し、ユーザーテストは一般消費者が評価する。 従って、インスペクションの最大の特徴は専門家の目で評価することであり、インスペクションの品質は専門家の「見る眼」で決まる。


・デプロイとは http://www.weblio.jp/content/%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4

デプロイとは、主にネットワークを通じて提供されるWebアプリケーションなどのシステム開発工程において、システムを利用可能な状態にすることである。

デプロイ(deploy)という言葉は元々、配置する、展開するといった意味の英語である。デプロイはソフトウェアのリリースやインストールも含んだ意味の広い言葉であり、開発環境からステージング環境へシステムを反映させることも、ステージング環境から本番環境へ反映させることも、「デプロイする」と表現できる。

yusukesasaki-com commented 8 years ago

Werckerを導入してみる

http://wercker.com


wercker.ymlがデフォルトなので、おそらく変更が必要。


yusukesasaki-com commented 8 years ago

PHPUnitについて

参考リンク http://gihyo.jp/dev/feature/01/php-test/0002 http://www.slideshare.net/taketyan/phpunit-11922674 http://www.slideshare.net/yandod/8phpunit http://gihyo.jp/dev/feature/01/php-test/0001

yusukesasaki-com commented 8 years ago

ローカル開発環境

現在の環境はdotinstallのレッスン ローカル開発環境の構築 [MacOS X編]で自動で作成したので、 Vagrant + VirtualBox -> centos6.7 の環境を最初から構築してみる。

vagrant init bento/centos-6.7
vi Vagrantfile
vagrant up

(Vagrantfileは、config.vm.network のコメントを削除して有効にする(必要な場合はipも変更))

vagrant ssh
$ sudo yum -y update

yumについて参考URL http://kazmax.zpp.jp/linux_beginner/yum.html

$ sudo rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ sudo yum -y install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof
$ sudo yum -y install httpd

と思ったら既にインストール済み。PHPと同時にインストールされたようだ。

Apacheの起動

sudo service httpd start

Apacheの自動起動設定

sudo chkconfig httpd on
$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
$ sudo yum -y install yum-utils
$ sudo yum-config-manager --disable mysql56-community
$ sudo yum-config-manager --enable mysql55-community
$ sudo yum -y install mysql mysql-devel mysql-server mysql-utilities

mysqlを起動

$ sudo service mysqld start

mysqlの自動起動設定

$ sudo chkconfig mysqld on

my.cnfを編集して日本語化 http://www.webcyou.com/?p=4718