More Related Content Similar to ビルドプロセスとCI #STAC2014 (20) More from Koji Hasegawa (16) ビルドプロセスとCI #STAC20142. 自己紹介
• @nowsprinting
• フリーランス(iOS/Androidアプリ受託開発)
• テスト自動化研究会、Androidテスト部、VR部
• アプリ『山吹色の茸疾走』『フットサル ルールと雑学』
『電エースQuiz - 河崎実監督と特撮映画の世界』
• 著書『システムテスト自動化 標準ガイド』(共訳・共著)
『iOSアプリ テスト自動化入門』
『Androidアプリ テスト技法』(共著)
4. • Android Bazaar and Conference 2014 Winter
http://abc.android-group.jp/2014w/
12/21(日) 10:00~18:00
東海大学高輪キャンパス(東京都・品川)
• 【VR部屋】タオバイザー(Cardboard)ハンズオン
https://atnd.org/events/60117
7. “ビルド”の定義
• 狭義のビルド
• 製品のコンパイル、リンケージ、パッケージング
• 広義のビルド
• 自動化されたテストの実行
• 各種テスト環境へのデプロイ(配備)
• 商用環境へのデプロイ、リリース
8. CI
• 継続的インテグレーション
• 自動化されたビルドプロセス(Integration)を
繰り返し・継続的に(Continuous)実行する
• CIツール/サービス
• Jenkins, CloudBees, Travis CI, Circle CIなど
10. “ハンマーを持つ人には
すべてが釘に見える”
“If all you have is a hammer, everything looks like a nail.”
- Abraham Harold Maslow
http://www.wwezone.org/wwe/triple-h/page/8/
18. なにが問題になるか
• 規模(ファイルの数が多い)
• 再利用性(建て増し旅館)
• 複数のバージョン(製品のバージョンとの同期)
• プラットフォームと環境からの独立(動作環境ごと
にテストウェアのコピーを作るのか)
5.2「カギとなる4つの課題」より
28. 前処理
• 生成・・・・DBへのデータ投入など
• チェック・・テスト実行環境のチェック
(自動実行できない前提条件・環境のチェック)
• 再配置・・・ファイルの移動など
• 変換・・・・zipの展開など
6.2「前処理と後処理」より
29. 後処理
• 削除・・・・不要な生成物の削除
• チェック・・テスト出力の事後チェックなど
(スクリプト内でチェックできない場合)
• 再配置・・・ファイルの移動など
• 変換・・・・zipへの圧縮など
6.2「前処理と後処理」より
37. Travis CI
• https://travis-ci.org
• GitHub上のリポジトリを対象としたCIを提供
• WorkerにMac OS Xがあり、iOSでも利用可能
• 実行環境自体がImmutableで、ビルドの定義は
YAML形式のファイルで指定できる
38. Travis CIの例
• Androidアプリの例
『システムテスト自動化 標準ガイド』14.1に掲載
されています
• iOSアプリの例
『iOSアプリ テスト自動化入門』7.3に掲載されて
います(サンプルコードはGitHubにあります)
47. 前提 - Git-flow
• masterはリリースされているアプリの状態
• 開発中のコードはdevelop
• リリース候補はdevelopからrelease/1.1など
• 緊急修正はmasterからhotfix/1.0.1など
• アプリ等に向く(Web向き:GitHub Flowなど)
49. パイプラインの事例
1. ユニットテスト、統合テスト(UI操作が中心)、
メトリクス採取
2. システムテスト
3. UAT・リリース向けに全ターゲットのビルド
4. DeployGateにアップロード
• UI操作のテストは、ユニットテストフレームワーク
上で動作するもの(iOS: KIF, Android: Robotium)
+モックサーバで構築
• develop, release, hotfixブランチで実行
50. パイプラインの事例
1. ユニットテスト、統合テスト(UI操作が中心)、
メトリクス採取
2. システムテスト
3. UAT・リリース向けに全ターゲットのビルド
4. DeployGateにアップロード
• 1の後、2を実行(ひとつのジョブ)
• 当初、Frankでごくシンプルな機能テストのみ実装
→OSバージョン問題で動かない
• OSのバリエーションをマトリクスで実行(予定)
51. パイプラインの事例
• release, hotfixのとき実行
• Pythonのスクリプトで複数ターゲットxコンフィグ
のビルド
• BundleVersionなども自動設定
1. ユニットテスト、統合テスト(UI操作が中心)、
メトリクス採取
2. システムテスト
3. UAT・リリース向けに全ターゲットのビルド
4. DeployGateにアップロード
52. パイプラインの事例
1. ユニットテスト、統合テスト(UI操作が中心)、
メト• リ3のク後ス、採4取
を実行(ひとつのジョブ)
• アップロードAPIをスクリプトから実行
2. シス• テ以ム前テはTestFlightスト
を利用
• https://deploygate.com
3. UAT・リリース向けに全ターゲットのビルド
4. DeployGateにアップロード
58. “ハンマーを持つ人には
すべてが釘に見える”
“If all you have is a hammer, everything looks like a nail.”
- Abraham Harold Maslow
http://www.wwezone.org/wwe/triple-h/page/8/