If you’ve ever worked on a software project, you’re probably familiar with the feeling of having all your work done and ready to deliver but not being able to do so because of a series of small tasks that only take a minute or two each.
This is what Continuous Integration (CI) is intended to solve. The idea behind CI is to automate tasks that would normally take a human to do, such as deploying code to a test server, running tests, etc. This automated process is done every time there is a change to the repository that contains the code.
Two popular Microsoft services for CI/CD are App Center and Azure DevOps, but which one should you use? Well:
- Use App Center when you want to have a simple automated build and release process of your mobile application.
- Use Azure DevOps when you must support a more complex process, or want to deploy several apps and services at once.
But that’s just the tip of the iceberg.
In this post, I will quickly explain what App Center is and what Azure DevOps is. Then I will use a horse vs. car analogy to describe which one you should use. And finally, I will give a more formal answer.
But first, the basics: what are CI and CD?
CI means Continuous Integration and is a software development practice where developers integrate code into a shared repository several times a day. Every commit is verified by an automated build, allowing teams to detect problems early.
CD is Continuous Delivery and is a software development practice where teams can release software to end-users at any time.
What is App Center?
App Center (full name Visual Studio App Center) is the app deployment tool from Microsoft created to help developers with continuous deployment and continuous integration. It can be used to build apps for iOS, Android, and Windows and can also be used to handle automated testing.
What tools does it contain?
App Center contains the following tools:
- Build – tools to build your mobile application automatically after every push in your repository.
- Test – test your application with UI tests on a real device.
- Distribute – distribute beta or production versions of your app to the beta testers and end-users.
- Diagnostics – you can use its SDK to collect information about app crashes.
- Analytics – track user’s activity in your app with this SDK.
App Center integrates with many different third-party systems such as GitHub, GitLab, BitBucket, Slack, Azure DevOps, and Jira.
What companies are using App Center?
According to stackshare, companies that use the Visual Studio App Center are:
- Beachbody
- Ubidreams
- Partipost
- Clear Fashion
- QRPoint
- Solinftec
And many others.
What does App Center offer to mobile developers?
Whether you are building native iOS, Android, or cross-platform mobile apps, and whether your application is written in Java, Objective-C, or Swift, or C#, Visual studio App Center gives you end-to-end support across all the tools required for mobile app development and deployment.
What is Azure DevOps?
Azure DevOps is an integrated set of application development and management services that can be used by an organization to develop, deploy, and keep track of its solutions. These are supported by full-featured workflows, which enable coders to develop, test, and deploy their solutions in various ways.
Developers can use the services according to their needs, irrespective of whether they use on-premise or cloud solutions. The goal of Azure DevOps is to make it easier and more streamlined to move code from development to deployment by providing a set of tools that handle many of the routine tasks today’s developers have to do themselves.
What tools does it contain?
Azure DevOps service provides organizations with a single platform for application lifecycle management (ALM), which encompasses source code management, builds and deployment, and testing and quality assurance:
- The source code management functionality (Azure Repos) allows users to store and manage source code, builds, and artifacts in centralized locations and use version control to manage changes.
- The build and deployment functionality (Azure Pipelines) enables building and testing software in an automated and repeatable fashion. It also enables releasing software to users or for automated execution.
- The testing and quality assurance functionality support unit, integration, and end-to-end testing (Azure Test Plans).
Microsoft’s Azure DevOps suite is quickly finding its way into enterprise DevOps initiatives. But does this software require coding? The answer depends on your definition. While Azure DevOps does offer several different scenarios, it is primarily a cloud-based hosted service. As such, it requires no coding to use. However, if you want to store your configuration in a file on the git repository and track changes to it, you can use yml to define your pipeline process.
What companies are using Azure DevOps?
According to stackshare, companies that use Azure DevOps are:
- Microsoft
- QRPoint
- iOLAP
- NEXT Solutions
- Poq
- Octan Software
And many, many others.
What does Azure DevOps offer to mobile developers?
The Azure DevOps platform offers mobile developers the resources needed to develop, test, and deploy mobile apps fully. With the Azure DevOps, you can build a complex build and release process.
You can start by building your iOS and/or Android application and run unit tests for them. Then you can submit beta versions to your QA team via different platforms: Testflight, Google Play, or even App Center.
Moving to the release pipeline, you can add various automated and manual checks. Those checks need to be completed in order to release the mobile app to the App Store or Google Play.
App Center vs Azure DevOps – should you go by horse or car?
Comparing AppCenter and the Azure DevOps is like comparing a horse and a car.
A horse (AppCenter) is fine, and it will get you where you need to go. I love horses. In the case of AppCenter, it will deploy your app to production.
On the other hand, a car will also get you to the destination, but much faster, and it has more options (like a roof, comfy seats, and that beautiful engine sound).
Same with Azure DevOps. It has more options than the AppCenter. You don’t have to set it up for every branch, and the configuration can be stored in git.
But what if you are already using the App Center? Should you switch to the Azure DevOps?
If the AppCenter has all you need and don’t have to change/tweak/mess with the AppCenter often, keep using AppCenter.
If you need more options and want to upgrade your development process, then at some point, AppCenter is just not enough.
App Center vs Azure DevOps – the formal answer (aka my lawyer made me write it)
Many teams evaluating App Center for mobile app management also consider Azure DevOps for continuous integration and continuous deployment (CI/CD).
While there are some similarities between the two services, there are also some major differences. One of the core differences between App Center and Azure DevOps is the number of services offered. While App Center offers one unified, integrated solution for mobile app development, management, and analytics, Azure DevOps offers a much broader range of services.
Use the App Center when:
- Just starting and need a simple solution
- You have a simple CI/CD process
- Don’t want to spend too much time tweaking deployment settings
- You are already using App Center for diagnostics or analytics
Use the Azure DevOps when:
- You are comfortable using DevOps tools to automate your CI/CD process
- You need to have a custom build pipeline and release pipeline
- You also want to build and deploy another app (maybe a web application), service or database changes
- You want to have additional automated or manual checks before the app hits the production
Conclusion
Don’t avoid boring repetitive tasks. Automate them instead.
– Kristijan Kralj
No matter what solution you end up using, remember that you are doing the right thing. Automating your build and deployment is the best possible decision you can make at any time.
Disclaimer: no horse was hurt during the creation of this post.