Automating Your Way
out of the Dark Ages
Our experience with
(and without)
PhoneGap Build @burin
creative commons licensed...
This Talk
our experience w/ PhoneGap Build
and how it spoiled us
about PhoneGap specifically
what we did when we couldn’t ...
Timeline
Building Manually w/ Xcode & Eclipse
Building/Distributing w/ PhoneGap Build
Manual Builds (again)
Distribution w...
The Redesign
From:
Native iOS
Native Android
Native BlackBerry
Native Windows Mobile
mobile web
touch web
Android touch
To:
HTML5!
!
mobile web, iOS, Android, BlackBerry*
creative commons licensed (BY-NC-SA) flickr photo by x-ray delta one:
http://flickr.com/photos/x-ray_delta_one/3928200642
...
Chrome = WebKit
Safari = WebKit
Android browser = WebKit
BlackBerry browser = WebKit
Test in Chrome, because
WebKit.
QA team:
“I wonder how it behaves on
Android 2.3 wrapped”
Test in Chrome, because
WebKit?
Nope. :(
iOS:

Safari. WebView. Chrome.
Android:

Browser. WebView. Chrome.
BlackBerry:

6.0? 7.0? 10?
Chrome Blink?
I’ll just Build
Manually with
Xcode & Eclipse
The Dark Age
git pull
compass compile
node r.js -o app.build.js
⌘C ⌘P
Copy/Paste Files into www
Plug In Phone
Plug In Phone #2
Plug In Phone #3
The Renaissance
With PhoneGap Build:
git pull
./build.sh
Automate All the Things!
# on every commit	
# 1) build app	
# 2) zip it	
# 3) upload via API
Went from building once a week
(maybe)
to

building multiple times a day
Timeline
Building Manually w/ Xcode & Eclipse
Building/Distributing w/ PhoneGap Build
Manual Builds (again)
Distribution w...
Outgrowth:
Manual Builds Again
Unsupported Plugins
Manually Building (again)
Manually Distributing (again)
The Dark Age 2.0
“Building”
git pull
./build.sh
“Distributing”
Me: "Want to help? Install this app and email me your UDID"
Teammate: *"I emailed you my UDID the other day, when can I in...
The Renaissance 2.0
TestFlight to the rescue! (for
iOS)
Hockey App to the rescue! (for
Android)
Automating the Build AND
Distribution
Goals
Push button “deploy”
Continuous Integration
Reduce TTHN (Time to HackerNews)
Xcode
Xcode Command Line Tools
xcrun	
!
xcodebuild	
!
agvtool	
!
Shenzhen
Ruby gem that creates .ipa files
!
Distributes to TestFlight
!
Part of nomad (http://nomad-cli.com/)
gem install shenzhen
ipa build -s {{projectName}} -c Release
ipa distribute 	
——api_token {{apiToken}} 	
——team_token {{teamToken}} 	
——lists "Core" --notes {{notes}} 	
--notify --rep...
Eclipse
ant release
mv bin/{{AppName}}.apk 	
~/Dropbox/Builds/{{appName}}.apk
More Automation
configure api endpoint
add build information
concatenate/minify
compile templates
compass compile
move files to xcode
move...
configure xcode project bundle id to be branch name
configure xcode project app name to be branch name
configure xcode pro...
Cordova CLI does some of this
for you, too
cordova build ios	
cordova prepare ios	
cordova compile ios	
cordova emulate ios
Cordova CLI
Resources
[PhoneGap](https://phonegap.com/)
[PhoneGap Build](https://build.phonegap.com/)
[TestFlight](https://testflighta...
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Automating Your Way out of the Dark Ages: Our Experience with (And Without) PhoneGap Build
Upcoming SlideShare
Loading in...5
×

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

2,456

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
2,456
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
22
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:
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×