SlideShare uma empresa Scribd logo
1 de 29
Salesforce.com Team Development
Carlos Ramirez Martinez-Eiroa
Index



 Safe Harbor Statement
 Team Development Basics
 Continuous Integration
 Demo
 Non-packaged Development
 Package Development
 Non-packaged Gotchas
 Package Gotchas
 ANT Migration Tool
 Resources
 Q&A
Safe Harbor Statement



 We don’t have all the answers, but… it’s working!


 Also, no need to take notes:


http://www.soliantconsulting.com/blog/2013/03/salesforcecomforceco
m-team-development
Team Development Basics
Team Development Basics



 Version Control (SVN, Git, ...)


 Separate Development Environment for each Developer


 Unit Testing (Salesforce provides JUnit-like framework)


 Continuous Integration (Jenkins/Hudson, Bamboo, ...)
Team Development Process


1. One developer commits all code to a new repo from a project
   connected to the sandbox (1st commit)

2. Other developers in the team check out the project

3. Developers update their local project at the beginning of the day

4. Developers commit code to, and update from, the repo one or
   more times a day

Resource: http://www.soliantconsulting.com/blog/2013/03/working-
forcecom-ide-and-subversion-svn
Repo = Gospel

Developer Org = Scratch Paper
Continuous Integration
What does it do?



1. Pulls the code from the repo (from version control) on
   a scheduled basis

2. Runs all the automated tests

3. Deploys to a Test/UAT environment (ANT Migration
   Tool)

4. Notifies team (by email) if there was any issue
Advantages



 Developers don’t need to be running the tests manually
  every time they change code

 There is no need to manually deploy to a test/UAT org
  for other stakeholders to see the status of the project

 There is immediate feedback to the team if there is any
  issue with the code
Demo

SVN + Bamboo
Development
Scenarios




A. Non-Package Development

B. Package Development
Scenario A: Non-Package Development



 Shared Version Control Repository

 One Developer Sandbox* per Developer

 Possibly one Sandbox for internal testing

 Definitely one Sandbox for UAT
Why Developer Sandboxes?

 If Developer Orgs are free, why do we need a Developer
  Sandbox for each developer?
               because of 3rd party managed packages!

 Usually Salesforce applications have managed packages
  installed, and references to these packages in Apex and/or
  VF.

 Some packages cannot be installed in Developer Orgs
  because:
   They are deprecated

   They ask for credentials

   Dev orgs are just not supported
Main issue to address:

  Cost to purchase additional Developer Sandboxes

    Can we tell clients that this is a requirement*?

               *Only during development
Scenario B: Package Development


 Shared Version Control Repository

 One Developer Org per Developer - connected to repo

 One Partner Developer Org (20 accounts) for Testing/QA -
  connected to repo

 One Developer Org for Packaging - connected to repo

 Up to 4 different edition orgs for UAT - NOT connected to
  repo (deploy code as Managed Package)
Gotchas
Scenario A: Non-Package Gotchas



 All changes in production must be replicated in AT
  LEAST one developer Sandbox

  (they will be pulled from this one and add it to the repo)

 Refresh Sandbox only AFTER all changes have been
  deployed
Scenario B: Package Gotchas I



 Do NOT create the package until the end - creating a
  package will add the namespace prefix to all
  classes, fields, objects, etc.


 To avoid prefix issues (so that code can be deployed to
  multiple Developer Orgs):


     Do not use any prefix in Apex code (apex code will work
      with or without prefix)

     Use try-catch in Javascript calls from buttons (show)
Scenario B: Package Gotchas II



     Use try/catch in webservice calls (same as in
      JavaScript)

       Calls to methods annotated with @webservice
       from either JavaScript or from an external
       application need to use the prefix.

     To call Apex code from JavaScript in a VF page you
      can user $RemoteAction (will automatically
      resolve the namespace)
Namespace Prefix Substitution



Some of the issues mentioned above can be
automatically handled by this project:

    github.com/jordanbaucke/sfdc-namespace-prefix

Glorified search and replace.

Bamboo runs this script after checking out the code from
the repository, but before deploying it to the packaging
org.
Setup & Configuration
Ant Migration Tool



 Used by Jenkins or Bamboo

 Can be used from Force.com
  IDE, MavensMate, Command Line, ...

 Extension to Ant

 Allows you to automate deployment, running
  tests, ...
Ant Migration Tool Config



Build.xml




Build.properties
Resources
 Blog post:
  soliantconsulting.com/blog/2013/03/salesforcecomforcecom-team-
  development

 LinkedIn discussion:
  linkedin.com/groupAnswers?viewQuestionAndAnswers=&discussionI
  D=221804807&gid=142613

 SVN:         subversion.apache.org

 Git:         git-scm.com

 Jenkins:     jenkins-ci.org

 Bamboo:      atlassian.com/software/bamboo
Thank You!
Q&A

Mais conteúdo relacionado

Mais procurados

Salesforce Continuous Integration with AutoRABIT
Salesforce Continuous Integration with AutoRABITSalesforce Continuous Integration with AutoRABIT
Salesforce Continuous Integration with AutoRABITVishnu Raju Datla
 
Managing Change With A Sensible Sandbox Architecture
Managing Change With A Sensible Sandbox ArchitectureManaging Change With A Sensible Sandbox Architecture
Managing Change With A Sensible Sandbox ArchitectureAlexander Sutherland
 
Automating the Impossible: End to End Team Development for ISVs (October 14, ...
Automating the Impossible: End to End Team Development for ISVs (October 14, ...Automating the Impossible: End to End Team Development for ISVs (October 14, ...
Automating the Impossible: End to End Team Development for ISVs (October 14, ...Salesforce Partners
 
Introduction to Enterprise-Release Engineering on the Salesforce Platform
Introduction to Enterprise-Release Engineering on the Salesforce PlatformIntroduction to Enterprise-Release Engineering on the Salesforce Platform
Introduction to Enterprise-Release Engineering on the Salesforce PlatformSalesforce Developers
 
5 Essentials for Simplifiied Release Management and Continuous Delivery
5 Essentials for Simplifiied Release Management and Continuous Delivery5 Essentials for Simplifiied Release Management and Continuous Delivery
5 Essentials for Simplifiied Release Management and Continuous DeliverySalesforce Developers
 
Salesforce Release Management and Continuous Integration with AutoRABIT
Salesforce Release Management and Continuous Integration with AutoRABITSalesforce Release Management and Continuous Integration with AutoRABIT
Salesforce Release Management and Continuous Integration with AutoRABITAutoRABIT
 
Automating Deployment Between Orgs Using Git & Continuous Integration
Automating Deployment Between Orgs Using Git & Continuous IntegrationAutomating Deployment Between Orgs Using Git & Continuous Integration
Automating Deployment Between Orgs Using Git & Continuous IntegrationSebastian Wagner
 
Best Practices for Successful Deployment
Best Practices for Successful DeploymentBest Practices for Successful Deployment
Best Practices for Successful DeploymentSalesforce Developers
 
Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)Alexis Williams
 
CI-solutions-Versus-AutoRABIT
CI-solutions-Versus-AutoRABITCI-solutions-Versus-AutoRABIT
CI-solutions-Versus-AutoRABITalkhan50
 
Release Management for Large Enterprises
Release Management for Large EnterprisesRelease Management for Large Enterprises
Release Management for Large EnterprisesSalesforce Developers
 
Scaling Continuous Integration for Puppet
Scaling Continuous Integration for PuppetScaling Continuous Integration for Puppet
Scaling Continuous Integration for PuppetSalesforce Engineering
 
Release & Change management in salesforce
Release & Change management in salesforceRelease & Change management in salesforce
Release & Change management in salesforceKalyan Lanka ☁
 
Upgrade automatically to Sitecore
Upgrade automatically to SitecoreUpgrade automatically to Sitecore
Upgrade automatically to SitecoreJatinder Yadav
 
The definitive guide to salesforce sandbox flosum
The definitive guide to salesforce sandbox flosumThe definitive guide to salesforce sandbox flosum
The definitive guide to salesforce sandbox flosumFlosum
 
Best practices for implementing CI/CD on Salesforce
Best practices for implementing CI/CD on SalesforceBest practices for implementing CI/CD on Salesforce
Best practices for implementing CI/CD on SalesforceAIMDek Technologies
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformTechsophy Inc.
 
Continuous Integration and Testing with Branch Orgs
Continuous Integration and Testing with Branch OrgsContinuous Integration and Testing with Branch Orgs
Continuous Integration and Testing with Branch OrgsSalesforce Developers
 
Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...
Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...
Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...Salesforce Developers
 
Salesforce API Series: Release Management with the Metadata API webinar
Salesforce API Series: Release Management with the Metadata API webinarSalesforce API Series: Release Management with the Metadata API webinar
Salesforce API Series: Release Management with the Metadata API webinarSalesforce Developers
 

Mais procurados (20)

Salesforce Continuous Integration with AutoRABIT
Salesforce Continuous Integration with AutoRABITSalesforce Continuous Integration with AutoRABIT
Salesforce Continuous Integration with AutoRABIT
 
Managing Change With A Sensible Sandbox Architecture
Managing Change With A Sensible Sandbox ArchitectureManaging Change With A Sensible Sandbox Architecture
Managing Change With A Sensible Sandbox Architecture
 
Automating the Impossible: End to End Team Development for ISVs (October 14, ...
Automating the Impossible: End to End Team Development for ISVs (October 14, ...Automating the Impossible: End to End Team Development for ISVs (October 14, ...
Automating the Impossible: End to End Team Development for ISVs (October 14, ...
 
Introduction to Enterprise-Release Engineering on the Salesforce Platform
Introduction to Enterprise-Release Engineering on the Salesforce PlatformIntroduction to Enterprise-Release Engineering on the Salesforce Platform
Introduction to Enterprise-Release Engineering on the Salesforce Platform
 
5 Essentials for Simplifiied Release Management and Continuous Delivery
5 Essentials for Simplifiied Release Management and Continuous Delivery5 Essentials for Simplifiied Release Management and Continuous Delivery
5 Essentials for Simplifiied Release Management and Continuous Delivery
 
Salesforce Release Management and Continuous Integration with AutoRABIT
Salesforce Release Management and Continuous Integration with AutoRABITSalesforce Release Management and Continuous Integration with AutoRABIT
Salesforce Release Management and Continuous Integration with AutoRABIT
 
Automating Deployment Between Orgs Using Git & Continuous Integration
Automating Deployment Between Orgs Using Git & Continuous IntegrationAutomating Deployment Between Orgs Using Git & Continuous Integration
Automating Deployment Between Orgs Using Git & Continuous Integration
 
Best Practices for Successful Deployment
Best Practices for Successful DeploymentBest Practices for Successful Deployment
Best Practices for Successful Deployment
 
Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)Continuous Integration In The Cloud Final (1)
Continuous Integration In The Cloud Final (1)
 
CI-solutions-Versus-AutoRABIT
CI-solutions-Versus-AutoRABITCI-solutions-Versus-AutoRABIT
CI-solutions-Versus-AutoRABIT
 
Release Management for Large Enterprises
Release Management for Large EnterprisesRelease Management for Large Enterprises
Release Management for Large Enterprises
 
Scaling Continuous Integration for Puppet
Scaling Continuous Integration for PuppetScaling Continuous Integration for Puppet
Scaling Continuous Integration for Puppet
 
Release & Change management in salesforce
Release & Change management in salesforceRelease & Change management in salesforce
Release & Change management in salesforce
 
Upgrade automatically to Sitecore
Upgrade automatically to SitecoreUpgrade automatically to Sitecore
Upgrade automatically to Sitecore
 
The definitive guide to salesforce sandbox flosum
The definitive guide to salesforce sandbox flosumThe definitive guide to salesforce sandbox flosum
The definitive guide to salesforce sandbox flosum
 
Best practices for implementing CI/CD on Salesforce
Best practices for implementing CI/CD on SalesforceBest practices for implementing CI/CD on Salesforce
Best practices for implementing CI/CD on Salesforce
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
 
Continuous Integration and Testing with Branch Orgs
Continuous Integration and Testing with Branch OrgsContinuous Integration and Testing with Branch Orgs
Continuous Integration and Testing with Branch Orgs
 
Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...
Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...
Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...
 
Salesforce API Series: Release Management with the Metadata API webinar
Salesforce API Series: Release Management with the Metadata API webinarSalesforce API Series: Release Management with the Metadata API webinar
Salesforce API Series: Release Management with the Metadata API webinar
 

Semelhante a Team Development & Continuous Integration on the Salesforce Platform

Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld PresentationDan Hinojosa
 
Application versioning
Application versioningApplication versioning
Application versioningTed Steinmann
 
Wonderful World of Maven
Wonderful World of MavenWonderful World of Maven
Wonderful World of MavenJustin J. Moses
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptxCoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptxHervé Boutemy
 
BMO - Intelligent Projects with Maven
BMO - Intelligent Projects with MavenBMO - Intelligent Projects with Maven
BMO - Intelligent Projects with MavenMert Çalışkan
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management toolRenato Primavera
 
Flash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsFlash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsRIA RUI Society
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersSarah Dutkiewicz
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Appschrisb206 chrisb206
 
MuleSoft Nashik Virtual Meetup#4 - Implementing CI/CD pipeline for deploying ...
MuleSoft Nashik Virtual Meetup#4 - Implementing CI/CD pipeline for deploying ...MuleSoft Nashik Virtual Meetup#4 - Implementing CI/CD pipeline for deploying ...
MuleSoft Nashik Virtual Meetup#4 - Implementing CI/CD pipeline for deploying ...Jitendra Bafna
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulMert Çalışkan
 
Develop FOSS project using Google Code Hosting
Develop FOSS project using Google Code HostingDevelop FOSS project using Google Code Hosting
Develop FOSS project using Google Code HostingNarendra Sisodiya
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous IntegrationBo-Yi Wu
 
Continuous Integration: How I stopped guessing if that merge was bad
Continuous Integration: How I stopped guessing if that merge was badContinuous Integration: How I stopped guessing if that merge was bad
Continuous Integration: How I stopped guessing if that merge was badJoe Ferguson
 

Semelhante a Team Development & Continuous Integration on the Salesforce Platform (20)

Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
Application versioning
Application versioningApplication versioning
Application versioning
 
Wonderful World of Maven
Wonderful World of MavenWonderful World of Maven
Wonderful World of Maven
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
Exploring Maven SVN GIT
Exploring Maven SVN GITExploring Maven SVN GIT
Exploring Maven SVN GIT
 
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptxCoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
CoC NA 2023 - Reproducible Builds for the JVM and beyond.pptx
 
BMO - Intelligent Projects with Maven
BMO - Intelligent Projects with MavenBMO - Intelligent Projects with Maven
BMO - Intelligent Projects with Maven
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
Apache maven, a software project management tool
Apache maven, a software project management toolApache maven, a software project management tool
Apache maven, a software project management tool
 
Flash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applicationsFlash Camp Chennai - Build automation of Flex and AIR applications
Flash Camp Chennai - Build automation of Flex and AIR applications
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
 
Maven 3 New Features
Maven 3 New FeaturesMaven 3 New Features
Maven 3 New Features
 
MuleSoft Nashik Virtual Meetup#4 - Implementing CI/CD pipeline for deploying ...
MuleSoft Nashik Virtual Meetup#4 - Implementing CI/CD pipeline for deploying ...MuleSoft Nashik Virtual Meetup#4 - Implementing CI/CD pipeline for deploying ...
MuleSoft Nashik Virtual Meetup#4 - Implementing CI/CD pipeline for deploying ...
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
Develop FOSS project using Google Code Hosting
Develop FOSS project using Google Code HostingDevelop FOSS project using Google Code Hosting
Develop FOSS project using Google Code Hosting
 
Maven
MavenMaven
Maven
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 
Continuous Integration: How I stopped guessing if that merge was bad
Continuous Integration: How I stopped guessing if that merge was badContinuous Integration: How I stopped guessing if that merge was bad
Continuous Integration: How I stopped guessing if that merge was bad
 

Último

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 

Último (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 

Team Development & Continuous Integration on the Salesforce Platform

  • 1. Salesforce.com Team Development Carlos Ramirez Martinez-Eiroa
  • 2. Index  Safe Harbor Statement  Team Development Basics  Continuous Integration  Demo  Non-packaged Development  Package Development  Non-packaged Gotchas  Package Gotchas  ANT Migration Tool  Resources  Q&A
  • 3. Safe Harbor Statement  We don’t have all the answers, but… it’s working!  Also, no need to take notes: http://www.soliantconsulting.com/blog/2013/03/salesforcecomforceco m-team-development
  • 5. Team Development Basics  Version Control (SVN, Git, ...)  Separate Development Environment for each Developer  Unit Testing (Salesforce provides JUnit-like framework)  Continuous Integration (Jenkins/Hudson, Bamboo, ...)
  • 6. Team Development Process 1. One developer commits all code to a new repo from a project connected to the sandbox (1st commit) 2. Other developers in the team check out the project 3. Developers update their local project at the beginning of the day 4. Developers commit code to, and update from, the repo one or more times a day Resource: http://www.soliantconsulting.com/blog/2013/03/working- forcecom-ide-and-subversion-svn
  • 7. Repo = Gospel Developer Org = Scratch Paper
  • 9. What does it do? 1. Pulls the code from the repo (from version control) on a scheduled basis 2. Runs all the automated tests 3. Deploys to a Test/UAT environment (ANT Migration Tool) 4. Notifies team (by email) if there was any issue
  • 10. Advantages  Developers don’t need to be running the tests manually every time they change code  There is no need to manually deploy to a test/UAT org for other stakeholders to see the status of the project  There is immediate feedback to the team if there is any issue with the code
  • 14. Scenario A: Non-Package Development  Shared Version Control Repository  One Developer Sandbox* per Developer  Possibly one Sandbox for internal testing  Definitely one Sandbox for UAT
  • 15. Why Developer Sandboxes?  If Developer Orgs are free, why do we need a Developer Sandbox for each developer?  because of 3rd party managed packages!  Usually Salesforce applications have managed packages installed, and references to these packages in Apex and/or VF.  Some packages cannot be installed in Developer Orgs because:  They are deprecated  They ask for credentials  Dev orgs are just not supported
  • 16. Main issue to address: Cost to purchase additional Developer Sandboxes Can we tell clients that this is a requirement*? *Only during development
  • 17. Scenario B: Package Development  Shared Version Control Repository  One Developer Org per Developer - connected to repo  One Partner Developer Org (20 accounts) for Testing/QA - connected to repo  One Developer Org for Packaging - connected to repo  Up to 4 different edition orgs for UAT - NOT connected to repo (deploy code as Managed Package)
  • 19. Scenario A: Non-Package Gotchas  All changes in production must be replicated in AT LEAST one developer Sandbox (they will be pulled from this one and add it to the repo)  Refresh Sandbox only AFTER all changes have been deployed
  • 20. Scenario B: Package Gotchas I  Do NOT create the package until the end - creating a package will add the namespace prefix to all classes, fields, objects, etc.  To avoid prefix issues (so that code can be deployed to multiple Developer Orgs):  Do not use any prefix in Apex code (apex code will work with or without prefix)  Use try-catch in Javascript calls from buttons (show)
  • 21. Scenario B: Package Gotchas II  Use try/catch in webservice calls (same as in JavaScript) Calls to methods annotated with @webservice from either JavaScript or from an external application need to use the prefix.  To call Apex code from JavaScript in a VF page you can user $RemoteAction (will automatically resolve the namespace)
  • 22. Namespace Prefix Substitution Some of the issues mentioned above can be automatically handled by this project: github.com/jordanbaucke/sfdc-namespace-prefix Glorified search and replace. Bamboo runs this script after checking out the code from the repository, but before deploying it to the packaging org.
  • 24. Ant Migration Tool  Used by Jenkins or Bamboo  Can be used from Force.com IDE, MavensMate, Command Line, ...  Extension to Ant  Allows you to automate deployment, running tests, ...
  • 25. Ant Migration Tool Config Build.xml Build.properties
  • 27.  Blog post: soliantconsulting.com/blog/2013/03/salesforcecomforcecom-team- development  LinkedIn discussion: linkedin.com/groupAnswers?viewQuestionAndAnswers=&discussionI D=221804807&gid=142613  SVN: subversion.apache.org  Git: git-scm.com  Jenkins: jenkins-ci.org  Bamboo: atlassian.com/software/bamboo
  • 29. Q&A

Notas do Editor

  1. 1. Artie makes a change (see change in Artie's dev org) 2. Artie commits the change 3. Run Bamboo build 4. Carlos updates SVN 5. See change in Carlos' dev org 6. See change in Test/UAT org