Upgrade to Pro — share decks privately, control downloads, hide ads and more …

fastlane 勉強会

fastlane 勉強会

fastlane/fastlane: 🚀 The easiest way to automate building and releasing your iOS and Android apps
https://github.com/fastlane/fastlane

classi/fastlane-example: fastlane example by Classi Corp.
https://github.com/classi/fastlane-example

iOS が fastlane なら Android も fastlane に乗ってみては?
https://speakerdeck.com/starhoshi/ios-ga-fastlane-nara-android-mo-fastlane-nicheng-tutemiteha

fastlane/scan でテストを実行する - Qiita
http://qiita.com/star__hoshi/items/f7e3ec8db107b0be69f7

fastlane pem で Push 通知に必要な p12 ファイルを生成する - star__hoshi's diary
http://starhoshi.hatenablog.com/entry/2017/07/26/fastlane_pem_%E3%81%A7_Push_%E9%80%9A%E7%9F%A5%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA_p12_%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B

fastlane matchを使ったiOS証明書、Provisioning Profileの導入管理 - 百戦錬磨 Techブログ
http://tech.hyakuren.org/entry/ios-provisioning-use-fastlane-match

fastlane/produce でコマンドだけで iTunesConnect にアプリを作成する - Qiita
http://qiita.com/star__hoshi/items/a40b3dd54991e8c6b3a4

iOS 開発での Pull Request と テストカバレッジの連携
https://speakerdeck.com/starhoshi/ios-kai-fa-defalse-pull-request-to-tesutokabaretuzifalselian-xi

classi/fastlane-example: fastlane example by Classi Corp.
https://github.com/classi/fastlane-example/

Fastfile の import 機能を使い、複数のプロジェクトで共通の Fastfile を使う - Qiita
http://qiita.com/star__hoshi/items/7b7d367cb0e0cab612cf

CircieCI の Xcode を 8.3 にしたら Gym で ARCHIVE FAILED になる解決方法 - Qiita
http://qiita.com/star__hoshi/items/a57608258e2598fa7d25

71ce746e94f84be1cef8e57e8277bd6d?s=128

star__hoshi

July 31, 2017
Tweet

Transcript

  1. 社内 fastlane 勉強会

  2. Classi 社内で fastlane 勉強会をした時の資料です。 社内向けのため、 語尾が雑だったりしますがご了承ください。

  3. 目的 fastlane とは何かざっくり理解する。

  4. fastlane を 一言で言うと iOS / Android で継続的デリバリー するためのツー ル

  5. 例題 新しい UDID にアプリのベー タ版を配布して ください

  6. 真心を込めて手動で配布 1. Apple Developer を開く 2. 大抵ログインが切れてるのでログインし直す 3. Devices に

    UDID 登録 4. 証明書を更新してダウンロー ド 5. ダウンロー ドした証明書をダブルクリックしてインストー ル 6. Xcode を開いて証明書を確認してみる 7. 証明書が古いままになってるのに気がつく 8. Xcode の Accounts から証明書一覧を見て Data Created が古いの を消す
  7. 9. 最新の証明書が使われているのを確認する 古い証明書を revoke すると他のメンバー がその証明書を使っ ていた場合それが使えなくなる 10. Xcode で

    Target Device を Generic iOS Device にして Archive Build 11. Organizer が開くので、 Export から AdHoc 版を選ぶ 12. 出力された ipa ファイルをこんなコマンドでアップロー ド . / C r a s h l y t i c s . f r a m e w o r k / s u b m i t S E C R E T _ K E Y S E C R E T _ T O K E N n o t i f i c a t i o n s Y E S - i p a P a t h . / H o g e . i p a 13. ベー タ版の配布が成功したら Slack でみんなに通知
  8. ここまで 30 分!!!!!!! これ 1 日 3 回とかやれとか言われたら病む

  9. fastlane でコマンドで配布 $ b u n d l e e

    x e c f a s t l a n e r u n r e g i s t e r _ d e v i c e n a m e : " アイフォー ン7 " $ b u n d l e e x e c f a s t l a n e b e t a 作業は10 秒、 待ってれば beta 版が配布されて Slack に通知がくる
  10. つまりなにが便利かと言うと 今までやっていた 単純作業 が自動化される 属人性 がなく誰でも beta 配布できる 環境構築はする必要ある 手動じゃなくなるので

    ヒュー マンエラー を防止できる 自動化 できる
  11. fastlane 概要 Ruby 製 fastlane/fastlane: The easiest way to automate

    building and releasing your iOS and Android apps Star 17000↑ Android もいける iOS が fastlane なら Android も fastlane に乗ってみては? // Speaker Deck 16 の標準コマンド 100 こくらいの Action 無数にある Plugin それらを組み合わせて Custom lane を作っていく
  12. コマンドの説明 全部話すと日がくれるのでメインで使っているコマンドだけ

  13. fastlane/scan コマンドラインでテストを楽々 実行できる。 fastlane/scan でテストを実行する ‑ Qiita

  14. fastlane/pem Push 通知の証明書をコマンドで生成できる。 fastlane pem で Push 通知に必要な p12 ファイルを生成する

    ‑ star__hoshi's diary
  15. fastlane/match Git リポジトリで証明書を管理して、 開発者が全員同じ証明書を使うこと で証明書の違いや更新失敗による消耗を防ごうぜ! ってやつ。 github に private で

    c e r t i f i c a t e s などのレポジトリを作成する。 UDID が追加されていた場合、 自動で証明書の更新もしてくれる。 https://codesigning.guide/ が公式文書。 日本語だと↓ の説明がわかりやすい。 fastlane match を使ったiOS 証明書、Provisioning Profile の導入管理 ‑ 百 戦錬磨 Tech ブログ
  16. match nuke 証明書を削除する。 b u n d l e e

    x e c f a l s t l a n e m a t c h n u k e d e v e l o p m e n t と打つと、 Development のすべての証明書が削除される。 appstore に すればストア用のが消される。 と言っても証明書が消えるだけなので打っても問題ない。 「nuke したからみんな match で証明書更新しといて~」 って声かけす るだけ。 どういう時に使うかはあとで出てくる。
  17. Matchfile match 実行時にオプションのデフォルト引数を定義しておける g i t _ u r l

    " g i t @ g i t h u b . c o m : m y - r e p o / c e r t i f i c a t e s . g i t " t y p e " d e v e l o p m e n t " a p p _ i d e n t i f i e r [ " j p . h o g e . T o d a y E x t e n s i o n " , " j p . h o g e . s t a g i n g . T o d a y E x t e n s i o n S t a g i n g " , " j p . h o g e " , " j p . h o g e . s t a g i n g " ] # Y o u r A p p l e D e v e l o p e r P o r t a l u s e r n a m e u s e r n a m e " a p p l i c a t i o n @ h o g e . j p "
  18. fastlane/gym アプリのコンパイルの実施と ipa ファイルの生成を行う。

  19. Gymfile c l e a n t r u e

    o u t p u t _ d i r e c t o r y " . / " w o r k s p a c e " h o g e . x c w o r k s p a c e " s c h e m e " S t a g i n g "
  20. fastlane/cert, fastlane/sigh この2 つはどうやらセットで使うらしい。 cert は証明書のチェックをして、 sigh が証明書の取得や更新を行うらし い? ただし、

    match を使っていれば cert と sigh は使う必要がないようなの であまり詳しく調べていない。
  21. fastlane/deliver iTunes Connect へのアプリの提出などを行う。 Change Log や説明文なども用意しておけば ipa 提出時にそれらも入力 可能。

    つまり、 説明文などが git 管理できるようになるのである。 しかし、 iTunesConnect で説明文をいじってしまうと git 配下の文章と 差分ができてしまうため、 ビミョイきがする。 今までも過去の説明文などを見たいなどはなかったので、 自分は ipa の 提出のみを実行している。
  22. Deliverfile a p p _ i d e n t

    i f i e r " j p . h o g e " u s e r n a m e " a p p l i c a t i o n @ h o g e . j p " f o r c e f a l s e s k i p _ s c r e e n s h o t s t r u e s k i p _ m e t a d a t a t r u e s k i p _ b i n a r y _ u p l o a d f a l s e a u t o m a t i c _ r e l e a s e f a l s e
  23. fastlane/produce Apple Developer Portal と iTunes Connect に新しいアプリケー ション を作成してくれる。

    fastlane/produce でコマンドだけで iTunesConnect にアプリを作成す る ‑ Qiita
  24. fastlane/snapshot スクリー ンショットを撮影できる。 UI Test を書く必要がある。 テストの結果をスクショ撮ったり、 AppStore に並べるための画像を用 意したりする。

  25. fastlane/frameit よくある iPhone の上に文字おくみたいなのが作れる。 snapshot と組み合わせると自動でスクショが作れて便利。

  26. Actions f a s t l a n e r

    u n A C T I O N _ N A M E で実行できる。 よく使われるけど、 標準コマンドというほどではないのが Action.
  27. fastlane/crashlytics_helper.rb Fabric beta にアプリファイルを提出できる。 Gym で作ったアプリファイルを Fabric に送信する。

  28. nakiostudio/xcov: Nice code coverage reporting without hassle テストカバレッジを slack に連携する。

  29. nakiostudio/danger‑xcov: Danger plugin to validate the code coverage of the

    files changed テストカバレッジをプルリクに連携する。 Dangerfile に xcov.report を書く。 プルリクにカバレッジ情報を連携し てくれて最高。 iOS 開発での Pull Request と テストカバレッジの連携 // Speaker Deck
  30. beta 版の時はアイコンを変える HazAT/badge: Add a badge to your app icon

    fastlane/badge.rb at master · fastlane/fastlane
  31. Plugin あんまり使ってないので割愛

  32. classi/fastlane‑example を読んでいく https://github.com/classi/fastlane‑example: fastlane example by Classi Corp.

  33. 分割してる Fastfile の import 機能を使い、 複数のプロジェクトで共通の Fastfile を 使う ‑

    Qiita
  34. fastlane‑example を import して使う f a s t l a

    n e _ v e r s i o n " 2 . 1 9 . 2 " i m p o r t _ f r o m _ g i t ( u r l : ' h t t p s : / / g i t h u b . c o m / c l a s s i / f a s t l a n e - e x a m p l e ' , p a t h : ' i O S / f a s t l a n e / F a s t f i l e ' )
  35. beta 配布の lane l a n e : b e

    t a d o m a t c h ( t y p e : E N V [ " B E T A _ M A T C H _ T Y P E " ] , f o r c e _ f o r _ n e w _ d e v i c e s : i n c r e m e n t _ b u i l d _ n u m b e r ( b u i l d _ n u m b e r : T i m e . n o w . t o _ i . t o _ s [ b a d g e ( d a r k : t r u e ) g y m c r a s h l y t i c s ( . . . ) u p l o a d _ s y m b o l s _ t o _ c r a s h l y t i c s s l a c k ( . . . ) e n d https://github.com/classi/fastlane‑ example/blob/master/iOS/fastlane/Fastfile ※ 説明しやすいように一部抜粋
  36. 解説 1. match で証明書取得 or 更新 2. increment_build_number でビルド番号を変更 3.

    badge でアプリアイコンを加工 4. gym でコンパイル 5. crashlytics でベー タ版配布 6. upload_symbols_to_crashlytics で dSYM をアップロー ド 7. slack に通知 だいたいさっき解説したことの組み合わせ
  37. ブランチごとに実行される lane を変えてる d e p l o y m

    e n t : m a s t e r : b r a n c h : m a s t e r c o m m a n d s : - b r e w i n s t a l l i m a g e m a g i c k - b r e w i n s t a l l g r a p h i c s m a g i c k - b u n d l e e x e c f a s t l a n e b e t a - - v e r b o s e r e l e a s e : b r a n c h : / r e l e a s e . * / c o m m a n d s : - b u n d l e e x e c f a s t l a n e r e l e a s e - - v e r b o s e https://github.com/classi/fastlane‑ example/blob/master/iOS/circle.yml
  38. fastlane を捨てたいときは? 1. Automatically manage signing にチェック 2. 証明書を手動で作り直す だけ!

  39. 1. Automatically manage signing にチェック

  40. 2. 証明書を手動で作り直す match ~ で始まる証明書を全て削除して、 真心を込めて証明書を自作し ダウンロー ド、 インストー ルすればよし。

  41. よく起こるエラー まずエラー が出たらちゃんと内容を読みましょう。

  42. iTunes Connect の仕様が変わった この前も WWDC のタイミングで仕様が変わって Deliver がこけるよう になった。 b

    u n d l e u p d a t e f a s t l a n e して fastlane を最新にすればなおることが 多い。
  43. Scan がこける CircleCI でシュミレー タの起動がうまくいかずテストが失敗するらし い。20 回に1 回くらい起きる。 CircleCI で

    rebuild すればうまくいく。 恒久対策としてはこれでいけるかも( すんません試してないっす) xcodebuild ‑ exit code 65 | CircleCI
  44. match がうまくいかない ロー カル PC で環境構築する際、 b u n d

    l e e x e c f a s t l a n e m a t c h d e v e l o p m e n t でうまくいかなかったりする。 考えられるのは 1. github に ssh key が設定されているか? 2. ruby の version が適切か? System の ruby が 2.0.0 だと openssl 周りで死ぬ 3. match で使う certificates レポジトリに write 権限があるか? ないと証明書の更新はできても repository 管理できない
  45. 神に触れた match で生成した証明書を人間が真心を込めて編集してしまうと、 Apple Developer にある証明書と certificates レポジトリにある証明書 で差分が出てしまうので、 人間は証明書に触ってはいけない。

    その場合は match nuke する。
  46. 意図せず神に触れてしまうケー ス 3. match で使う certificates レポジトリに write 権限があるか? ないと証明書の更新はできても

    repository 管理できない write 権限がないのに match を実行すると 1. match が証明書を更新する 2. certificates に Push するも失敗する 3. certificates と Apple Developer で差分が発生 4. 神がお怒りになる これやっちゃったらしょうがないので m a t c h n u k e 案件...。
  47. 前に起きた辛いエラー CircieCI の Xcode を 8.3 にしたら Gym で ARCHIVE

    FAILED になる解 決方法 ‑ Qiita 嫌な事件だったね...。 治るのに1 ヶ月かかった( 要領が悪かっただけというのはある)
  48. おわり