I have been using Azure DevOps as well as GitHub for many years now. All open-source stuff is on GitHub (some private repositories too.), and all work stuff is on Azure DevOps. I love Azure DevOps, but for code management, I prefer using GitHub instead.
Since both are owned by Microsoft, and seeing the recent developments and features all happening on the GitHub side compared to Azure DevOps, my mind is pretty clear on which to choose for the future. It’s not just me, but many people agree on the same. Jump to the 40:20 on the below video and hear yourself.
So, I would like to see this change (move all our repo to GitHub) in my organization. Currently, we use Azure DevOps for both code & CI/CD pipelines.
Since it is an organization-wide change, I cannot just go and tell my manager about this change. Instead, I have to present what benefits we are getting through this change.
For that, I thought of creating an internal presentation and side-by-side this public blog.
So in this post, I will try to list out things that attract me towards GitHub for code management.
Automated dependency updates built into GitHub.
One of the main attracting factors towards GitHub. Since we have many projects and tracking all the dependencies manually is not possible at all.
Dependabot’s automated PRs with updated packages/dependencies help a lot.
And the security alerts,
Code scanning is GitHub’s native SAST (Static Application Security Testing) tool, a developer-first approach to SAST that enables vulnerabilities to be found and remediated effortlessly before they reach production.
Here’s what GitHub code scanning can help you do:
- Find, triage, and prioritize vulnerabilities in your code.
- See security issues in your pull requests as part of your review process.
- Prevent new vulnerabilities from making it to production.
- Schedule scans for specific days and times, or trigger scans when a specific event occurs in the repository, such as a push.
The CodeQL action part of the code scanning features of GitHub is good even though comes at a price (of course free for open source).
And I prefer the
security-and-quality query suite for the
Both Azure DevOps and GitHub have many integrations available. But IMHO, GitHub has a better collection, growing too.
We manage our work items through Jira. One of the main things we are missing in Azure DevOps is the Jira integration whereas there’s an official integration available between JIRA and GitHub.
Linking work items to code have many benefits.
GitHub issues, boards all are awesome but JIRA is a bit more advanced as well as customizable for software project management, so can’t ask to switch to GitHub at this time (still I prefer GitHub).
There are several GitHub apps which is capable of running powerful checks against the code changes in the repository. Apps that perform continuous integration, code linting, or code scanning services and provide detailed feedback on commits.
Azure Pipelines are way matured compared to GitHub Actions.
But yes, a complete switch to GitHub from Azure DevOps might be possible by replacing Azure DevOps pipelines with GitHub actions. But people mostly hate change when things are working fine with the current setup. So one step at a time in terms of change.
i.e First code migration, then slowly pipelines. The first candidate for GitHub Actions can be PR builds.
Looks complicated on GitHub. In most places, it is like
The change would be an easier task if the billing can be done through an Azure Subscription but looks like it is not possible at the moment.
If you plan to migrate to GitHub, the following sections will help you.
The code repository migration from Azure DevOps to GitHub is pretty easy.
- Import repository
- Give your Azure DevOps Repo URL, and fill in the rest.
- And on the next screen, it will ask for credentials to access your DevOps repo.
Git credentialsfor the Azure DevOps repo will work fine. You can generate that one on the clone window on Azure DevOps as shown below.
That’s it. You will not miss any code history after migration.
Since in our case, we have all pipelines already configured in the DevOps. And don’t want to change any of them other than the repository location. This can be done by following the below steps.
- Edit the existing pipeline
- In the upper right corner open the … menu
- Pick the ⚡ Triggers option
- Click the YAML tab
- Click the Get Sources option
- Reconfigure the source repo to GitHub.
You might need to choose a
GitHub connection to pick the repo.
For that, better to install the Azure Pipelines GitHub app and give it access to the repository.
Which will create a connection back to your Azure DevOps account.
After reading this,
- Are you convinced that GitHub is better compared to Azure DevOps for code?
- If you are a GitHub pro, did I miss any goodness of GitHub over Azure DevOps in terms of code management?
Let me know in the comments below 👇