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

star__hoshi

July 31, 2017
Tweet

More Decks by star__hoshi

Other Decks in Technology

Transcript

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

    UDID 登録 4. 証明書を更新してダウンロー ド 5. ダウンロー ドした証明書をダブルクリックしてインストー ル 6. Xcode を開いて証明書を確認してみる 7. 証明書が古いままになってるのに気がつく 8. Xcode の Accounts から証明書一覧を見て Data Created が古いの を消す
  2. 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 でみんなに通知
  3. 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 に通知がくる
  4. 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 を作っていく
  5. 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 ブログ
  6. 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 で証明書更新しといて~」 って声かけす るだけ。 どういう時に使うかはあとで出てくる。
  7. 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 "
  8. 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 "
  9. fastlane/deliver iTunes Connect へのアプリの提出などを行う。 Change Log や説明文なども用意しておけば ipa 提出時にそれらも入力 可能。

    つまり、 説明文などが git 管理できるようになるのである。 しかし、 iTunesConnect で説明文をいじってしまうと git 配下の文章と 差分ができてしまうため、 ビミョイきがする。 今までも過去の説明文などを見たいなどはなかったので、 自分は ipa の 提出のみを実行している。
  10. 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
  11. fastlane/produce Apple Developer Portal と iTunes Connect に新しいアプリケー ション を作成してくれる。

    fastlane/produce でコマンドだけで iTunesConnect にアプリを作成す る ‑ Qiita
  12. Actions f a s t l a n e r

    u n A C T I O N _ N A M E で実行できる。 よく使われるけど、 標準コマンドというほどではないのが Action.
  13. nakiostudio/danger‑xcov: Danger plugin to validate the code coverage of the

    files changed テストカバレッジをプルリクに連携する。 Dangerfile に xcov.report を書く。 プルリクにカバレッジ情報を連携し てくれて最高。 iOS 開発での Pull Request と テストカバレッジの連携 // Speaker Deck
  14. 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 ' )
  15. 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 ※ 説明しやすいように一部抜粋
  16. 解説 1. match で証明書取得 or 更新 2. increment_build_number でビルド番号を変更 3.

    badge でアプリアイコンを加工 4. gym でコンパイル 5. crashlytics でベー タ版配布 6. upload_symbols_to_crashlytics で dSYM をアップロー ド 7. slack に通知 だいたいさっき解説したことの組み合わせ
  17. ブランチごとに実行される 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
  18. 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 を最新にすればなおることが 多い。
  19. Scan がこける CircleCI でシュミレー タの起動がうまくいかずテストが失敗するらし い。20 回に1 回くらい起きる。 CircleCI で

    rebuild すればうまくいく。 恒久対策としてはこれでいけるかも( すんません試してないっす) xcodebuild ‑ exit code 65 | CircleCI
  20. 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 管理できない
  21. 意図せず神に触れてしまうケー ス 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 案件...。
  22. 前に起きた辛いエラー CircieCI の Xcode を 8.3 にしたら Gym で ARCHIVE

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