Más contenido relacionado
La actualidad más candente (20)
Similar a fastlane x iOSアプリのCI (20)
Más de Toshiyuki Hirata (7)
fastlane x iOSアプリのCI
- 1. Copyright © DeNA Co.,Ltd. All Rights Reserved.
AKIBA.swift 第6回
2016/10/25(Tue)
平田敏之@DeNA
fastlane x iOSアプリのCI
- 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. Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日の発表の流れ
iOS x CI
CIでおこなうステップ
実際のCI環境の設定
⁃ Jenkins
⁃ CircleCI
- 4. Copyright © DeNA Co.,Ltd. All Rights Reserved.
iOS x CI (1/2)
CI(継続的インテグレーション)
⁃ CD(継続的デリバリー)というのもありますが、まずはCI
CI(継続的インテグレーション)のメリット
⁃ (ある程度の)品質の維持
• 何をおこなっているかに依存し変わる
⁃ 構成管理されたマシンによるビルド
• 各バージョンが整っている(はず)
⁃ 作業コストの削減
• 手元で行っている作業を任せられる
⁃ 作業の形式知化
• 手元で行っていた作業をCLIでおこなうことによる形式知化
⁃ 分析・改善のための情報の取得
• ビルド時間の推移など
- 5. Copyright © DeNA Co.,Ltd. All Rights Reserved.
iOS x CI (2/2)
CIを得るために必要なこと
⁃ 上司の許可
• CIにはどうしてもコストがかかります..
⁃ クラウド、オンプレのどちらにするかの判断
• プロジェクトの規模、やりたいことを踏まえて判断
⁃ CLI上での操作
• CI上で動作させるには必要
⁃ ★今回のメインはコチラ
CIがあることにより得られるもの
⁃ 安心感
⁃ ファンの音がガンガンしない自マシン
⁃ CI環境の介護
• クラウド、オンプレで介護の差はある(介護0は厳しい)
- 6. Copyright © DeNA Co.,Ltd. All Rights Reserved.
CIでおこなうステップ(例)
アプリのビルド
アプリのテスト
静的解析(swiftLint)
アプリのdeploy(DeployGate / Crashlytics)
iTunesConnectへのupload
AppStoreのデータ更新
Slackに結果通知
- 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. 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. 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. 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. Copyright © DeNA Co.,Ltd. All Rights Reserved.
Jenkinsの設定の例(1/2)
ビルドパラメータ
⁃ 対象となるbranchの設定
ソースコード管理
⁃ Repository URLの指定
⁃ Branch Specifierの指定
ソースコード管理の例
ビルドパラメータ
- 12. Copyright © DeNA Co.,Ltd. All Rights Reserved.
Jenkinsの設定の例(2/2)
ビルドの例
ビルド後の処理の例
ビルド手順の追加
⁃ シェルの実行
ビルド後の処理の追加
⁃ Junitテスト結果の集計
⁃ 成果物を保存
- 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. Copyright © DeNA Co.,Ltd. All Rights Reserved.
まとめ
fastlaneを便利に使ってCIを用意しましょう
ステップの全てを一気にやらず簡単なところから着手しましょう
⁃ まずはアプリのビルドからはじめるのが良いです