Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Thoughts about build flow

March 28, 2019

Thoughts about build flow


March 28, 2019

More Decks by Muukii

Other Decks in Programming


  1. 4PVUI,PSFB Japan Taiwan No.1 2017 release No.1 !5 1BJSTʹ͍ͭͯ ల։ࠃ

    ̐ͭͷϓϥοτϑΥʔϜ CONFIDENTIAL INFORMATION: Not for Public Distribution - Do Not Copy
  2. • Summary • Current build flow of Pairs Global •

    We are moving our build flow to the cloud Contents
  3. • Building on cloud CI/CD took a very long time

    until now • But now • Swift compiler is faster (4.2 batch mode) • We can build large applications on cloud CI/CD Summary
  4. 1. Run UnitTests 2. Archive 3. Upload to AppStoreConnect 4.

    Create git-tag using timestamp 5. Upload artifact to git-tag on GitHub Flow
  5. • Beta • For Testing (Internal / External) • Release

    • For Release and for Testing (Internal / External) Archive
  6. • We can install beta / release apps with TestFlight

    • Using Internal / External Testers Upload to AppStoreConnect
  7. • After successful upload to AppStoreConnect • Create a tag

    with environment and timestamp • v50.4.0-appstore.53240316.1 • v50.4.0-beta.52968482.0 Create git-tag using timestamp
  8. • We created a large application • Over 140000 lines

    Swift Code • CI/CD took over 1 hour to archive or time out • Building the code of CocoaPods • Building the code of Application With Swift2.x
  9. • Jenkins is an open source automation server written in

    Java • Powerful & Flexible Jenkins
  10. • Setting up is too hard for us * •

    Does not have cool UI Design * • https://ci.swift.org/ is better. But,
  11. • https://github.com/eure/Tower • Watch branch with polling • Run shell-script,

    if Tower finds new commits on a branch • That’s it. But actually just what I needed. eure/Tower instead of Jenkins
  12. • Creating Server Software has some difficult points. • Manage

    child-process • Zero memory leaks • To keep working as long as possible But,
  13. • Multi-branch Pipeline • Blue Ocean is a plugin •

    Jenkins + Blue Ocean = Better UI Design (Better) Jenkins + Blue Ocean
  14. • Management cost of Jenkins is high • With Bitrise,

    we can see the status of tasks from online We are trying to use Bitrise
  15. • Longer archive time, but it’s no big deal •

    Incredibly fast compared to few years ago Awesome
  16. • Carthage creates prebuilt frameworks. • No need to build

    them for archive • Most of archiving time is building frameworks managed by CocoaPods in our project • Recently, we came back to CocoaPods We can reduce it with Carthage
  17. • LLDB does not work well with Carthage. • "error:

    Couldn't IRGen expression, no additional error" • To create an umbrella framework that includes many static frameworks • App launch time will be faster by reducing dynamic linking. Why we use CocoaPods
  18. • Easier to debug inside libraries. • We can notice

    debug logs from libraries. Why we use CocoaPods