Combining the two Microsoft tools may seem counter-intuitive. On the one hand, Power Apps enables citizen developers to create simple applications without mastering a development language. And on the other, Azure DevOps is Microsoft's Application Lifecycle Management (ALM) suite.
Here's some feedback from the SmartView team (REX)
Azure DevOps: Microsoft's ALM suite
Application Lifecycle Management (ALM) is the management of the lifecycle of an application or product. An ALM suite enables you to manage the various stages of an application (analysis/design, development, testing, deployment, operation) using a range of tools. Integrating ALM into an information system (IS) can be technically and/or functionally complex. It's often a project in its own right.
Azure DevOps offers several modules hosted in the cloud that address these issues:
- Boards: Task tracking using agile processes (e.g. Scrum, Kanban)
- Repos: Source manager using Git repositories by default
- Pipelines: Automating deployment tasks
- Test Plans: Execute automated test plans
- Artifacts : Storing and sharing packaged applications
For more details, visit the Azure website, right here.
Power Apps: delivering a no-code application
With Power Apps, the idea is to create simple applications without having any notions of development. In just a few hours or days, you can have a functional business application in production that meets a simple need. However, mastering development concepts is a big plus, as explained in this article: " Low code with Power Apps".
If Power Apps can deliver an application quickly, what's the point of adding Azure DevOps to the process?
The SmartView experiment shows several advantages to coupling Azure DevOps - Power Apps:
- Project monitoring using agile methods
- Documentation of application versions
- Automate the transition from one environment to another (from development to software acceptance, for example)
- Setting up automated tests
The Microsoft Power Apps BuildTools extension is included in Azure DevOps. The various modules enable Power Platform components to be integrated into Azure DevOps.
Fig. Azure DevOps components
The SmartView team presents the results of its tests, Azure module by module:
Azure Boards ensures agile tracking of the various demands of a project using Scrum (sprints, backlog) or Kanban (Kanban board). The link between agile methods and Power Apps is detailed in the article Why is Power Apps adapted to agile methods? There is no technical link between Azure Boards and Power Apps. Scrum or Kanban monitoring of the Power Apps application is carried out in Azure Boards. It has one advantage over Trello or Jira, for example: the integration of different elements (tasks, bugs, sprints) with other modules.
Azure Repos is a source management tool (Git by default). In Power Apps, there are no sources as such. No code files are stored. However, you can manage the various versions saved (ZIP files) from Power Apps in Git. This makes it possible to integrate multiple applications, multiple data streams or multiple environments.
The Azure Repos module is particularly relevant as a complement to Azure Pipelines.
Azure Pipelines enables continuous integration and deployment ("CI/CD"). This is an essential element of DevOps. It accelerates time-to-production and improves software quality by breaking down the "wall" between devs and ops. The cloud and agile methods are ideally suited to this approach.
In our example, we have created 2 environments:
- "Development": contains a Power Apps application connected to 3 Power Automate streams. With the Power Platform, we can (manually) encapsulate these 4 elements in a solution*. Technically, a solution consists of a ZIP file, which allows the Power Platform to import applications/streams.
- "Production": the idea is to automate the integration of the solution in Azure Repos (continuous integration) and to deploy it in the production environment (continuous deployment).
The "Power Platform Build Tools" extension guarantees the continuous integration process:
- Validate that there are no technical errors in the application
- Export the solution from the development environment
- De-packaging the solution and integrating it into Azure Repos
- Integrating the solution into Azure Artifacts
- Packing data on Azure Repos
- Deploying the package in production
Continuous integration means testing applications. Azure DevOps also offers a module.
Azure Test carries out automated test plans based on a wide range of technologies. For Power Apps, however, the mechanics are a little different. Azur Pipeline enables tests to be automated and executed, without using the Azure Tests module.
The test results are stored in the continuous integration pipeline. This makes it possible to stop integration in the event of an error right at the start of the pipeline. On the other hand, you can automatically validate the correct operation of the application you are deploying in production.
Within the Azure Tests module, Tests Studio offers the possibility of automated testing. This tool can be accessed via the "wrench and screwdriver" logo in Power Apps. It can be used to validate ("assert") instructions contained in the application (e.g. checking that the source contains data). The test plan can then be executed in Azure Pipelines.
We can also launch automated tests on demand or on a scheduled basis. It's in the DNA of ALM / DevOps!
The latest module in the Azure DevOps suite, Azure Artifacts is used to host and share packages for deployment. Several package types are supported: npm (Node.js), NuGet (.NET) or any other package format.
In our case, the solution package is a ZIP file. This means that Azure Artifacts can be installed on any Power Apps environment, whatever the version of the application.
The integration of Power Apps into Azure DevOps is quite advanced and well executed.
The "Tests" module is fairly intuitive and easy to use, but could do with further simplification.
The Azure Boards module is accessible to "Citizen developers" familiar with Kanban or Scrum (see our agility coaching offer).
The other modules are more technical, and are interesting to use provided the application meets two conditions:
- A fairly complex application that will require several iterations, several environments, and so on.
- An application created by or with the help of a developer
Under these conditions, Azure DevOps brings real added value to Power Apps in terms of application quality and simplification of the deployment process.
We therefore feel that this solution is the right one, provided that the complexity of the application to be implemented and the skills required are clearly defined in advance.
*solutions are an interesting remnant of Dynamics, whose product team is behind Power Apps.