798 Views
6 minute read
Categories
Microsoft Power Platform Modern Applications

A Guide to Successfully Integrating Azure DevOps with Power Apps

Introduction:

With the unprecedented and ever-growing global demand for Digital Transformation, an effective way to mitigate the global shortage of developers is by leveraging low-code platforms such as Power Apps. As a best practice, you can plan and automate Power Apps builds, in parallel to the low code development. Azure DevOps Pipeline is a robust mechanism to implement CI/CD (Continuous Integration/Continuous Delivery) to continuously build, test, and deploy Power Apps. 

Power Apps Application Lifecycle Management (ALM)   

Application lifecycle management (ALM) includes areas such as plan and track, develop, build, and test, deploy and operate, and monitor and learn. 

Power Apps Solutions are used to transport apps and components from one environment to another, like from a dev environment to a build or user environment. In other words, solutions are the mechanism for implementing ALM in Power Apps.  

A solution can contain one or more apps as well as other components such as site maps, tables, processes, web resources, flows, and more. A component represents an artifact used in your application and something that you can potentially customize.  

Dataverse stores all the artifacts, including solutions. To use the Power Platform ALM features and tools, your environment must include a Dataverse database:  https://docs.microsoft.com/en-us/power-platform/alm/overview-alm 

Power Apps Continuous Integration/Continuous Delivery (CI/CD) 

ALM addresses app development, as well as many other tasks including continuous integration and continuous delivery (CI/CD).  

As a CI/CD platform, Azure DevOps allows you to automate your build, test, and deployment process. 

Source control can be used to store Power Apps source code, as discussed below, and collaborate on your components. 

A Guide to Successfully Integrating Azure DevOps with Power Apps

Power Apps DevOps 

Azure DevOps platform provides automation tools to enable continual Power Apps delivery and better value for customers.  

Azure DevOps Pipeline is a mechanism to implement CI/CD to continuously build, test, and deploy Power Apps. 

Microsoft group PowerCAT has uploaded a video on YouTube to show how Power Apps Solutions can be used in conjunction with Azure DevOps:  https://www.youtube.com/watch?v=xwCUJmrRI9E 

Unmanaged solutions are to be used in the Power Apps dev environment. Managed solutions are used to deploy Power Apps to any user environment like UAT or Production.  

Dev environment solutions can be exported as unmanaged (.zip file) and then unpacked so that the extracted files can be checked into a source control system. In a nutshell, unmanaged solutions should be considered your source. 

Managed solutions can be generated by a build server and considered as a build artifact.  

Diagram - Power Apps CI/CD automated jobs
Diagram – Power Apps CI/CD automated jobs

Power Apps Pipelines 

Login to Azure DevOps. Power Apps CI/CD pipelines or automated jobs can be created as follows:   

Job001

Create a pipeline to export and unpack a Power Apps unmanaged solution, and then store the extracted files into source control. 

  • Search marketplace with keywords: Power Platform 
  • Add step: Power Platform Tool Installer that initializes everything so that you can use the subsequent steps. 
  • Add step: Power Platform Publish Customizations.  
    • It requires a service connection to your environment.  
  • Add step: Power Platform Export Solution.  
    • Enter service connection, source solution name, and solution output file.
    • Specify what you want to export as an unmanaged solution.  
  • Add step: Power Platform Checker to verify before things are checked into source control.  
    • It will stop if there are errors.  
    • Enter the required fields and choose Rule Set – Solution Checker. 
  • Add step: Power Platform Unpack Solution. 
    • Enter required fields such as input solution zip file, target folder, and type of solution. 
  • Add step: Command Line Script to check the extracted files into source control. 
    • For instance, you can specify a GitHub script to automate this step. 

Save, queue, and run Job001. Verify that the expected Power Apps files (master copy) appear in your source control repository, provided the checker reports no errors. 

Job002

Create a pipeline to build a Power Apps managed solution by adding necessary steps.

  • Add step: Power Platform Tool Installer. 
  • Add step: Power Platform Pack Solution. 
    • You are packing the previously checked files from source control. 
  • Add step: Power Platform Import Solution. 
    • You are importing it into your build server. 
  • Add step: Power Platform Export Solution. 
    • You are exporting it as a managed solution.
  • Build Artifact 
    • You can track all managed solutions produced. 

Save and run Job002. Verify that it has created a Power Apps managed solution (zip file). 

Job003

Create a release pipeline to deploy a Power Apps managed solution to your user environment. Add necessary steps. Build on and use the previous pipeline’s output. 

Save and run Job003. Verify that it has been deployed to your user environment (UAT, Production). 

Summary:

Power Apps development and deployment can be managed using source control and automated CI/CD pipelines. Unmanaged solutions are for development only. Managed solutions should be deployed to user environments. Power Apps build and other automation does not have to wait. It can start with Power Apps customizations or code development. 

We hope you found this blog useful in learning about managing Power Apps development and deployment using source control and automated CI/CD pipelines. Please reach out to us so that we can put our years of Microsoft Power Apps build and deployment experience and capabilities to work for your organization’s Digital Transformation. 

LinkedinTwitterFacebook

Leave a Reply

Your email address will not be published. Required fields are marked *




Enter Captcha Here :