Continuous Integration in Genentech & Roche developmentContinuous Integration in Genentech & Roche development
Two different approaches for SFDC development process
Radoslaw Krawiec, Roche, SFDC Specialist Software Development
Lukasz Kaczmarek, Roche, SFDC Senior Specialist Software Development
Radoslaw KrawiecRadoslaw Krawiec
SFDC Specialist Software DevelopmentSFDC Specialist Software Development
Lukasz KaczmarekLukasz Kaczmarek
SFDC Senior Specialist Software DevelopmentSFDC Senior Specialist Software Development
Agenda
• Roche and Genentech Overview
• Roche and Genentech Environments
• Deployment Process Differences
• Continuous Integration
• OrgStats
• External Job Scheduler
• Static Code Analyzer
All about Roche & Genentech
„Doing now what patients need next”
http://www.roche.comhttp://www.gene.com
All about Roche & Genentech
Pharmaceuticals
Diagnostics
http://www.roche.comhttp://www.gene.com
All about Roche & Genentech
Pharmaceuticals
http://www.roche.comhttp://www.gene.com
All about Roche & Genentech
Diagnostics
http://www.roche.comhttp://www.gene.com
Genentech environment
Second biggest SFDC implementation
Approximately 40 projects and modules in Production
Development of 10 projects in a time
40 developers on 3 different continents
20 million characters of Apex Code in dev sandbox
3500 Apex Classes
1500 VF pages
Genentech environment
850 Custom Objects (+130 Custom Settings)
400 Triggers
400 Custom Tabs
200 profiles
4 000 internal users
20 000 external user
Roche environment
Seven SFDC production organizations (e.g. Europe, Asia, Latin America).
They have in total:
25 full sandboxes, 27 config. sandboxes, 150 dev. sandboxes
Approximately 15 projects in Production
Development of 7 projects in a time
50 developers located in 4 countries (90% in Poland)
19 million characters of Apex Code
4200 Apex Classes
1860 VF pages
Roche environment
Seven SFDC production organizations (e.g. Europe, Asia, etc).
They have in total:
1200 Custom Objects (+65 Custom Settings)
760 Triggers
290 Custom Tabs
110 profiles
26 000 active users
Deployment process
GenentechGenentech
RocheRoche
multi-time zone workno dedicated sandboxes for developers
! conflict management
multi-time zone workdedicated developer sandboxes
! conflict management
installation procedure documents
ANT packages manual configuration
custom apps
Subversion control (Jira, Fisheye, Crucible)
Continuous Integration
Selenium manual steps
custom apps
Continuous IntegrationProcess setup and structure
Development Quality check Validation and deployment
DEV
DEVSVNSVN
DEV
SeleniumSelenium
Continuous IntegrationProcess setup and structure
Development Quality check Validation and deployment
DEV
DEVSVNSVN
DEV
SeleniumSelenium
Selenium manual steps
Continuous IntegrationProcess setup and structure
Development Quality check Validation and deployment
DEV
DEVSVNSVN
DEV
SeleniumSelenium
OrgStats
Repository Synchronization
Repository Synchronization
Change ScannerChange Scanner
Search / OverviewSearch / Overview
Package BuilderPackage Builder
Code ComparisonCode Comparison
Conflict DetectionConflict Detection
Development environments
Development environments
Administrative Tool for assisting deployments
OrgStats tools
Salesforce SOAP/REST API
Salesforce SOAP/REST API
SalesforceOrg I
SalesforceOrg II
Orgstats
Name (wildcards) Type Modification date User Label Content
Choose one or more items
Compare with other orgs Download Add label View Static code analysis
Find by criteriaFind by criteria
SelectSelect
ProcessProcess
Search feature
Static code analyzer
Package.xmlPackage.xml
Static Code Analyzer
(Java app on Heroku)
Static Code Analyzer
(Java app on Heroku)
OrgStatsOrgStats
Analyze Results (PDF/HTML)
Analyze Results (PDF/HTML)
Input file
Apex/VF Page parser
Apex/VF Page parser
Rules Set engine
Rules Set engine
Salesforce ORG
Get metadata components
Retrieved metadata components
Metadata components body
Code parsed to XML nodes
Output report file
Tool for checking coding standards
Continuous IntegrationProcess setup and structure
Development Quality check Validation and deployment
DEV
DEVSVNSVN
DEV
SeleniumSelenium
External Job Scheduler
REST service
REST service
Job registration service
Apex Job IApex Job I
Apex Job IIApex Job II
Apex Job IApex Job I
External Job Scheduler
External Job Scheduler
Salesforce Org I
Salesforce Org I
Salesforce Org II
Salesforce Org II
Avoiding Bamboo build problems through external job callouts
Lukasz KaczmarekLukasz Kaczmarek
Radoslaw KrawiecRadoslaw Krawiec
Slide parts
Slide parts
Slide parts
Slide parts