Comparing the market leaders among DevOps tools, such as GitLab and Azure, can be quite a complicated process – or even impossible. That’s because DevOps tools are usually very powerful and offer a wide range of functionalities. In this article, we will try to objectively discuss the differences between self-managed GitLab and Azure DevOps Server.
Manufacturers present their tools in the best light on their websites. According to GitLab, their product has more advantages than Microsoft’s. Similarly – Microsoft shows a very long list of the strengths of Azure DevOps in comparison to GitLab’s tool.
Looking at the list of pros and cons of these DevOps tools, in both cases, you get the impression that some of the differences are very subtle, and the key functionalities are duplicated on the lists. The only way to catch inaccuracies and strip away the marketing from substantive content is to verify each point yourself. The lack of objectively established criteria – categories or areas within which such a comparison could be made – presents a difficulty. In their articles, GitLab included 50 functions, while Microsoft presented as many as 130 of them. To better illustrate the scale of the problem in comparing these tools, just type the phrase “Azure DevOps vs. GitLab” into Google. Finding an objective comparison is almost impossible.
To standardize this list for my comparison, I chose the pros and cons presented in the GitLab and Microsoft articles. I also compared the costs of both solutions.
Advantages of GitLab
Here are the advantages that we have confirmed by comparing the functions of both solutions:
- closing discussions,
- commenting on images,
- discussions and comments on merge/pull requests,
- creating a merge/pull request based on e-mail messages,
- designation of the user who first adds something to the repository,
- preview of changes in a dedicated application,
- rules for adding approvals for code review,
- easy migration from third-party solutions,
- size limits (global, for groups, for projects),
- rejecting unsigned commits,
- IDE in the browser,
- Web terminal in the IDE in the browser,
- the ability to test changes implemented in the browser IDE before adding them to the repository,
- merge/pull request versioning,
- protected tags,
- built-in and own project diagrams,
- creating new projects using the git push command,
- no duplication of objects when creating a fork from a branch,
- preview of the pipeline result on the merge/pull request view,
- support for signing commits for the X.509 standard,
- support for the AWS and Google Cloud based environment,
- ability to resolve conflicts in the browser,
- option to preview the branches marked.
GitLab also mentions the advantage of signing commits with the GPG key, but it’s a duplicate of another feature on the list.
Disadvantages of GitLab
There are no perfect systems, and solutions created for a specific purpose cannot contain functions incompatible with their profile. The disadvantages of the GitLab system are as follows:
- lack of native support for publication to AWS, Google and Azure clouds,
- lack of support for ARM processors,
- lack of support for processors for x86/amd64 processors,
- in the UI, there is no mechanism separating publications into different environments (there is only a simple option for manual interaction in the process),
- no support for unit tests for .NET and .NETCore technologies (GitLab supports tests based on JUnit).
However, the list of disadvantages that we cannot agree with is somewhat longer. In its comparison, Microsoft reports a lack of dynamic code analysis in the construction process, lack of support for unit tests in Java, and lack of code owner in choosing a person for CR – all these functions are, in fact, available in GitLab. Similarly, in the case of native support for integration with the mobile application testing center and the possibility of publishing to the Microsoft Store – these are not disadvantages, because all pipelines are written based on the YAML file, and any solution equipped with an API comes with the option of integration. Among the disadvantages of GitLab, Microsoft also mentions a lack of support in the integration with external Git and TFVC repositories and lack of integration with SVN, GitHub, Bitbucket, etc. Such integrations are possible with the help of the mirroring mechanism.
Advantages of Azure DevOps
As with GitLab, some Azure DevOps features don’t make this tool unique because they’re also available in other solutions. The real benefits mentioned by Microsoft are:
- building applications triggered by commits can be collected in time windows,
- visual editor for building and publishing,
- support for other types of tests, such as NUnit, xUnit, VSTests,
- providing detailed reports related to testing,
- easy-to-use test environments in AWS and Azure,
- native integration with Azure,
- a marketplace providing additional free tools and/or commercial extensions,
- custom Git server to support corporate organizations,
- GVFS support for corporate Git repositories,
- a limited number of references for clients for a large number of branches,
- recovery of deleted branches,
- semantic code search.
The functions mentioned above actually give Azure DevOps an advantage over the competition. However, Microsoft’s solution comes with many functions that are also available in GitLab:
- ability to approve publications by relevant users or groups,
- approval of publications by appropriate software using specific codes,
- code quality analysis and reports,
- support for test results based on JUnit,
- visibility of dead branches,
- the minimum initial number of persons approving a merge and their initial definition required,
- linking pull/merge requests to tasks,
- showing and differentiating whitespace.
Moreover, in a few cases, Microsoft doesn’t provide the exact specification of a given functionality, and their equivalents can be found in GitLab:
- extended push control to the repository,
- detailed permissions for individual actions in the repository.
Other questionable features are:
- native support for Azure Dashboard (included in native support for Azure),
- queue for merge/pull request for frequently modified repositories (is this evidence of poor performance?),
- policy for branch data based on URL (in GitLab, the repository URL is associated with the project and must be unique, so it’s the same function),
- merge changes after fulfilling the relevant policy (pipeline service).
Disadvantages of Azure DevOps
Just like with GitLab, the list is shorter here. Manufacturers themselves indicate deficiencies such as:
- no support for YAML scripts in the publication process,
- support only for VSTests type tests with dynamic code analysis,
- lack of native support for telemetry of the runtime environment,
- no built-in secret management system,
- no built-in safety analyzer.
Based on our experience with DevOps tools, we noticed that in our opinion, Azure DevOps has the disadvantage of agents being unstable in systems other than MS Windows.
The list also includes the lack of cache used to build the application, but this problem is now out of date.
Comparison of GitLab and Azure DevOps costs
GitLab offers four billing plans at no extra cost. In the case of Azure DevOps, the user has two financing plans at their disposal, which also look good – but additional costs should be taken into account. A comparison of price plans is illustrated in the table below.
GitLab vs. Azure DevOps – summary
At first glance, Azure DevOps doesn’t stand out from GitLab and seems cheaper. But after a deeper analysis, it turns out that GitLab includes more important functionalities than Azure DevOps, e.g., secret management, project schemes, AWS support and Google Cloud server support tools, IDE in the browser.
Taking into account all of the extensions and additional packages, the tools include similar functions. The main difference is that Azure DevOps firmly binds the user to the entire Microsoft ecosystem and is only seemingly cheaper. Comparing the two products, one gets the impression that Microsoft is trying to hide the additional costs and is not as transparent as GitLab. This suggests that the final cost might be higher than presented in this comparison.
In order to recommend a given tool with a clear conscience, you should always analyze the needs of specific projects and companies.
The experts at Deviniti have a lot of experience in projects related to the DevOps area. We are an authorized partner of GitLab, but we also use other solutions. Set out on a journey in a galaxy of opportunities and see how we can help to grow your business!
Learn more on the topic: