The basis of Review Apps is the dynamic environments which allow you to create a new environment (dynamically) for each one of your branches.
A Review App can then be visible as a link when you visit the merge request relevant to the branch. That way, you are able to see live all changes introduced by the merge request changes. Reviewing anything, from performance to interface changes, becomes much easier with a live environment and as such, Review Apps can make a huge impact on your development flow.
They mostly make sense to be used with web applications, but you can use them any way you'd like.
Simply put, a Review App is a mapping of a branch with an environment as there is a 1:1 relation between them.
Here's an example of what it looks like when viewing a merge request with a dynamically set environment.
In the image above you can see that the add-new-line
branch was successfully built and deployed under a dynamic environment and can be previewed with an also dynamically URL.
The details of the Review Apps implementation depend widely on your real technology stack and on your deployment process. The simplest case is to deploy a simple static HTML website, but it will not be that straightforward when your app is using a database for example. To make a branch be deployed on a temporary instance and booting up this instance with all required software and services automatically on the fly is not a trivial task. However, it is doable, especially if you use Docker, or at least a configuration management tool like Chef, Puppet, Ansible or Salt.
To get a better understanding of Review Apps, you must first learn how environments and deployments work. The following docs will help you grasp that knowledge:
environment
syntax as defined in .gitlab-ci.yml
. This will be your primary reference when you are finally comfortable with how environments work.The configuration of Review apps depends on your technology stack and your infrastructure. Read the dynamic environments documentation to understand how to define and create them.
The creation and destruction of a Review App is defined in .gitlab-ci.yml
at a job level under the environment
keyword.
Check the environments documentation how to do so.
The process of adding Review Apps in your workflow would look like:
.gitlab-ci.yml
that uses the predefined predefined CI environment variable ${CI_BUILD_REF_NAME}
to create dynamic environments and restrict it to run only on branches.From there on, you would follow the branched Git flow:
script
definition of the dynamic environment job.Check the environments limitations.
A list of examples used with Review Apps can be found below:
And below is a soon to be added examples list: