React NativeアプリをBitriseでCDする

CI/CD Test Night #2 Leko

Leko / れこ

Chief engineer at
ビルド周り整えて自動化するのがすき

話したいこと

  • こんな感じでBitrise使ってデプロイしてます
  • Bitriseを使う前と後の差
  • 現在のフローに落ち着くまでのTry&Error

Context

  • CD=Continuous delivery
  • ネイティブアプリのCDしたい・してる方向け
  • Bitriseすでに使ってる・検討している方向け
  • iOS/Android両方のアプリを作っています
  • 1チームにエンジニア2〜3人の話

CI/CD flow

最初はCircleCIだけ

  • CIは最初から回ってた
  • AWS関連だけCD
  • アプリは手元ビルド+手動アップロード
  1. Xcodeを起動
  2. Product > Archiveを選択
  3. しばらく待つ(5-10分)
  4. エクスポートメソッド(Ad-Hoc)を選択
  5. オプション(CodeSign用アカウント)を選択
  6. しばらく待つ(2-3分)
  7. DeployGateを開く
  8. 出来上がった.ipa、.apkをDeployGateにドロップ

まごころを込めても開発は遅い

  • アプリのビルド待ち2~30分
  • その間プログラムいじれない、開発止まる
  • CPU/メモリも枯渇する

多い日は1日に3-4回ステージングにデプロイする
=2h/dくらいデプロイに溶けてる

stgへのデプロイがコマンド一発に

ローカルで動かすと開発は止まる
(トイレ・お菓子休憩に代わった)

CDできないと非効率的

ワークフロー編集画面

証明書の"抽出"・アップロード

デプロイしたいScheme選ぶ
必要な証明書をBitriseにアップロード

オレオレシェルの限界

動いてたのに動かなくなった
主にmacOSのアップデート

謎の理由でビルドが通らない

サポートに頼れない

公式のステップを使おう


名前の横に✅ついてるやつ

やってることはほぼ同じ、安定して動く

ビルド成果物をDLできるようにする

ビルド画面からipa, apkをDLできるようになる

ビルドまでは自動化できた

  • Artifactsに置けばDLして手動アップロードできる
  • 自動デプロイしたい
    ー DeployGate
    ー Google Play
    ー iTunes connect

DeployGateへのデプロイ

こちらを使うだけ
👤は3rd partyのstep

BitriseのWorkflow Stepsに「DeployGate Upload」が追加されました!

Google Playのデプロイ

Play consoleにサービスアカウントを作りAPI設定
iOSの審査を待つためαトラックに置いとく

iTunes connectへのバイナリ提出

手元デプロイerにはおなじみApplication Loader
IPASSの設定と、.ipaファイルのパス指定

審査は手動で提出する必要がある

設定例(iOSステージング)

真ん中をOS/デプロイ先ごとに変える

 →  → 

アプリのCD(Bitrise)導入後の世界

  • PRをマージ
    ー DeployGateへのデプロイ完了
  • git tagしてpush
    ー Google Playのαトラックへデプロイ完了
    ー iTunes connectへのバイナリ提出完了
  • 審査ボタン押す(手動)

審査ボタン押す(手動)

Fastlaneで自動化できるが、2-3年前に使って懲りた
スクレイピングなので仕組み上安定しない

AppleがAPI出すまで放置

CI/CD flow(再掲)

デプロイ完了通知をIssueコメントにできたら良さそう

おわり

(手探り中)

  • キャッシュの最適化