Slide 1

Slide 1 text

CI/CD for mobile apps at Cookpad Bitrise & Cookpad Developer Meetup 2019/3/25 茂呂 智大 @slightair

Slide 2

Slide 2 text

CI/CD for mobile apps at Cookpad ● Unit Testing on each PR ● Daily UI Testing (Cookpad App) ● Building apps for In-house delivery ● Building apps for release and auto submission ● Support release flow tasks

Slide 3

Slide 3 text

Testing ● Unit Testing ○ The number of tests depends on the project ○ There are about 1,100 test cases in ios-cookpad ● UI Testing ○ Testing for Cookpad app with Appium, EarlGrey ○ Consuming much time (9+ hours!) ○ There are about 180 scenarios in ios-cookpad

Slide 4

Slide 4 text

In-house app delivery ● Upload app binary to in-house delivery service ○ Private delivery system “Haneda” (iOS/Android) ■ Internal network or G Suite authentication required ○ Google Play Store internal test track (Android) ● Delivery target ○ master branch ○ some PRs (labeled “InHouseBuild” on GHE PR)

Slide 5

Slide 5 text

動作確認のための社内アプリ配信サービスを新たに作った話 / iOSDC 2018: https://speakerdeck.com/slightair/iosdc-2018

Slide 6

Slide 6 text

Auto submission ● Scheduled submission with CI machines on every week (Cookpad app) ○ Start submission process automatically at 2:00 a.m. on Fridays ● Start submission process via Slack (Other apps)

Slide 7

Slide 7 text

Scheduled submission Start submission via Slack Developer

Slide 8

Slide 8 text

Support release flow tasks ● Create Issue for release check ● Start next milestone ○ Bump up version ○ Reset release notes ○ Create milestone ● Remind about stale issues

Slide 9

Slide 9 text

Using fastlane heavily ● Set up development environment ● Running tests ● Running submission/release tasks ○ Versioning app metadata, screenshots ● Certificates/Provisioning Profiles management ● Create in-house plugin fastlane-plugin-cookpad

Slide 10

Slide 10 text

Certificates management with fastlane match ● Manage certificates/provisioning profiles in GHE repository ● Each CI machines retrieve and decrypt certificates ● Developers do not need to install certificates to their machines iOSアプリのサブミット自動化と証明書管理の効率化 - クックパッド開発者ブログ : https://techlife.cookpad.com/entry/2018/05/17/113000 Developer

Slide 11

Slide 11 text

Facing problems ● Job queue congestion, long time waiting ○ Peak time is early evening in Japan ■ Global team members start working ○ Increasing mobile app projects ● CI machines scaling is hard ○ Specially, mac for iOS apps (shortage of set up automation, physical machines) ● Make self-service as much as possible on project ○ Project member ops faster than wait for mobile-infra team ops ○ Make a project team select technical means (includes CI services)

Slide 12

Slide 12 text

Our hope to cloud CI services ● Easy CI stacks scaling ○ Good provisioning tools support ○ Flexible CI Stacks Scaling (e.g. considered peak time, number of jobs, etc...) ● Wide choice development environment support ○ Xcode/Android SDK versions, React Native etc… ● Easy set up build steps, management, reusability ● Early follow to dev tools updates