26
Techniques and Tools to Improve the Salesforce Development Cycle Stefan Goor The TAS Group

Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 1: Techniques and Tools to Improve the Salesforce Development Cycle

Techniques and Tools to Improve the Salesforce Development Cycle

Stefan GoorThe TAS Group

Page 2: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 3: Techniques and Tools to Improve the Salesforce 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?)

Page 4: Techniques and Tools to Improve the Salesforce Development Cycle

Salesforce Development ChallengesLearning Salesforce

Technologies

Organization Restrictions

Version Control

AutomatedTesting

Isolated Feature Development

Continuous Integration

Page 5: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 6: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 7: Techniques and Tools to Improve the Salesforce Development Cycle

Managing Organizations

Page 8: Techniques and Tools to Improve the Salesforce Development Cycle

Reusable Development Organizations

• Deploy Source Code

• Retrieve Source Code

• Undeploy Source Code

Migration Tools

Special thanks to FinancialForce for their deployment tools

Page 9: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 10: Techniques and Tools to Improve the Salesforce Development Cycle

Salesforce Development ChallengesLearning Salesforce

Technologies

Organization Restrictions

Version Control

AutomatedTesting

Isolated Feature Development

Continuous Integration

Page 11: Techniques and Tools to Improve the Salesforce Development Cycle

Automated Version ControlBenefits of Version Control

Branching & Merging

Code history / audit trail

Collaborative development

Prevents lost code

Page 12: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 13: Techniques and Tools to Improve the Salesforce Development Cycle

Automated Version Control

developer org

developer org

developer org

Page 14: Techniques and Tools to Improve the Salesforce Development Cycle

Salesforce Development ChallengesLearning Salesforce

Technologies

Organization Restrictions

Version Control

AutomatedTesting

Isolated Feature Development

Continuous Integration

Page 15: Techniques and Tools to Improve the Salesforce Development Cycle

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)

Page 16: Techniques and Tools to Improve the Salesforce Development Cycle

Automated Testing

testing org

Source Code:Apex,

Visualforce etc

Page 17: Techniques and Tools to Improve the Salesforce Development Cycle

Salesforce Development ChallengesLearning Salesforce

Technologies

Organization Restrictions

Version Control

AutomatedTesting

Isolated Feature Development

Continuous Integration

Page 18: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 19: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 20: Techniques and Tools to Improve the Salesforce Development Cycle

Salesforce Development ChallengesLearning Salesforce

Technologies

Organization Restrictions

Version Control

AutomatedTesting

Isolated Feature Development

Continuous Integration

Page 21: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 22: Techniques and Tools to Improve the Salesforce Development Cycle

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

Page 23: Techniques and Tools to Improve the Salesforce Development Cycle

Merging Example

TRUNK

1.1

1.2

1.3

Feat

ures

Patc

hes

A B

C

Page 24: Techniques and Tools to Improve the Salesforce Development Cycle

Salesforce Development ChallengesLearning Salesforce

Technologies

Organization Restrictions

Version Control

AutomatedTesting

Isolated Feature Development

Continuous Integration

Page 25: Techniques and Tools to Improve the Salesforce Development Cycle

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 /

Page 26: Techniques and Tools to Improve the Salesforce Development Cycle

Q & A