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

Putting Together the Best Continuous Integration and Deployment workflow for iOS Apps

Putting Together the Best Continuous Integration and Deployment workflow for iOS Apps

Dennis Pilarinos

March 12, 2017
Tweet

More Decks by Dennis Pilarinos

Other Decks in Programming

Transcript

  1. Common software development practices Developers and users working together to

    build great applications Create Fix Share Feedback Development Team Users Test
  2. Systems and workflow The systems required to build great software

    Continuous Integration Analytics & Crash Reporting Feedback Continuous Deployment Complex & Cumbersome Difficult to Provision Users Inefficient & Ambiguous Incomplete & Lacking Context Developers Mobile
  3. 19 pages just to get your app built and deployed

    “I spent about 10 hours googling cryptic error messages, when trying to configure the build.” “...if you haven't got a few years of linux admin under your belt, you can write off the rest of the week.” “...in other words: it sucks at building and testing software.”
  4. OR

  5. Minimum supported iOS versions • Most apps support iOS 9

    and up iOS 8 33% iOS 9 48% iOS 7 6% iOS 6 1% iOS 10 12%
  6. watchOS adoption WatchOS 3% Total iOS 97% • Vast majority

    of apps don’t include Apple watch apps
  7. Are people developing tvOS apps? • Relative to iOS apps

    in development, tvOS is vanishingly small tvOS Apps 0.3% iOS Apps 99.7%
  8. What version of cocoapods do teams use? 0.39 1.0 betas

    1.0 1.0.1 1.1.0 betas 1.1.1 1.2.0 betas 1.2.0
  9. Do teams check in the Pods folder? • Gives more

    control, but can cause more difficult merge conflicts Pods folder 54% No Pods folder 46%
  10. What about larger teams? • For teams of 5 or

    more, do they check in the Pods folder? Pods folder 39% No Pods folder 61%
  11. Pods used in more than 15% of apps Dominated by

    Google, Facebook, Realm along with a number of interesting community projects Fabric 49% Crashlytics 47% Alamofire 41% AFNetworking 40% Bolts 38% SDWebImage 37% FBSDKCoreKit 36% FBSDKLoginKit 31% GoogleAnalytics 29% MBProgressHUD 28% GoogleUtilities 28% GoogleSymbolUtilities 27% GoogleInterchangeUtilities 25% FirebaseAnalytics 21% FirebaseInstanceID 21% SwiftyJSON 20% Realm 18% FBSDKShareKit 17% RealmSwift 16% SVProgressHUD 17% Google 17% CocoaLumberjack 16%
  12. Test Related Pods Very few projects contain test related pods

    OCMock 10% Nimble 7% OHHTTPStubs 5% KIF 5% Nocilla 4% Expecta 2% FBSnapshotTestCase 2%
  13. React Native, Ionic, and other hybrid apps • Significant number

    of apps built with React Native Other Cordova 6% Ionic 26% React Native 68%
  14. npm 37 fastlane 29 curl 21 pod 13 S3 9

    git clone 8 gem install 8 CFBundleVersion 7 brew install 7 HockeyApp 4 codecov.io 4 Crashlytics 4 swiftgen 1 What are people doing in custom scripts? Out of a 1000 app sample in buddybuild