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

Mobile Continuous Integration at SoundCloud

Mobile Continuous Integration at SoundCloud

In the past two years at SoundCloud, we've shipped a brand new iPhone and iPad app and completely transformed the way we work. The team scaled from 3 to 10 developers, we've moved away from pull-requests and rely heavily on automated testing. As SoundCloud grew, its mobile application got more complex and the number of contributors expanded as well. Maintaining consistency and quality across teams is key to SoundCloud's continuing success. That's why we're building custom continuous integration solutions for our mobile apps.

Vincent Garrigues

April 27, 2015
Tweet

More Decks by Vincent Garrigues

Other Decks in Programming

Transcript

  1. iOS Crash Complaints (avg per Week) 0 35 70 105

    140 April May June July August 2014 SoundCloud community team
  2. iOS Crash Complaints (avg per Week) 0 35 70 105

    140 April 2014 July 2014 October 2014 January 2015 2015 SoundCloud community team
  3. - (id<AnalyticsProviderInterface>)soundcloudInternalProvider { if ([FlipTheSwitch isDevEventgatewayEnabled]) { return [self eventGatewayProvider];

    } else { return [self eventLoggerProvider]; } } Feature flagging github.com/michaelengland/fliptheswitch
  4. mobile api proxy The proxy can change: • response status

    code • response body • record and undo actions (like, repost…)
  5. acceptance tests • iOS version • iPhone (4S, 5, 6,

    6+) • iPad (retina and non retina) • feature flag configurations
  6. flakyrazor 1. Take failing test out of the test pool

    2. Run the test multiple times (flaky or failing?) 3. Assign it to the author/ committer
  7. flakyrazor 4. Assess test value 5. Act on test duration

    changes 6. Show statistics on why the test failed
  8. • we have images for all the machines • CLIs

    to provision the machines remotely • OS X server stores the images and controls the imaging process