Upload
salesforce-developers
View
247
Download
3
Embed Size (px)
DESCRIPTION
This session will demonstrate some of the solutions used to create an efficient, robust, and flexible development process. You'll learn how to take advantage of reusable development organizations, isolated feature development, automated version control, continuous integration, and automated testing. By combining the Salesforce Migration Tools, Apache Ant Scripting, Force.com CLI, Apache Subversion, and Jenkins, a reliable and scalable development system can be implemented.
Citation preview
Techniques and Tools to Improve the Salesforce Development Cycle
Stefan GoorThe TAS Group
Introduction• Who should benefit from this talk?
– ISV Development Teams– Development Teams new to Salesforce
• Traditional development techniques
• What will be covered?– Reducing development obstacles– Managing source code– Automated testing– Improving feature development– Improve development cycle
Introduction• The TAS Group– Salesforce ISV– Several large managed packages
• Typical challenges of large code base– Source Code Management– Collaborative Development
• Salesforce platform doesn’t solve all the problems (yet?)
Salesforce Development ChallengesLearning Salesforce
Technologies
Organization Restrictions
Version Control
AutomatedTesting
Isolated Feature Development
Continuous Integration
Reusable Development Organizations• No local environment for developers• Many developers + 1 Organization (Org) = Code Conflicts• Avoid development in Publishing Org• Org preparation takes time
Partner Portal• Create Org• Enable Cascade
Delete• Increase Apex Limit
etc…
Remove Default Content• Migration Tools
Organization Security Settings• IP Addresses• Password Policies
Create Users• Assign Permissions• Adjust Profiles
Configure Organization Settings• Namespace• Enable Features
• Solution: Create a collection of reusable Orgs
Reusable Development Organizations
• Maintain List of Orgs
• Reserve Orgs for projects
Manage Orgsdevelopment org
development org
development org
development org
development org
development org
development org
development org
development org
development org
Managing Organizations
Reusable Development Organizations
• Deploy Source Code
• Retrieve Source Code
• Undeploy Source Code
Migration Tools
Special thanks to FinancialForce for their deployment tools
Migration Tools• Deploy
– Reserve Org in Org List– Substitute Namespace– Push source code to
Organization
• Retrieve– Export Source Code– Remove Org Specific
references
• Undeploy – Blank all code
• Apex Classes• Apex Triggers• Formulas• Visualforce Components• Visualforce Pages
– Deploy blanked content– Undeploy hierarchical rollup fields
in sequence– Remove remaining content– Update Org List
Manual StepsApache Ant TasksMigration Tools Tasks
Salesforce Development ChallengesLearning Salesforce
Technologies
Organization Restrictions
Version Control
AutomatedTesting
Isolated Feature Development
Continuous Integration
Automated Version ControlBenefits of Version Control
Branching & Merging
Code history / audit trail
Collaborative development
Prevents lost code
Branching & Merging• Branching
– Create a clone of project (files & directories)– Manages changes in isolation of original project– Original project branch referred to as trunk
• Merging– Reintegrate changes from one branch to another– Merges work in both directions– Merging may require manual conflict resolution
TRUNK
Project
Automated Version Control
developer org
developer org
developer org
Salesforce Development ChallengesLearning Salesforce
Technologies
Organization Restrictions
Version Control
AutomatedTesting
Isolated Feature Development
Continuous Integration
Automated Testing• Validate new or changed code• Special Org reserved for Testing• Salesforce Migration Tools
– Test Deploy– Run All Tests
• Jenkins Continuous Integration (CI) Server– Schedule apache ant & migration tool jobs
• Daily• As Needed
– Notification of any failures (including logs)
Automated Testing
testing org
Source Code:Apex,
Visualforce etc
Salesforce Development ChallengesLearning Salesforce
Technologies
Organization Restrictions
Version Control
AutomatedTesting
Isolated Feature Development
Continuous Integration
Isolated Feature Development• Keep different projects / features separate
– 1 Feature : 1 Development Org– Create a Subversion (SVN) Branch for feature– Deploy branched code to Org
• Reintegrate new features to core application– Safely extend managed packages
• Prevents accidental dependencies• Reduces source code conflicts
Feature Branching in Force.com
• Trunk contains Publishing Org code• Branched of trunk is deployed to development Org• Merge back to trunk when feature complete• Deploy merged code to managed package org and create betas / managed package• Development Org can then be undeployed and recycled
Feature Apublishing org
TRUNK
publishing org
development org
Deploy
DeployRetrieve
Retrieve
Salesforce Development ChallengesLearning Salesforce
Technologies
Organization Restrictions
Version Control
AutomatedTesting
Isolated Feature Development
Continuous Integration
Continuous Integration• Each of our Salesforce Apps has
– Packaging Org– Patch Org(s)– Feature Org(s)
• Bug fixes need to propagate to all Orgs– From earliest version forward
• Automatic merges – Only if
• no conflicts in merge• no test failures in branch being merged
– Successful merge deployed to org
Continuous Integration• Ant tasks for SVN merge• Automatic (Jenkins) merge order
– Start at earliest patch org– Merge incrementally to other patch orgs
• 1.1 to 1.2, 1.2 to 1.3 etc
– Merge latest patch branch to Trunk branch– Merge trunk to all feature branches
• Manual only merges– From Trunk to new patch orgs– From Features orgs to Trunk
Merging Example
TRUNK
1.1
1.2
1.3
Feat
ures
Patc
hes
A B
C
Salesforce Development ChallengesLearning Salesforce
Technologies
Organization Restrictions
Version Control
AutomatedTesting
Isolated Feature Development
Continuous Integration
Useful Links• Migration Tools
– http://www.salesforce.com/us/developer/docs/daas /
• Apache Ant– http://ant.apache.org /
• Jenkins CI– http://jenkins-ci.org/
• Subversion– https://subversion.apache.org /
• FinancialForce deployment tools– https://github.com/financialforcedev/df12-deployment- tools
• Force.com CLI– https://force-cli.heroku.com /
Q & A