fastlane x iOSアプリのCI

599 views

Published on

「AKIBA.swift 第6回」で利用した発表資料です。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
599
On SlideShare
0
From Embeds
0
Number of Embeds
432
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

fastlane x iOSアプリのCI

  1. 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. AKIBA.swift 第6回 2016/10/25(Tue) 平田敏之@DeNA fastlane x iOSアプリのCI
  2. 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自己紹介  平田 敏之@DeNA ⁃ 経歴 • GWの開発 → ホムペサービスの開発、iOSアプリの開発 → SWET ⁃ SWET(Software Engineer in Test) • 事業サポートチーム / テスト基盤チーム • ミッション ⁃ DeNAサービス全般の品質向上 ⁃ DeNAエンジニアの開発生産性向上 ⁃ 私がやっていること(の一部) • クライアントアプリ周りのテスト戦略、自動テストの開発 • CI/CD環境整備 • テスト基盤環境の開発 • iOS Test Night 主催 ⁃ http://testnight.connpass.com/event/41323/
  3. 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日の発表の流れ  iOS x CI  CIでおこなうステップ  実際のCI環境の設定 ⁃ Jenkins ⁃ CircleCI
  4. 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. iOS x CI (1/2)  CI(継続的インテグレーション) ⁃ CD(継続的デリバリー)というのもありますが、まずはCI  CI(継続的インテグレーション)のメリット ⁃ (ある程度の)品質の維持 • 何をおこなっているかに依存し変わる ⁃ 構成管理されたマシンによるビルド • 各バージョンが整っている(はず) ⁃ 作業コストの削減 • 手元で行っている作業を任せられる ⁃ 作業の形式知化 • 手元で行っていた作業をCLIでおこなうことによる形式知化 ⁃ 分析・改善のための情報の取得 • ビルド時間の推移など
  5. 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. iOS x CI (2/2)  CIを得るために必要なこと ⁃ 上司の許可 • CIにはどうしてもコストがかかります.. ⁃ クラウド、オンプレのどちらにするかの判断 • プロジェクトの規模、やりたいことを踏まえて判断 ⁃ CLI上での操作 • CI上で動作させるには必要 ⁃ ★今回のメインはコチラ  CIがあることにより得られるもの ⁃ 安心感 ⁃ ファンの音がガンガンしない自マシン ⁃ CI環境の介護 • クラウド、オンプレで介護の差はある(介護0は厳しい)
  6. 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. CIでおこなうステップ(例)  アプリのビルド  アプリのテスト  静的解析(swiftLint)  アプリのdeploy(DeployGate / Crashlytics)  iTunesConnectへのupload  AppStoreのデータ更新  Slackに結果通知
  7. 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. CIでおこなうステップ x fastlane無 fastlaneを使わずにCIにのせようとすると  アプリのビルド(例) ⁃ xcodebuild –project xxxx.xcodeproj –target xxxxx –sdk iphonesimulator –configuration Debug build  アプリのテスト(例) ⁃ xcodebuild –project xxxx.xcodeproj –scheme xxxxx –sdk iphonesimulator –destination ’platform=iOS Simulartor, name=iPhone 6s’ test
  8. 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. CIでおこなうステップ x fastlane  アプリのビルド ⁃ gym  アプリのテスト ⁃ scan  静的解析(swiftLint) ⁃ swiftlint  アプリのdeploy(DeployGate / Crashlytics) ⁃ deploygate ⁃ crashlytics  iTunesConnectへのupload / AppStoreのデータ更新 ⁃ deliver  Slackに結果通知 ⁃ slack See: https://github.com/fastlane/fastlane/tree/master/fastlane/lib/fastlane/actions
  9. 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. CIでおこなうステップ x fastlane – 1st step  ★アプリのビルド ⁃ gym  アプリのテスト ⁃ scan  静的解析(swiftLint) ⁃ swiftlint  アプリのdeploy(DeployGate / Crashlytics) ⁃ deploygate ⁃ crashlytics  iTunesConnectへのupload / AppStoreのデータ更新 ⁃ deliver  ★Slackに結果通知 ⁃ slack
  10. 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. Fastfileの用意 fastlane_version "1.105.3” default_platform :ios platform :ios do before_all do ENV[“SLACK_URL”] || = https://hooks.slack.com/.. cocoapods end desc ”build ipa file” lane :build do increment_build_number gym( workspace: “fastlane-sample.xcworkspace", scheme: ”fastlane-sample", configuration: ”Release", clean: true, use_legacy_build_api: true, output_name: ”fastlane-sample.ipa", ) end error do |lane, exception| slack( message: exception.message, success: false ) end end fastlane/Fastfileの例  コマンド ⁃ アプリのビルド • bundle exec fastlane build  失敗したらslackにpostされる 構成の例 - fastlane/Fastfile - Gemfile - Gemfile.lock - Podfile - Podfile.lock - fastlane-sample.xcodeproj
  11. 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. Jenkinsの設定の例(1/2)  ビルドパラメータ ⁃ 対象となるbranchの設定  ソースコード管理 ⁃ Repository URLの指定 ⁃ Branch Specifierの指定 ソースコード管理の例 ビルドパラメータ
  12. 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. Jenkinsの設定の例(2/2) ビルドの例 ビルド後の処理の例  ビルド手順の追加 ⁃ シェルの実行  ビルド後の処理の追加 ⁃ Junitテスト結果の集計 ⁃ 成果物を保存
  13. 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. Jenkinsの例 – 実行結果
  14. 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. CircleCIの例 machine: xcode: version: 7.3.1 environment: XCODE_SCHEME: fastlane-sample XCODE_WORKSPACE: fastlane-sample.xcworkspace GYM_CODE_SIGNING_IDENTITY: “iPhone Distribution: XXXX XXXX(YYYY)” dependencies: test: override: - bundle exec fastlane build post: - cp fastlane/report.xml $CIRCLE_TEST_REPORTS circle.ymlの例 ※iOSアプリでの利用は有料です($39/month〜)
  15. 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. まとめ  fastlaneを便利に使ってCIを用意しましょう  ステップの全てを一気にやらず簡単なところから着手しましょう ⁃ まずはアプリのビルドからはじめるのが良いです

×