[android] ci環境についてぼんやり考えてること

21
[Android] CI環境についてぼんやり 考えてること @ichigotake #hachiojipm

Upload: ichigotake-

Post on 07-Jul-2015

305 views

Category:

Technology


0 download

DESCRIPTION

[Android] CI環境についてぼんやり考えてること

TRANSCRIPT

Page 1: [Android] CI環境についてぼんやり考えてること

[Android]CI環境についてぼんやり

考えてること

@ichigotake #hachiojipm

Page 2: [Android] CI環境についてぼんやり考えてること

はじめに

まだ構想段階ですよ!

取り急ぎ用意するなら、という成分強め

Page 3: [Android] CI環境についてぼんやり考えてること

Androidアプリ開発に必要なもの

● アプリ(apk)のビルトとアップロード○ アップ先はPlayストアだったりDeployGateだったり

● テスト環境○ 人間がやったり機械がやったり

Page 4: [Android] CI環境についてぼんやり考えてること

運用リスク

● 「アップロードするファイル間違えた」● 「クリーンビルト忘れた」

リスクを下げるためのCI環境を用意したい!

Page 5: [Android] CI環境についてぼんやり考えてること

CIで意識する事

● ビルトからアップロードまでを自動化○ 人為的ミスを減らす

● 各種認証の扱い、セキュリティ事案○ リリースビルドの証明書,各種連携サービスなど

● VCS(gitとか)のコミットフック● 個人環境に移譲出来る事はないか

○ ステージング環境の設定は個人環境を尊重したい○ でもリリースは固定された環境がいいよね

Page 6: [Android] CI環境についてぼんやり考えてること

世の中にある便利なCIサービス

● travis-ci● wercker● circleci

などなど

Page 7: [Android] CI環境についてぼんやり考えてること

でも…

● 認証情報を外部に置くのは気持ち悪い(怖い)● 時間帯によってはビルドが遅い

○ 有償プランは高かったり…● サービスをクローンするのは高コスト

○ かといって中途半端に用意しても割に合うのか○ 軽めに運用して様子を見たい時にはめんどう○ 探すのはそれはそれで検討比較がちょっとめんどう

Page 8: [Android] CI環境についてぼんやり考えてること

自分が欲しいもの

● Like a "CPAN Testers Reports" services○ WEBでビルト結果を見れる○ ビルト環境ごとの出力ログ, テスト結果など○ プルリクへのリンク○ いつでも気軽に結果を見たい

● リリース時の確実なクリーンビルト● サーバ管理の意識を少なく出来る"何か"● 趣味で簡単に使えたら尚よい

Page 9: [Android] CI環境についてぼんやり考えてること

ぼんやり考えてること

まだ構想段階ですよ!

Page 10: [Android] CI環境についてぼんやり考えてること

運用イメージ

● 作業中はいつも通りに● ステージング,リリースビルトはDockerで● Dockerでのビルト結果を集積所へpush● 環境の用意は手短に

Page 11: [Android] CI環境についてぼんやり考えてること

用意する環境

● Android汎用のDockerベースイメージ● プロジェクトごとのDockerfile● ビルト結果をpushするリポジトリ

○ Lintとかテストレポートとかをみるところ

Page 12: [Android] CI環境についてぼんやり考えてること

プロジェクトごとのDockerfile

● クリーンビルトであることを保証する● 各種認証情報は `ADD` するスタイル● 必要な所だけ毎回実行する

○ Dockerは「キャッシュ可能なシェルスクリプト」○ 依存解決までをキャッシュしておくといいかも

● アップロードはDocker経由以外禁止○ 準備したならそもそもDocker経由の方が楽だよね

● ビルト結果は集積所へpush

Page 13: [Android] CI環境についてぼんやり考えてること

ビルト結果集積所

● Dockerのビルト結果を `git push` する先○ コミットメッセージにブランチ情報を入れておく

● lint-resultsやtest-resultsを置いておく● publicでよいならgithub pagesも有用か

Page 14: [Android] CI環境についてぼんやり考えてること

出来ればコミットフックも…

コミットフックを利用するには別途何かが必要

逆に言えば、コミットフック以外の主要なopsは開発機のDockerへ押し込める…かも

Page 15: [Android] CI環境についてぼんやり考えてること

コミットフックを有効活用するなら

● 外部のコミットフック連携サービスを使う● 自前で用意する(今は考えてない)

○ jenkIns○ ukigumo○ Github::Hooks::Manager○ など

Page 16: [Android] CI環境についてぼんやり考えてること

Dockerを利用するメリット

● クリーンビルトの環境の存在が自明的に○ Dockerの文化的にそう感じてもらえるはず

● クリーンビルトのための環境作りが容易● ベースイメージでプロジェクト/タスク間の共通化

がしやすい

Page 17: [Android] CI環境についてぼんやり考えてること

Dockerを利用するデメリット

● 開発機にDocker依存が増える● イメージのダウンロードに時間がかかる● 閉じた環境を用意するため、認証まわりの準備

が少々面倒な場合も…?● 開発機のストレージ圧迫

Dockerじゃなくてもいいケースの方が多そう

Page 18: [Android] CI環境についてぼんやり考えてること

運用イメージ(再掲)

● 作業中はいつも通りに● ステージング,リリースビルトはDockerで● Dockerでのビルト結果を集積所へpush● 環境の用意は手短に

Page 19: [Android] CI環境についてぼんやり考えてること

今日までにやったこと

● Dockerのベースイメージを作った○ ichigotake/docker-android-base

● アクティブな趣味環境にDockerfileを作った● 集積所は、スペースだけ作った

○ ichigotake/android-testers-reports

Page 20: [Android] CI環境についてぼんやり考えてること

まとめ

● お手軽なCI環境を作るための様子見運用● 自前サーバ依存を減らして出来る事を探る● 全世界の中央サービス的なものは考えない

○ 今はプライベート利用を中心に模索中

● 今Dockerを利用してるのはお試し感が強い○ Dockerじゃない方がミニマルでシンプル感ありそう

Page 21: [Android] CI環境についてぼんやり考えてること

おしまい