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

Xcoder

Ray Yamamoto Hilton
December 13, 2012
4.3k

 Xcoder

Ruby toolkit for managing Xcode builds. This was presented at the DiUS iOS special interest group.

Ray Yamamoto Hilton

December 13, 2012
Tweet

Transcript

  1. Background • Every project wants to automate build process •

    But every project is slightly different • Xcode changes (workspaces, testing, etc) • Efforts tended towards shell scripts - brittle, obfuscated and inexpressive Friday, 14 December 12
  2. Motivations • Commodify continuous integration for ios • Provide toolkit

    (not a framework) for building projects • Use Rakefile, etc, to manage project tasks • Consistent build process locally and in CI • Manage key chains, provisioning profiles • Reduce overhead for ramping up new projects Friday, 14 December 12
  3. Why CI? • Forces you to make tough things easy

    • reproducible, consistent build process • Minimise time to feedback • Continuous delivery via testflight, etc Friday, 14 December 12
  4. Xcode Jenkins plugin • Xcode for Jenkins • Very simple

    • Too rigid • Cannot run the same build process locally • Java Friday, 14 December 12
  5. Project • Install provisioning profiles • Manage key chains •

    Enumerate project and workspace structure • Edit info plist • Build dependencies into local build/ directory Friday, 14 December 12
  6. Build • Perform a build given a target and config

    • Support for workspaces and schemes is not so great • Bundle into a .ipa and .dsym.zip Friday, 14 December 12
  7. Testing • Support for logic tests • Output parsing to

    provide rspec style console output • Junit format test reports • No support for applications tests Friday, 14 December 12
  8. Deployment • Currently Testflight • Could easily add S3, HockeyApp,

    Email etc • Checkout Kickfolio for in-browser testing - API coming soon Friday, 14 December 12
  9. Project files • Read and write project structures • Writing

    mostly works, but pbxproj files are a bit convoluted. • Example: rewrite filesystem to match project structure Friday, 14 December 12
  10. Future • Better scheme supports • Application testing via Stew

    Gleadows's work • Some serious refactoring • xcoder command line tool for setting up new projects (rails init-esque) Friday, 14 December 12