Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build

3,007 views
2,784 views

Published on

This is a talk sharing TripCase's (http://phonegap.com/app/tripcase/) experience with (and without) PhoneGap Build. We'll walk through our journey and discuss how it shaped expectations on how quickly we should be getting our code in the hands of fellow testers and stakeholders.

0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,007
On SlideShare
0
From Embeds
0
Number of Embeds
56
Actions
Shares
0
Downloads
24
Comments
0
Likes
17
Embeds 0
No embeds

No notes for slide

Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build

  1. 1. Automating Your Way out of the Dark Ages Our experience with (and without) PhoneGap Build @burin creative commons licensed (BY-NC-ND) flickr photo by Fred Seibert: http://flickr.com/photos/84568447@N00/2060261678
  2. 2. This Talk our experience w/ PhoneGap Build and how it spoiled us about PhoneGap specifically what we did when we couldn’t use it anymore
  3. 3. Timeline Building Manually w/ Xcode & Eclipse Building/Distributing w/ PhoneGap Build Manual Builds (again) Distribution w/ TestFlight & HockeyApp Automated Build & Distribution
  4. 4. The Redesign
  5. 5. From: Native iOS Native Android Native BlackBerry Native Windows Mobile mobile web touch web Android touch
  6. 6. To: HTML5! ! mobile web, iOS, Android, BlackBerry*
  7. 7. creative commons licensed (BY-NC-SA) flickr photo by x-ray delta one: http://flickr.com/photos/x-ray_delta_one/3928200642 Building stuff. Feeling productive. HTML5 all the things.
  8. 8. Chrome = WebKit Safari = WebKit Android browser = WebKit BlackBerry browser = WebKit Test in Chrome, because WebKit.
  9. 9. QA team: “I wonder how it behaves on Android 2.3 wrapped”
  10. 10. Test in Chrome, because WebKit? Nope. :(
  11. 11. iOS:
 Safari. WebView. Chrome. Android:
 Browser. WebView. Chrome. BlackBerry:
 6.0? 7.0? 10? Chrome Blink?
  12. 12. I’ll just Build Manually with Xcode & Eclipse
  13. 13. The Dark Age
  14. 14. git pull
  15. 15. compass compile
  16. 16. node r.js -o app.build.js
  17. 17. ⌘C ⌘P Copy/Paste Files into www
  18. 18. Plug In Phone
  19. 19. Plug In Phone #2
  20. 20. Plug In Phone #3
  21. 21. The Renaissance
  22. 22. With PhoneGap Build:
  23. 23. git pull ./build.sh
  24. 24. Automate All the Things!
  25. 25. # on every commit # 1) build app # 2) zip it # 3) upload via API
  26. 26. Went from building once a week (maybe) to
 building multiple times a day
  27. 27. Timeline Building Manually w/ Xcode & Eclipse Building/Distributing w/ PhoneGap Build Manual Builds (again) Distribution w/ TestFlight & HockeyApp Automated Build & Distribution
  28. 28. Outgrowth: Manual Builds Again
  29. 29. Unsupported Plugins
  30. 30. Manually Building (again)
  31. 31. Manually Distributing (again)
  32. 32. The Dark Age 2.0
  33. 33. “Building”
  34. 34. git pull
  35. 35. ./build.sh
  36. 36. “Distributing”
  37. 37. Me: "Want to help? Install this app and email me your UDID" Teammate: *"I emailed you my UDID the other day, when can I install the app?"* "Um.. let me check. I need to add it to the provisioning profile." Add UDID to provisioning profile git pull Run javascript build script Push a button Forgot to get new provisioning profile into Xcode Refresh profiles Push a button Send it out "it wouldn't install, what's the deal?"* "lemme try again" restart xcode push a button "ok try now"
  38. 38. The Renaissance 2.0
  39. 39. TestFlight to the rescue! (for iOS)
  40. 40. Hockey App to the rescue! (for Android)
  41. 41. Automating the Build AND Distribution
  42. 42. Goals Push button “deploy” Continuous Integration Reduce TTHN (Time to HackerNews)
  43. 43. Xcode
  44. 44. Xcode Command Line Tools xcrun ! xcodebuild ! agvtool !
  45. 45. Shenzhen Ruby gem that creates .ipa files ! Distributes to TestFlight ! Part of nomad (http://nomad-cli.com/)
  46. 46. gem install shenzhen
  47. 47. ipa build -s {{projectName}} -c Release
  48. 48. ipa distribute ——api_token {{apiToken}} ——team_token {{teamToken}} ——lists "Core" --notes {{notes}} --notify --replace
  49. 49. Eclipse
  50. 50. ant release
  51. 51. mv bin/{{AppName}}.apk ~/Dropbox/Builds/{{appName}}.apk
  52. 52. More Automation
  53. 53. configure api endpoint add build information concatenate/minify compile templates compass compile move files to xcode move files to eclipse Grunt Tasks for JS Code
  54. 54. configure xcode project bundle id to be branch name configure xcode project app name to be branch name configure xcode project build id to be commit revision build xcode project distribute app to test flight build eclipse project distribute to server for download Grunt Tasks for Xcode/Eclipse
  55. 55. Cordova CLI does some of this for you, too
  56. 56. cordova build ios cordova prepare ios cordova compile ios cordova emulate ios Cordova CLI
  57. 57. Resources [PhoneGap](https://phonegap.com/) [PhoneGap Build](https://build.phonegap.com/) [TestFlight](https://testflightapp.com/) [Hockey App](http://hockeyapp.net/) [GruntJS](http://gruntjs.com/) [shenzhen](https://github.com/mattt/shenzhen) @burinTwitter:

×