Principles

Guiding principles followed by the project

Utilize your Salesforce deployment experiences

The tasks or commands should be easy to use. You don't need to resort to complex scripts to build a pipeline. A knowledge of what you need to achieve from a pipeline and salesforce development (such as Salesforce DX, Unlocked Package/Org Based Deployment Model or a Hybrid where you combine both*) should be enough to get you going.

We will also strive to provide sample pipelines to quickly get you started. For sample pipelines checkout this repo

*If you need a refresher on Salesforce DX, Unlocked Packages or Org Based Deployment, checkout some of the available trailhead modules here

Everything is a package

sfpowerscripts (cli/azure pipelines) is built on the concept of generating artifacts for package creation tasks, unlocked or not, which then could be versioned, uploaded into an artifact provider or utilized in subsequent release stages for deployment across environments.

The following package creation commands shows this in action

  • Create Source Package

  • Create Unlocked Package

  • Create Delta Package

  • Create Data Package (for Records Based Configuration)

Use of artifacts across different stages

These commands create an artifact named<package_name>_sfpowerscripts_artifact_<ver>.zip. This zip file contains the following items

Item

Description

artifact_metatadata.json

A JSON based manifest that contains information about the package

changelog.json

A JSON based schema that carries all commit description about the package

source

A directory containing the metadata in source format

Optimized for speed without hampering traceability

One of the common questions that is often asked to us is: Does deploying packages compared to delta deployments (deploys only what is changed between two commits or a range of commits) make the overall deployment slower?

As packages are always deployed in its entirety, this is an understood fact. sfpowerscripts will always be built with features to optimize for speed but still ensuring the org is traceable compared to the traditional happy soup model most organizations are burdened with today.

Features currently enabling this principle include

  • All sfpowerscripts package creation commands feature a diff check, which builds the package only if it detects a change

  • Packages will only be installed in the org, if the given package is not installed in the org

  • Support for mono repository, while working with multiple packages reduces overhead and overall complexity

Of course the onus is on developers to granulize packages, so that this could be achieved, but be assured the tooling is available.