Author – Ping Fung Yin, Sr. Cloud Engineer
Both Azure DevOps and Github are great development platforms that allow you to implement DevOps strategies within your organization and covers most part of the software development process from planning to production. Before we dive into the difference between Azure DevOps and Github. Let us first look at what Azure DevOps and Github is.
Azure DevOps is a SaaS offering by Microsoft which provides a set of tools integrated into a single environment. It is a cloud hosted platform with a DevOps toolchain which allows you to develop and deploy your software. You can use Azure DevOps as both an on-prem server or as a cloud-based SaaS product.
Github was originally a place for developers to host their Git repositories and collaborate with other developers across the globe on a platform used for source code management. In 2008 Microsoft bought Github and has evolved it into a platform where DevOps integration is possible. Git hub is now a centralized cloud-based service which allows project managers, developers, testers etc. to coordinate, track and update their work to stay up to date with latest changes in their code. Github is one of the largest collaborative tools for developers.
Let’s compare the services provided in Azure DevOps and Github and discuss them in detail.
|Azure Boards||Github Issues
|Azure Repos||Github Repositories|
|Azure Pipelines||Github Actions|
|Azure Test Plans||N/A|
|Azure Artifacts||Github Packages|
|Azure Wiki||Github Wikis|
|Azure Reporting/Dashboards||Github Insights|
Having an effective project management system in place is a big part of the DevOps process to help keep track of tasks, timelines, bugs, schedules, code changes etc. Both Azure DevOps and Github have tools to help keep track of items but what is the difference?
Azure Boards is the project management dashboard that helps keep track of all your work items and activities on a single page. It provides us with over 1000+ extensions which we can integrate within basically any other systems. Azure Boards is a very mature product in which you will be able to track your backlogs and sprints.
Github Projects allows you to prioritize and organize your work so that you can manage work across your project seamlessly. It is less mature than Azure boards but it is a good start for team’s of smaller sizes.
We are able to store our codes and enable Git version controlling in both Azure DevOps and Github. You can host free unlimited private and public repositories and implement Git strategies like branching and pull requests in both platforms. But let’s take a look at what sets these two apart.
Github Repositories is obviously superior and comes out on top when we talk about code management. Github’s roots were built on code management and it provides us with features like code scanning which scans for API keys that shouldn’t be public, passwords being stored in code, etc. Also now Github allows integration with codespaces meaning that you can write, store and deploy your code in one place.
Azure Repos is also a decent code repository offering provided by Azure DevOps. It provides you a rich code review experience with branch policies, web hooks, pull requests etc. You are able to host Git and TFVC repositories with Azure Repositories.
CI/CD is a major part of DevOps because implementing CI and CD pipelines helps to ensure consistent and quality code that’s readily available to users. Continuous Integration(CI) is used to automate tests and builds for your project. CI helps to catch bugs or issues early in the development cycle, when they’re easier and faster to fix. Continuous Delivery(CD) is used to automatically deploy and test code in multiple stages to help drive quality. With Azure DevOps and Github providing this offering you wonder what is the difference between the two.
Azure Pipelines has a fully dedicated section to Pipelines for both CI and CD. With Azure pipelines you are able to to build code of any language and deploy to any platform whether it be Azure, AWS, GCP or even on-prem. Azure pipeline provides 1000+ extensions to integrate within your pipeline to help your needs. You are also able to integrate your pipeline with any git hosting platform meaning your code doesn’t have to be hosted on Azure Repos to reap the benefits of Azure Pipelines. Azure Pipeline also provide a UI to create pipelines called as a classic editor but you are also able to use YAML which is a way to define CI/CD as code. Your Azure pipeline are run on agents. Azure provides different types of agents within Azure DevOps as shown below:
- Microsoft-Hosted Agents: Microsoft will maintain and upgrade the agent for you. Every time you run a pipeline you will get a fresh virtual machine and is discarded after one use.
- Self-Hosted Agents: This is an agent that you have to setup and mange on your own to run run jobs. Self-hosted agents give you more control to install dependent software needed for your build and deployments.
- Azure VMSS Agents: It is a form of self-hosted agents that can be auto scaled to meet your demands
Github Actions is a relatively new feature but that doesn’t mean you should count it out just yet. You can automate, customize and execute your code right in your repository. Also, a significant amount of Github Actions functionality is built on the same platform as Azure DevOps. Github uses an assigned virtual environment to host your pipelines. The virtual machines are Github hosted environments so you won’t have to worry about maintenance.You can also create your own self hosted virtual machine. There are 3 types of Github hosted environments:
|Able to work with any distributed source control system you prefer. Tie in code from any source control system||To use github Actions, you are locked into using Github|
|Able to deploy pipelines using YAML or through the UI of the classic editor||Github has no deployment UI for github actions|
|Security features built into pipelines but no security features like code scanning built into Azure Repos||Static code analysis has been implemented within git hub, scans for API keys that shouldn’t be public, passwords being stored in code, etc.|
|Cannot develop a code fully through Azure DevOps and would have to use a code editor like VSCode or VS.||Integration of codespaces with github so now you can write, store and deploy your code through github|
|Use agents to run a pipeline. Option of widows hosted, self-hosted and docker agents.||Uses an assigned virtual environment to run pipelines. VMs Github-hosted environments and come in 3 flavours Windows, Linux and MacOS|
|With Azure Boards, you are able to choose your methodology and design new ones, plan for sprints, create queries. It is better for advanced planning.||Github provides a backlog and a Kanban board good enough for smaller teams.|
|Azure DevOps provides Azure Test Plans for manual and exploratory testing||Github has yet to integrate a service for manual and exploratory testing|