References

Tools

sfdx-browserforce-plugin

sfdx plugin for browser automation

SalesforceSalesforce DXNode.jsTypeScriptBrowser Automation

Although gaps in the Metadata API are being filled very quickly recently, still not all Configuration in the Setup Menu is available as Metadata.

This sfdx plugin uses Browser Automation to toggle Features and apply Configuration as a last resort for automation.

Examples: "Enabling critical updates", "Setting up Customer Portal" or "Activating Standard LEX Themes"

force-dev-tool

Command line tool supporting the Force.com development lifecycle

SalesforceNode.jsMetadata API

In times before Salesforce DX this CLI provided many useful commands to deal with Metadata. The top two features are:

  1. Generating a complete package.xml file for Metadata retrieval
  2. Creating incremental deployments based on your changes in Git

Note: force-dev-tool has been deprecated in July 2018 in favor of Salesforce DX.

sfdx-plugin-auth-url

sfdx plugin for importing/exporting orgs using a Sfdx Auth Url

SalesforceSalesforce DXNode.js

This is a simple but very convenient plugin for dealing with Sfdx Auth Urls in the form of two easy to remember commands: auth-url:import and auth-url:export.

It takes the pain of having to read/write the credential from/to a file. Use it to keep your CI setup scripts simple and share credentials to scratch orgs with your colleagues ad-hoc.

pmd-bin

Standalone PMD (static code analyzer) with its own JRE

Bash

With Salesforce DX and the growing number of sfdx plugins, the stack is set to Node.js and npm/yarn.

This package makes it easy for you to install and use the famous PMD (static code analyzer; written in Java) in your projects using npm/yarn.

metadata-xml-tool

CLI tool for processing Salesforce Metadata XML files

SalesforceBash

After retrieving or before deploying Metadata, you'll sometimes need to remove or replace org-specific values.

Unlike other tools, metadata-xml-tool understands basic XML and preserves the indentation and line-endings.

Talks

SkiForce 19
Obergurgl, Austria

Browser Automation as a last resort for Salesforce DevOps

SalesforceSalesforce DXBrowser AutomationDevOps

2019-04-13

Tired of manually clicking through pre- or post-deployment tasks? Need to activate that Critical Update in hundreds of orgs?

Prevent Carpal Tunnel Syndrome by using the open source sfdx-browserforce-plugin.

This talk highlights why browser automation can be crucial in a Software Development Lifecycle with Salesforce.

Salesforce Developer Meetup
Vienna, Austria

Leveraging SFDX for Managed Package Development

SalesforceSalesforce DXBash

2018-01-25

"Revisiting our Software Development Lifecycle (SDLC): from CD (chaotic disorder) to CI (continuous integration) in 12 weeks."

This talk highlights the necessity for transitioning to Salesforce DX both from a technical and project management perspective.

Co-Speaker: Harald Mayer (IPfolio)

Salesforce Developer Meetup
Munich, Germany

An opinionated Development Lifecycle for Force.com

Salesforceforce-dev-toolGitWorkflow

2016-08-17

This talk highlights five major challenges in the Salesforce Software Development Lifecycle and presents an opinionated workflow using force-dev-tool.

  1. Metadata
  2. Build process
  3. CI / CD (Continuous Integration / Continuous Delivery / Continuous Deployment)
  4. Deployment
  5. Development environments

Projects

Bulk Rollout of Lightning Experience

SalesforceSalesforce DXDevOpsNode.jsBashTools

Rollout Lightning Experience in bulk for an OEM ISV with a large customer base.

Challenge: manual steps not feasible

  • patch layouts, apps, profiles and custom objects
  • change Lightning Experience theme
  • apply diverse settings

Solution: develop an sfdx plugin leveraging different APIs

Transition a Certified Managed Package to Salesforce DX

SalesforceSalesforce DXDevOpsContinuous IntegrationContinuous DeliveryNode.jsBashTools

Transition a 1st generation Salesforce Certified Managed Package to Salesforce DX.

Set up Version Control and a CI/CD pipeline with Travis CI.

Challenge: gaps in Metadata preventing development and testing in scratch orgs

Solution: develop an sfdx plugin (sfdx-browserforce-plugin) to enable and set up required features using browser automation

SFDX Plugin Development

Salesforcesfdx-pluginTypeScript

Develop an sfdx plugin to automate OEM ISV specific release tasks.

Challenge: issues in the CRUD- and file-based Metadata API as well as the Tooling API

Solution: develop an sfdx plugin leveraging different APIs

  • generic commands for custom ETL-style Metadata manipulation
  • document issues in the Metadata API and develop workarounds
  • use Browser Automation as last resort (sfdx-browserforce-plugin)

3rd Level Salesforce DevOps Support

SalesforceSalesforce DXDevOpsContinuous IntegrationContinuous DeliveryNode.jsBashTools

On-demand support for a development team with challenging Salesforce DevOps topics.

Challenges:

  • new releases of sfdx and the Salesforce Platform
  • ISV-specific restrictions
  • running non-trivial migrations in subscriber orgs

Solution: provide consultation services and implement solutions remotely and on-demand

Development for a Salesforce Tooling Vendor

SalesforceMetadata APIConsultingDevelopmentGo

Consulting and development for a Salesforce Tooling Vendor regarding org-based Metadata retrieval and deployment.

Challenges:

  • learning the Go programming language
  • developing resource-friendly code to ensure scalability

Transition a Managed Package to Salesforce DX

SalesforceSalesforce DXDevOpsContinuous IntegrationContinuous DeliveryNode.jsBashTools

Transition an internal 1st generation Salesforce Managed Package to Salesforce DX to be used in a Multi-Org setup.

Set up Version Control and a CI/CD pipeline with Bitbucket Pipelines.

On-Site Consulting for Org-Based CI/CD

SalesforceContinuous IntegrationGitJenkinsforce-dev-tool

On-site consulting and training for a Salesforce customer to set up an org-based CI/CD pipeline with Jenkins.

Set up a Cron Job on Jenkins to dynamically retrieve all Metadata to Version Control.

Challenge: large org with many dependencies and long-running tests

Development of a Job Scheduling Tool

SalesforceNode.jsAPIsHerokuMetadata BackupTest AutomationGit

Develop and operate an internal tool for procesing long-running operations (e.g. Metadata retrieval, Unit Test Execution) against Salesforce orgs.

Challenge: large number of jobs

Solution: queue-based scheduling to ensure scalability

Manage Large Deployments

SalesforceSDLCforce-dev-toolContinuous IntegrationContinuous Delivery

Manage and operate Metadata Deployments in a large Salesforce project.

Challenge: integrating multiple streams of development with passive version control

Support Resolving Deployment Issues

SalesforceDevOpsContinuous IntegrationContinuous DeliveryNode.jsBashTools

Temporarily analyse and resolve deployment issues in an org-based CI/CD pipeline which was never run successfully before.

Challenge: lots of different issues after a long period of development without active version control

Solution: battle through issues documenting each error and workaround

After Go-Live Support of a Salesforce DX Transition

SalesforceSalesforce DXDevOpsContinuous IntegrationContinuous DeliveryNode.jsBashTools

DevOps Consulting for a Salesforce App Vendor (ISV).

Challenge: early days of Salesforce DX with lots of issues

Development Lifecycle Consulting

SalesforceSDLC

Design and implement a Pragmatic org-based Development Lifecycle for a Salesforce Implementation Partner.

Challenge: declarative and cloud-based development/administration

Solution: implement passive version control

CI/CD Improvements

SalesforceDevOpsContinuous IntegrationContinuous DeliveryGit

Analyze and improve an org-based CI/CD pipeline.

Challenge: improve overall build and release performance

Solution: switch from full to incremental deployments based on Git