CI/CD for mobile apps at Cookpad / Bitrise & Cookpad Developer Meetup

CI/CD for mobile apps at Cookpad / Bitrise & Cookpad Developer Meetup

Bitrise & Cookpad Developer Meetup
2019/3/25

0e463e4432ba6d9b7ef02dbebe99c70d?s=128

Tomohiro Moro

March 25, 2019
Tweet

Transcript

  1. CI/CD for mobile apps at Cookpad Bitrise & Cookpad Developer

    Meetup 2019/3/25 茂呂 智大 @slightair
  2. 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
  3. 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
  4. 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)
  5. 動作確認のための社内アプリ配信サービスを新たに作った話 / iOSDC 2018: https://speakerdeck.com/slightair/iosdc-2018

  6. 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)
  7. Scheduled submission Start submission via Slack Developer

  8. Support release flow tasks • Create Issue for release check

    • Start next milestone ◦ Bump up version ◦ Reset release notes ◦ Create milestone • Remind about stale issues
  9. 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
  10. 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
  11. 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)
  12. 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