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 backend infrastructure got more complex with the addition of many microservices. Ensuring our apps to work with these microservices in production is key to SoundCloud's continuing success. That's why we're building custom continuous integration solutions for our mobile apps.

https://www.youtube.com/watch?v=Rq721qtKKNk

Vincent Garrigues

September 16, 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 August 2014 December 2014 April 2015 August 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