Table of Contents

DevOps release pipeline overview

Use DevOps practices such as continuous integration and continuous delivery to quickly move application changes from development through testing to deployment on your production system. Use Pega Platform™ tools and common third-party tools to implement DevOps.

The release pipeline in the following diagram illustrates the best practices for using Pega Platform for DevOps. At each stage in the pipeline, a continuous loop presents the development team with feedback on testing results. This example includes the following assumptions:

  • Pega Platform manages all schema changes.
  • Jenkins is the automation server that helps to coordinate the release pipeline, and JFrog Artifactory is the application repository; however, other equivalent tools could be used for both.

The graphic presents the Pega DevOps pipeline from development, through continuous integration and continuous delivery, to deployment. For details, see the text that follows the graphic.

Development

Pega Platform developers use Agile practices to create applications and commit the changes into branches in a shared development environment. Automated and manual testing provides rapid feedback to developers so that they can improve the application.

Follow these best practices to optimize the development process:

  • Leverage multiple built-on applications to develop and process smaller component applications. Smaller applications move through the pipeline faster and are easier to develop, test, and maintain.
  • Create one Pega Platform instance as a source environment that acts as a single source of truth for the application. This introduces stability into the developer environment and ensures that a problem in one developer environment does not affect other environments.
  • Use Pega Platform developer tools, for example:
    • The rule compare feature allows you to see the differences between two versions of a specific rule.
    • The rule form search tool allows you to find a specific rule in your application.
  • Follow branch-based development practices:
    • Developers can work on a shared development environment or local environments.
    • Content in branches migrates from the development environments to merge into the source environment.
    • Create an archive by exporting and storing backup versions of each branch in a separate location in the application repository. If a corrupted system state requires you to restore the source environment to a previous known good application version, the branches can be down-merged to reapply the changes in those branches that were lost as part of the restore.
    • Use unit tests to ensure quality.
  • Ensure that the work on a ruleset is reviewed and that the changes are validated. Lock every complete and validated ruleset.
  • Regularly synchronize the development environments with the source environment.

For more information, see the following articles and help topics:

Continuous integration

With continuous integration, application developers frequently check in their changes to the source environment and use an automated build process to automatically verify these changes. Continuous integration identifies issues and pinpoints them early in the cycle. Use Jenkins with the prpcServiceUtils tool and the execute test service to automatically generate a potentially deployable application and export the application archive to a binary repository such as JFrog Artifactory. During continuous integration, maintain the following best practices:

  • To automatically generate a valid application, properly define the application Rule-Admin-Product rule and update the rule whenever the application changes. The prpcServiceUtils tool requires a predefined Rule-Admin-Product rule.
  • To identify issues early, run unit tests and critical integration tests before packaging the application. If any one of these tests fails, stop the release pipeline until the issue is fixed.
  • Publish the exported application archives into a repository such as JFrog Artifactory to maintain a version history of deployable applications.

For more information, see the following articles and help topics:

Continuous delivery

With continuous delivery, application changes run through rigorous automated regression testing and are deployed to a staging environment for further testing to ensure that there is a high confidence the application is ready to deploy on the production system.

Use Jenkins with the prpcServiceUtils tool to deploy the packaged application to test environments for regression testing or for other testing such as performance testing, compatibility testing, acceptance testing, and so on. At the end of the continuous delivery stage, the application is declared ready to deploy to the production environment. Follow these best practices to ensure quality:

  • Use Docker or a similar tool to create test environments for user acceptance tests (UAT) and exploratory tests.
  • Create a wide variety of regression tests through the user interface and the service layer.
  • Check the tests into a separate version control system such as Git.
  • If a test fails, roll back the latest import.
  • If all the tests pass, annotate the application package to indicate that it is ready to be deployed. Deployment can be done either automatically with Jenkins and JFrog Artifactory or manually.

For more information, see the following articles and help topics:

Deployment

After an application change passes the testing requirements, use Jenkins and the prpcServiceUtils tools to migrate the changes into production after complete validation through automated testing on the staging system. Use application release guidelines to deploy with minimal downtime.

For more information, see the following articles and help topics:

Have a question? Get answers now.

Visit the Pega Support Community to ask questions, engage in discussions, and help others.