ci for force dot com
TRANSCRIPT
Continuous Integration for Force.com Projects
Don McIntosh@donmac23
Continuous Integration
Automating software build and release processes with built in quality control
Change Sets
Sandbox Flow for Small Teams
Deployment via Changesets
Dev Dev
QA
UAT
Prod
Dev Dev
Do I Need Better CI?
• IF you:– find it hard to manage changed components– have devs overwriting each other’s code– find collaboration between developers difficult– want earlier/more frequent integration between
devs’ work– want a more detailed change history
• OR:– are working in independent dev orgs
Benefits
• Supports Agile process well• Scales to large teams• Detailed, auditable version history• Flexible version control• Easy(ish) to set up new Orgs• Works on any set of Orgs, not just related
sandboxes + prod
What Do I Need?
• CI Tool (Jenkins, Bamboo, Teamcity…)• Server for CI (or find a hosted service)• SCM (Git, SVN…)• Ant + Force.com Migration Tool• Shared list for manual changes• Development process• Package.xml contents
DevDev
Dev
CI
Test
UAT
Prod
Release ManagementMaster (prod) Develop (CI) QA UAT
Tim
e
Basic CI with Jenkins
• Automated checks run on each change to source code (and/or config)
• Prominent success/failure notification• Easy deployment to multiple Orgs• Build statistics• Build history and status for each Org• Demo…
Multiple update scenario
• Fred:– Deletes field “Segment” from Account and
replaces it with standard field “Industry” on Account page layout “Food Service Corporate Accounts”
• Don:– Adding the field “SIC Description” to the same
page layout
Salesforce Challenges & Solutions
• Reconciling profile changes• Preventing regression back to obsolete config
Useful Improvements
• Automated code analysis (eg: Village Chief’s Codescan)
• System tests• Refresh sample records in test Orgs • Reports (eg: metadata summaries)• Direct integration with issue tracking software
A Few Tips
• Pull often, not just when you are about to push
• Refresh from prod to bypass manual steps• Expect some road bumps, especially early on• Build light is genuinely useful• Use a physical token for committing changes• Pay some attention to keeping unit tests fast
Thanks!