https://gyazo.com/e5cd55927f2002eeb462b6a7a1b54216
ライブ中継
https://www.youtube.com/watch?v=nva7VwTSK5o
1. Introduction to Bitrise
Bitriseとはなにか
インテグレーション
ビルド
モバイルアプリケーション開発
そもそもは自分たちの課題を解決するため
bitfailという会社があってそこから独立した
もともとの楽しい開発に時間がとれない
テスト・ビルド・環境構築などに時間がとられる
40人ちかくになった
所在地:ブタペスト
YC(ワイコンビネーター)
スタートアップの支援プログラム
100ちかくの企業が利用
「モバイルユニコーン」の企業
2年近く利用
日本は3番目のマーケット
日本はコミュニティも巨大で、使うお金も大きいので、今回調査のために来日した
Basic Onboarding
からレポジトリ選定できる
2. Workflows
Workflow = 何をやりたいか?
どういったものを実行したいか
どういうデプロイするか
Workfow Editor
GUI
ベースコンフィグができる
ライブラリは200ステップもある
Cache:Pull
どういうときにどのバーチャルマシンが走っているか
終わったら破棄されるので
キャッシュしてどういうのをやっていたか記録
Script
Deploy to Bitrise.io
ファイルの添付
AndroidのAPKファイル
iOSのipaファイル
Cache:Push
Code Signing Files
Generic File Storege
Google Play deploy Service accountのようなユーティリティファイル
env変数が使える
Secrets
ビルドするときに隠す
env変数など
Stack
xcodeバージョンは好きなものを選べるようにしている bitrise.yml
configファイル
テンプレートも提供されている
各ビルドページで各設定が必要
設定が変更されたらdiffが出る
3. Steps and integrations
チャックノリス・ステップ
ジョークをつくるステップ
Deployが画面上で簡単にできる
STEP
1. Flexibility
2. Community
OSSのみなさんのおかげです
Chuck Norris
DeployGate
3. Create your own step !
4. Troubleshooting
iOS コードサイニング
codesigndoc
iOS Auto Provisioning
ビルド中にコード解析する
Auto Provisioning
Reliable Android Test
エミュレータをつかったもの
バーチャルテストステップというのもできる
5. Announcement and Q&A
日本に行くにあたり
マーケットとしても重要
コミュニティも豊か
ドキュメントのローカライズ協力
コミュニティサポートは手厚くやっていきたい
コントリビューター向け支援
日本のコントリビューター用にSlackを用意予定
支援者はアンバサダーとして扱う
イベント
ブタペストまで来るのは大変、サポートをしたい
4半期に1度は日本人向けのイベントを行いたい
日本での採用開始
ブタベストオフィス
日本支社
はじめての海外支社
どれだけ市場として重要なのか
Q. Bitriseのサポート体制について。エンジニアからの質問をどう捌いているのか。
A. 3レベルで行っている。1は適材適所。2は技術サポート。3はプロダクトに関わっているエンジニア側で対応。
Q. アプリ周辺のソースコード生成(Swaggerなど)のサポートの予定は? A. 今のところはスクリプトを書くことで対応可能。ダウンロードもできる。メールくれればサポートもする。
Q. デバイステストはβ版だが将来的に有料化されたりする?
A. 今のところ、仮想デバイスとかに関しては無料の予定。ただ、ずっと無償かは約束はできない。
Q. 今React Native使っているが、パラレルに走らせることができていない状態。将来的に同時に走らせるworkflowを作れる? A. 明日、今でも使えるものを紹介する。メールくれればドキュメントの紹介もする。
Hisashi Iguchi:「Bitrise の社内提供へ」
社内提供を始めた経緯
2016/06 Circle CI Enterprice版を社内契約
2017/08
Xcodeの最新バージョンの提供スピード
Enterprise版のためインフラを社内運用者が管理(専任ではない)
iOS VMイメージの切り替えメンテがある
運用の負担とユーザがCIサービスを有効活用できてない
そこで出てきたのがBitrise
モバイル向けで注目されていた
Xcode最新版への速い追従ができる
インフラ管理なし・運用コスト低下
BitriseとCircle CI Enterpriseの重宝を提供
ユーザの選択肢が増える
ビルド実行まで
アカウント登録
利用申請
VPN証明書の発行
初期設定とプロジェクトの追加
CLIツール提供している
dena-birtise init
Bitriseへアクセスしてworkdlow設計
ビルド
qmihara:「bitcode を有効にしたアプリでも dSYM のアップロードを自動化する」
bitcodeを有効にしている?
シンボル(dSYM)のアップロードが手間
上記を自動化するためにBitriseを利用
App Store Connectの利用が完了した時に実行
メールが届く
Build Trigger API
メールの受信でhookできないのでスケジューラーで動かす
dotrikun:「ゼロからはじめない方がいい iOSアプリのビルドシステム構築」 Chrome上でIDEで開発作業を行いサーバでアプリをビルドする iOSビルドスクリプトでやること
Xcodeプロジェクト作成
プラグインインストール
npmから必要なものをインストール
そのまま実行するとhooksスクリプトをいろんなサーバーで動いてしまう
sandbox-exec
sandbox領域内のファイルの読み書きのみ限定
証明書(.p12)をKeyChainにインストール
security
ビルドにつかうバージョンのXcodeバージョンを選択
xcodebuild
.ipaファイル完成
XCodeバージョンなど
サーバーメンテいらない
kishikawa katsumi:「Track Everything -すべてをGitHub/Bitriseで追跡可能にする-」 CIでやっていること
ユニットテスト
プロダクションのビルド・配布
ベータ版・リリース版のビルド・配布
ライブラリアップデート
毎晩2AMに実行
CI導入のメリット
自動化
テスト
再現性
記録
可視化
手元のビルド以外はすべてBitriseにて行う
Githubをはさんでいるので何があったのかを都度確認できる
ワークフローを構成管理する
各個人の作業を再現可能にする
可視化
再現性
分業が可能
初見に優しい
iOS配信でよくある問題
スキーマをちゃんと選択してるか?
ビルドしたはずがGitのブランチが違っていた、コミットが違った
hotfixをリリースのビルド段階で差し込める
PRを作る作業はSlackでやる
対話形式でやれる
配信するブランチ、ビルド番号の候補を選べるようになっている
チームの誰が配布を始めたとかがわかる
失敗してもちゃんとわかる
botがバージョン変更管理
ホリエ:「Workflow、どう組んでいますか?」
ZOZO Technologies
Workflowとは
複数のビルドプロセルをまとめ実行順を制御
柔軟なビルドフローを構築
業務、開発にあわせてカスタマイズが容易
どういう風にWorkflowを組めばいいのか
何を実現したいか
高品質なアプリを迅速に届ける
十分なテスト
開発からリリースへのフロー自動化
迅速なテスト戦略を立てる
CI/CDによる開発からリリースまでのフロー
テスト戦略に沿ったテスト実行
指針が必要
デプロイメントパイプラインの概念の導入
開発からリリースまでの流れをモデル化
段階別にステージという単位でテストを実行
このモデルをWorkflowに落とし込む
workflowによるビルドの実行順制御
ブランチ、タグによるトリガー制御
Manual Approvalによるworkflow中断・再開
@miyajan
サイボウズ生産性向上ツール
ほとんどこれだった
メリット
なんでもできる
オンプレ構築
OSS、豊富なプラグイン
問題
利用が大規模化になると管理が大変
CircleCI
2.0で便利になった
Perfomance Pricing Plan
従量課金プラン
好きなだけコンテナ使える
リソースが可変(最小1CPU, 最大8CPU)
ビルドの待ち時間がかなり減らせた
CircleCI 2.1
詳しくはブログへ
独自コマンド
ymlの削減が可能
意味のある単位で再利用性が高まった
Ryo Sakaguchi:「Wantedly Peopleのアプリのリリースワークフロー」 前回のリリースとコードの差分をちゃんと保存しているか?
手動でやるのは大変
自動化しよう
Slack botでビルド
リリースをつくる
apk, ipaをアップロード
descriptionを追加(ビルドURL, diff URL
環境変数から引っ張れる
gihub-release
set_github_relase
Bitrise release (YOUR_REPOSITORY)
Download from GitHub Releases
任意をファイルをタグ指定でダウンロード
再度ビルドすることなく高速にリリース可能
まとめ
リリースタスクの自動化
全部自動化はしない
ある程度はコントローラブル
ビジネス要件があってリリースしたくないがコードをmasterにおきたい場合