SlideShare une entreprise Scribd logo
1  sur  16
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Kyobashi.swfit #2
2016/08/17(Wed)
平田敏之@DeNA
iOSアプリ開発のCI環境
- Jenkins編 -
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 平田 敏之
⁃ DeNA SWET G (テスト基盤チーム etc) 所属
• SWETとは?
⁃ Software Engineer in Test
• http://www.slideshare.net/masaki/dena-software-engineer-in-test
⁃ ミッション
• DeNAサービス全般の品質向上
• DeNAエンジニアの開発生産性向上
• 私が主にやっていること
⁃ クライアントアプリ周りのテスト戦略、自動テストの開発
⁃ CI/CD環境整備
⁃ テスト基盤環境の開発
⁃ などなど
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日のお話
1. iOSアプリ開発で利用しているCI環境はありますか?
2. CI環境のメンテンス、セットアップはどうしていますか?
1. ★ iOSアプリの開発環境のセットアップのツラミ
2. ★ Xcodeのメジャーアップデートというツラミ
3. CI環境でどこまでやっていますか?
1. ★ Slackを使った結果の通知
Copyright © DeNA Co.,Ltd. All Rights Reserved.
IOSアプリ開発で利用しているCI環境はありますか?
※今回はオンプレミス型のCI環境のお話です※
オンプレミスかクラウドのどちらが良いかは対象となるプロジェクトに応じて判断するのが良い
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI環境といえば
 Jenkins
⁃ 言わずとしれた定番だが運用コストがかかる
⁃ なんでも出来るがJenkinsおじさんも出来やすい
⁃ LTS 2.7.2 (https://jenkins.io/changelog-stable/)
 CircleCI
⁃ 簡単に利用できる優れもの
⁃ 痒いところに手が届かない
⁃ Enterprise版もある
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Jenkins 2.7.1 + blueocean plugin
Jenkinsも進化しています
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今回のCI環境の構成(の一部)
 Github
 Jenkins
⁃ setup / maintenance
• Ansible(独自)
⁃ plugin(の一部)
• slack (独自カスタマイズ)
• Xcode複数バージョン管理plugin(独自)
• Ci Skip Plugin
• Copy Artifact Plugin
• Credentials Binding Plugin
• GitHub Pull Request Builder
• Groovy Postbuild
• JUnit Plugin
• Slack Notification Plugin
• Throttle Concurrent Builds Plug-in
 Slack
⁃ Jenkinsの実行結果の通知先
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI環境のメンテンス、セットアップは
どうしていますか?
※インストールしないといけないものが多いという課題※
Copyright © DeNA Co.,Ltd. All Rights Reserved.
iOSアプリ開発の面倒なところ – 環境構築 –
やらないといけないことは多い..
 (1) 定期的に更新をしないといけない
⁃ 証明書
• Apple Developer Programの更新に併せて(1年に1回)
⁃ Provisioning Profile
• デバイスを追加したら
• App IDを追加したら
• Apple Developer Programの更新に併せて(1年に1回)
 (2) Xcodeのバージョン
• メジャーアップデート時期は複数のバージョンが必要
⁃ 複数のバージョンを使ってアプリをビルドしたりする
Copyright © DeNA Co.,Ltd. All Rights Reserved.
(1) 環境のセットアップの簡易化
 課題
⁃ 定期的に更新するのは非常にコスト高
 解決策
⁃ Ansibleを利用してセットアップ
• 証明書のインポート
• Provisioning Profileの設置
⁃ 複数AppleDeveloperProgram対応
• Xcodeのインストール
 現状
⁃ Jenkinsを使って簡易セットアップ
• マルチ構成プロジェクトを用いてslaveマシンを一気にセットアップ
Copyright © DeNA Co.,Ltd. All Rights Reserved.
(2) Xcodeの複数バージョン対応
 課題
⁃ Xcodeを複数インストールし、使い分ける必要がある
• DEVELOPER_DIRに値を入れるようにしたりする
⁃ slaveにインストールされているかの保証は無く手動で設定したり..
 解決策
⁃ Jenkinsの独自プラグインを用意
• インストールされているXcodeを自動チェックし、Labelが貼られる
• 指定したXcodeのバージョンでJobを実行できる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI環境でどこまでやっていますか?
※CI環境を用いたリリースまでのフローについての話は割愛※
Copyright © DeNA Co.,Ltd. All Rights Reserved.
CI環境におけるステップ
1. 個人のマシンで全ておこなっている
1. Xcodeで全ておこなっている
2. CLIで出来るようになっている
• fastlaneなどを使用
2. CI環境がある(※個々の詳細については割愛)
1. アプリのビルド
2. 実行結果はSlackなどで通知
3. テストの実行
1. 環境
1. iOSシミュレーター
2. 実機(DeviceFarm / マシンに接続されている端末)
2. 旧バージョンのアプリで実行
4. 検証済のアプリをiTunesConnectにアップロード
5. 検証用(など)にDeployGateなどにアップロード
• Jenkinsから直接DLというのも有
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Slackを用いての通知
 Jenkinsのjobの結果を通知
⁃ Jobが失敗 or 成功したことを伝えたい
• 例) 定期実行の自動テストが失敗したことを全員に伝える
• 例) アプリのビルドが終わったことをjobを動かした人に伝える
• ※@hereや@channelをしすぎるのは逆効果なこともあります※
⁃ 課題
• 現状のslack pluginは良い感じにmentionをしてくれない
⁃ カスタムメッセージを駆使するぐらいしか..
⁃ 解決策
• 現状のslack pluginを改良しちゃえば良い
⁃ slack api使ってuserの情報も取れば良い!
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Slack pluginのカスタマイズ
 機能
⁃ Jobのステータスに応じてmentionを飛ばす
• 任意のuser
• テストフレーズで実行したuser
• JenkinsのJobを実行したuser
• @here
• @channel
Copyright © DeNA Co.,Ltd. All Rights Reserved.
まとめ
 iOSアプリの開発環境のセットアップのツラミ
→ Ansbileで解決
 Xcodeのメジャーアップデートというツラミ
→ 新規にJenkins pluginを作って解決
 Slackを使った結果の通知
→ 既存のJenkins pluginを改良して解決

Contenu connexe

Tendances

バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフToshiyuki Hirata
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるToshiyuki Hirata
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情Toshiyuki Hirata
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCIToshiyuki Hirata
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたToshiyuki Hirata
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Shunsuke Maeda
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割Toshiyuki Hirata
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介Shunsuke Maeda
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるShunsuke Maeda
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x AndroidToshiyuki Hirata
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Toshiyuki Hirata
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercariVishal Banthia
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションmirer
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストToshiyuki Hirata
 
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Masanori Satoh
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
 
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックSEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックKouhei Sutou
 

Tendances (20)

バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフ
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみた
 
Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化Pull request時の画面差分取得の自動化
Pull request時の画面差分取得の自動化
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
Jenkins Bootcamp Premiumのご紹介 in デブサミ2016冬
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
 
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックSEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
 

Similaire à iOSアプリ開発のCI環境 - Jenkins編 -

CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~Yuki Ando
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2Yushi_Takagi
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)TIS Inc.
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみたjustice_sm
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたYasuharu Seki
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方dena_study
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#Yuta Matsumura
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れMitsuru Katoh
 
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 智治 長沢
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
Dev camp2012jpn day2special
Dev camp2012jpn day2specialDev camp2012jpn day2special
Dev camp2012jpn day2specialKatsuhito Katoh
 
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developer Camp 2012 Japan Fall
 
『駅すぱあと』新しい開発基盤の研究
『駅すぱあと』新しい開発基盤の研究『駅すぱあと』新しい開発基盤の研究
『駅すぱあと』新しい開発基盤の研究asatou
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今Yuki Igarashi
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconDeNA
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向Tsutomu Ogasawara
 

Similaire à iOSアプリ開発のCI環境 - Jenkins編 - (20)

CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみた
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 
DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方DeNA流cocos2d xとの付き合い方
DeNA流cocos2d xとの付き合い方
 
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
これからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れこれからのNOTESモバイルアプリはこう作れ
これからのNOTESモバイルアプリはこう作れ
 
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
Dev camp2012jpn day2special
Dev camp2012jpn day2specialDev camp2012jpn day2special
Dev camp2012jpn day2special
 
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
Developr Camp 2012 Japan Fall Day2 Special Session - Visual Studio 2012 で始める ...
 
『駅すぱあと』新しい開発基盤の研究
『駅すぱあと』新しい開発基盤の研究『駅すぱあと』新しい開発基盤の研究
『駅すぱあと』新しい開発基盤の研究
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
Unityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechconUnityネイティブプラグインマニアクス #denatechcon
Unityネイティブプラグインマニアクス #denatechcon
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 

Plus de Toshiyuki Hirata

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

Plus 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を中心とした情報共有
 
レビューのコストを削減するための施策
レビューのコストを削減するための施策レビューのコストを削減するための施策
レビューのコストを削減するための施策
 

Dernier

論文紹介: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 UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: 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 Gamesatsushi061452
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介: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...Toru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Dernier (10)

論文紹介: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
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: 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 カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: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...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

iOSアプリ開発のCI環境 - Jenkins編 -

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. Kyobashi.swfit #2 2016/08/17(Wed) 平田敏之@DeNA iOSアプリ開発のCI環境 - Jenkins編 -
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自己紹介  平田 敏之 ⁃ DeNA SWET G (テスト基盤チーム etc) 所属 • SWETとは? ⁃ Software Engineer in Test • http://www.slideshare.net/masaki/dena-software-engineer-in-test ⁃ ミッション • DeNAサービス全般の品質向上 • DeNAエンジニアの開発生産性向上 • 私が主にやっていること ⁃ クライアントアプリ周りのテスト戦略、自動テストの開発 ⁃ CI/CD環境整備 ⁃ テスト基盤環境の開発 ⁃ などなど
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日のお話 1. iOSアプリ開発で利用しているCI環境はありますか? 2. CI環境のメンテンス、セットアップはどうしていますか? 1. ★ iOSアプリの開発環境のセットアップのツラミ 2. ★ Xcodeのメジャーアップデートというツラミ 3. CI環境でどこまでやっていますか? 1. ★ Slackを使った結果の通知
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. IOSアプリ開発で利用しているCI環境はありますか? ※今回はオンプレミス型のCI環境のお話です※ オンプレミスかクラウドのどちらが良いかは対象となるプロジェクトに応じて判断するのが良い
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI環境といえば  Jenkins ⁃ 言わずとしれた定番だが運用コストがかかる ⁃ なんでも出来るがJenkinsおじさんも出来やすい ⁃ LTS 2.7.2 (https://jenkins.io/changelog-stable/)  CircleCI ⁃ 簡単に利用できる優れもの ⁃ 痒いところに手が届かない ⁃ Enterprise版もある
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. Jenkins 2.7.1 + blueocean plugin Jenkinsも進化しています
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今回のCI環境の構成(の一部)  Github  Jenkins ⁃ setup / maintenance • Ansible(独自) ⁃ plugin(の一部) • slack (独自カスタマイズ) • Xcode複数バージョン管理plugin(独自) • Ci Skip Plugin • Copy Artifact Plugin • Credentials Binding Plugin • GitHub Pull Request Builder • Groovy Postbuild • JUnit Plugin • Slack Notification Plugin • Throttle Concurrent Builds Plug-in  Slack ⁃ Jenkinsの実行結果の通知先
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI環境のメンテンス、セットアップは どうしていますか? ※インストールしないといけないものが多いという課題※
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. iOSアプリ開発の面倒なところ – 環境構築 – やらないといけないことは多い..  (1) 定期的に更新をしないといけない ⁃ 証明書 • Apple Developer Programの更新に併せて(1年に1回) ⁃ Provisioning Profile • デバイスを追加したら • App IDを追加したら • Apple Developer Programの更新に併せて(1年に1回)  (2) Xcodeのバージョン • メジャーアップデート時期は複数のバージョンが必要 ⁃ 複数のバージョンを使ってアプリをビルドしたりする
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. (1) 環境のセットアップの簡易化  課題 ⁃ 定期的に更新するのは非常にコスト高  解決策 ⁃ Ansibleを利用してセットアップ • 証明書のインポート • Provisioning Profileの設置 ⁃ 複数AppleDeveloperProgram対応 • Xcodeのインストール  現状 ⁃ Jenkinsを使って簡易セットアップ • マルチ構成プロジェクトを用いてslaveマシンを一気にセットアップ
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. (2) Xcodeの複数バージョン対応  課題 ⁃ Xcodeを複数インストールし、使い分ける必要がある • DEVELOPER_DIRに値を入れるようにしたりする ⁃ slaveにインストールされているかの保証は無く手動で設定したり..  解決策 ⁃ Jenkinsの独自プラグインを用意 • インストールされているXcodeを自動チェックし、Labelが貼られる • 指定したXcodeのバージョンでJobを実行できる
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI環境でどこまでやっていますか? ※CI環境を用いたリリースまでのフローについての話は割愛※
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. CI環境におけるステップ 1. 個人のマシンで全ておこなっている 1. Xcodeで全ておこなっている 2. CLIで出来るようになっている • fastlaneなどを使用 2. CI環境がある(※個々の詳細については割愛) 1. アプリのビルド 2. 実行結果はSlackなどで通知 3. テストの実行 1. 環境 1. iOSシミュレーター 2. 実機(DeviceFarm / マシンに接続されている端末) 2. 旧バージョンのアプリで実行 4. 検証済のアプリをiTunesConnectにアップロード 5. 検証用(など)にDeployGateなどにアップロード • Jenkinsから直接DLというのも有
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. Slackを用いての通知  Jenkinsのjobの結果を通知 ⁃ Jobが失敗 or 成功したことを伝えたい • 例) 定期実行の自動テストが失敗したことを全員に伝える • 例) アプリのビルドが終わったことをjobを動かした人に伝える • ※@hereや@channelをしすぎるのは逆効果なこともあります※ ⁃ 課題 • 現状のslack pluginは良い感じにmentionをしてくれない ⁃ カスタムメッセージを駆使するぐらいしか.. ⁃ 解決策 • 現状のslack pluginを改良しちゃえば良い ⁃ slack api使ってuserの情報も取れば良い!
  • 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. Slack pluginのカスタマイズ  機能 ⁃ Jobのステータスに応じてmentionを飛ばす • 任意のuser • テストフレーズで実行したuser • JenkinsのJobを実行したuser • @here • @channel
  • 16. Copyright © DeNA Co.,Ltd. All Rights Reserved. まとめ  iOSアプリの開発環境のセットアップのツラミ → Ansbileで解決  Xcodeのメジャーアップデートというツラミ → 新規にJenkins pluginを作って解決  Slackを使った結果の通知 → 既存のJenkins pluginを改良して解決