Skip to content

rrangaiya/opti-pipelines-yaml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

Optimizely (formerly Episerver) DXP YAML Pipelines

For ASP.NET 5+ / Optimizely CMS 12+, see https://github.com/rrangaiya/opti-ci-cd

Reusable multi-stage YAML pipelines to setup CI/CD for Optimizely DXP deployments using Deployment API

The pipelines are ideal for projects using a trunk based branching strategy, however the triggers can be tweaked to work with other branching models.

Continuous Integration

Update The Integration pipeline now supports direct deploy to the Integration environment using the Deployment API code package approach. This is the recommended approach to deploying to Integration.

The Integration-WebDeploy pipeline creates a web package and deploys to the Integration environment using the Azure App Service Deploy task. Create a service connection to your DXP Azure instance on Azure DevOps. The service principal details required for the connection can be requested from Episerver Managed Services. This pipeline is provided for legacy purposes and can be repurposed to deploy to additional DXP environments.

The Integration pipelines are triggered when code is merged to master.

Release

The Release pipeline is used to deploy planned releases. It

  • is triggered on any change to release/* branch. Use consistent naming convention for release branch name e.g. release/1.0 for deployment history purposes.
  • creates a Nuget package and uploads it to the Optimizely DXP for deployment. The package name will be in the format [app name].cms.app.<releasebranchname.buildnumber.revision>.nupkg, e.g. customer.cms.app.1.0.20200527.1.nupkg
  • allows for staged deployments to Preproduction and Production environments (upon approval)
  • supports Smooth deployments / Zero downtime deployments
  • allows for manual validation after Production slot deployment

Variables

Create variable groups 'dxp-inte' and 'dxp-release' for the 2 pipelines respectively, with the following variables (Deployment API credentials can be generated from the DXP Portal):

  • ProjectId
  • ApiKey
  • ApiSecret (secret variable)

Web.config transforms

The msbuild task in the pipelines will apply the Release transformation on the web.config file.

When deploying to the respective environments, the DXP Deployment API will apply the environment transform files on the web.config in the code package. Set the BuildAction for environment transform files to Content so that they are included in the package.

Environments

Deployments history can be viewed from the Pipelines -> Environments page on Azure DevOps. The deployed version <releasebranchname.buildnumber.revision> will be displayed against the respective environments.

Approvals can be setup on the Preproduction and Production environments to ensure approvers grant approval before deployment to the respective environment.

Limitations

  • The pipelines currently only creates and deploys CMS code package however can be easily extended for Commerce pacakges
  • Build process currently doesn't support .Net5 / CMS12

About

Azure DevOps pipelines for Episerver DXP deployment

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published