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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービスマスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告
 
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer
 

Destacado

Destacado (20)

戦車乗りもmBaaSでメール送信できるかもしれない件
戦車乗りもmBaaSでメール送信できるかもしれない件戦車乗りもmBaaSでメール送信できるかもしれない件
戦車乗りもmBaaSでメール送信できるかもしれない件
 
活用、CivicTechでNCMB!
活用、CivicTechでNCMB!活用、CivicTechでNCMB!
活用、CivicTechでNCMB!
 
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
mBaaSの基本的な扱い方の事始め(parse.comとNCMBの使い方比べ)
 
Google vrからはじめるdaydreamへの道
Google vrからはじめるdaydreamへの道Google vrからはじめるdaydreamへの道
Google vrからはじめるdaydreamへの道
 
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
ContainerViewとStoryboardとSwift3.0の交響曲(シンフォニー)
 
Tech Talk #5 : Apply CI tools in iOS development - Trương Minh Khôi
Tech Talk #5 : Apply	CI tools in iOS	development - Trương Minh KhôiTech Talk #5 : Apply	CI tools in iOS	development - Trương Minh Khôi
Tech Talk #5 : Apply CI tools in iOS development - Trương Minh Khôi
 
Ca shape layerの塗りつぶしルールでちょっとリッチな描画をしよう
Ca shape layerの塗りつぶしルールでちょっとリッチな描画をしようCa shape layerの塗りつぶしルールでちょっとリッチな描画をしよう
Ca shape layerの塗りつぶしルールでちょっとリッチな描画をしよう
 
バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?
 
WWDC 2016 Personal Recollection
WWDC 2016 Personal RecollectionWWDC 2016 Personal Recollection
WWDC 2016 Personal Recollection
 
AWS CLI Conference 2016
AWS CLI Conference 2016AWS CLI Conference 2016
AWS CLI Conference 2016
 
Amazon Route53へのドメイン移管
Amazon Route53へのドメイン移管Amazon Route53へのドメイン移管
Amazon Route53へのドメイン移管
 
Unowned / Weak References with Closure
Unowned / Weak References with ClosureUnowned / Weak References with Closure
Unowned / Weak References with Closure
 
GitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろうGitHub + Circle CI で幸せになろう
GitHub + Circle CI で幸せになろう
 
ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略ポストJenkins時代のCI戦略
ポストJenkins時代のCI戦略
 
Msa読書会#3前半
Msa読書会#3前半Msa読書会#3前半
Msa読書会#3前半
 
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
VC「もしかして...」Model「私たち...」「「入れ替わってるー!?」」を前前前世から防ぐ方法
 
Build an iOS app with ConcourseCI
Build an iOS app with ConcourseCIBuild an iOS app with ConcourseCI
Build an iOS app with ConcourseCI
 
GitLab CI の布教 for iOS
GitLab CI の布教 for iOSGitLab CI の布教 for iOS
GitLab CI の布教 for iOS
 
はじめての CircleCI
はじめての CircleCIはじめての CircleCI
はじめての CircleCI
 
Circle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみるCircle ciで結果をslackに通知してみる
Circle ciで結果をslackに通知してみる
 

Similar a fastlane x iOSアプリのCI

CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
Yuki Ando
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform
Masaki Nakagawa
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
Atsuhiro Kubo
 

Similar a fastlane x iOSアプリのCI (20)

Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみた
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform
 
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
 
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
Redmine Applied for Large Scale
Redmine Applied  for Large ScaleRedmine Applied  for Large Scale
Redmine Applied for Large Scale
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
 
ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料ドリコムJenkins勉強会資料
ドリコムJenkins勉強会資料
 
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
 
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...数千人が利用する楽天Redmineの過去と未来 - The past and future of  Rakuten Redmine that is the...
数千人が利用する楽天Redmineの過去と未来 - The past and future of Rakuten Redmine that is the...
 
数千人が利用する楽天Redmineの過去と未来
数千人が利用する楽天Redmineの過去と未来数千人が利用する楽天Redmineの過去と未来
数千人が利用する楽天Redmineの過去と未来
 
【Alfresco勉強会】インストール手順書(windows azure)
【Alfresco勉強会】インストール手順書(windows azure)【Alfresco勉強会】インストール手順書(windows azure)
【Alfresco勉強会】インストール手順書(windows azure)
 

Más de Toshiyuki Hirata (7)

iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
 
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
 
iOSにおける自動テストの並列化
iOSにおける自動テストの並列化iOSにおける自動テストの並列化
iOSにおける自動テストの並列化
 
UIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめるUIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめる
 
UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法
 
我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有
 
レビューのコストを削減するための施策
レビューのコストを削減するための施策レビューのコストを削減するための施策
レビューのコストを削減するための施策
 

Último

Último (12)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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テスト結果の集計 ⁃ 成果物を保存
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. Jenkinsの例 – 実行結果
  • 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を用意しましょう  ステップの全てを一気にやらず簡単なところから着手しましょう ⁃ まずはアプリのビルドからはじめるのが良いです