$30 off During Our Annual Pro Sale. View Details »

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

Tomohiro Moro

March 25, 2019
Tweet

More Decks by Tomohiro Moro

Other Decks in Programming

Transcript

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

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

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

    View Slide

  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)

    View Slide

  7. Scheduled submission Start submission via Slack
    Developer

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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)

    View Slide

  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

    View Slide