What is Microsoft Team Foundation Server (TFS), the actual Azure DevOp?
Introduction
If you are part of a software development team, you know how valuable it is to have a single environment for your team work.
What is Microsoft TFS?
Team Foundation Server (TFS) is a Microsoft product that provides tools for team collaboration during the lifecycle of an application. It is primarily used for workflow management, version control and notification purposes.
Microsoft TFS guides the software development process and manages a streamline flow between development team and operational team. It uses Git to control the source code and provides end-to-end software development and testing.
Microsoft TFS vs VSTS
Visual Studio Team System (VSTS) is the cloud hosted extension of Microsoft TFS which offers services that allow teams to plan work and build applications. It has all the functionalities of TFS such as build, code review, version control, release handling, and others.
VSTS is accessible anywhere through an internet connection with a Microsoft account while TFS is only accessible on-premise.
Migrating to Azure DevOps
Microsoft rebranded VSTS to Azure DevOps Services in 2018. Then, in 2019, TFS was rebranded to Azure DevOps Server.
Azure DevOps Services provides a globally available hosted service if you want to work in the cloud. This service is reliable and monitored 27/4 by the operations team. If you want to keep your data on the network instead, you have the on-premise solution by using the Azure DevOps Server.
Azure DevOps has the same set of tools and services for planning, development, testing and deployment of applications as TFS and VSTS. The rebranding process also brought an enhanced navigation experience, and the new Azure SQL Database support.
Azure DevOps Tools
Azure DevOps is split into a suite of tools that can be accessed by both Azure DevOps Service and Azure DevOps Server using the new navigation user interface.
Azure Repos
Azure DevOps has support for two types of version control to manage your code: Git and Team Foundation Version Control (TFVC).
Using Git, you will have a copy of the source repository on your machine. You will work directly with your local repository, and you can share your code using IntelliJ, Eclipse, Xcode, Visual Studio and Visual Studio Code.
With TFVC, you will have one version of each file on your machine and all historical data is maintained on the server. One of the following IDEs can be used with TFVC: Visual Studio, Eclipse or Xcode.
Azure Boards
To quickly and easily track your work by using item types such as bugs or stories, you can use Azure Boards. Every item allows you to add History, Discussion, Links and Attachments. It provides interactive tools to help you manage your software product.
These tools are organized into hubs, with every hub having a specific role. For example:
- By using Queries Hub, you can generate a list of work items,
- By using Backlog Hub, you can organize and prioritize work items.
Azure Test Plans
Provide the necessary tools to drive quality throughout the development process. There are several test objectives that Azure Test Plans supports such as:
- exploratory testing,
- automated testing,
- reporting,
- and traceability.
The key benefits of using the Azure Test Plans include integrated analytics, end-to-end traceability, and testing on any platform.
Azure Pipelines
Azure Pipeline helps you automatically build and test the code of your project to make it available to others.
Azure Pipeline uses two mechanisms:
- The first one is the Continuous Integration (CI), which helps find bugs early in the software development process. CI includes artifacts production and automated test execution as part of the process.
- The second mechanism is the Continuous Delivery (CD) which implies build, test and deployment to one or more production environments.
Azure Artifacts
This tool allows efficient code sharing and package management from one place. For example, if you are a developer and you want to share a package within the team or even publicly, it’s enough to publish the package to your feed.
At the same time, you can consume packages from different feeds. The package types supported by Azure Artifacts are Python, Maven, npm, NuGet and Universal Packages.
Differences between Azure DevOps Server and Azure DevOps Services
One thing to keep in mind is that certain functionality from Azure DevOp Server, such as the integration with SQL Server Analysis Services, is not supported in Azure DevOp Services.
The main differences between Azure DevOp Server and Azure DevOp Services are listed below:
Azure DevOps Services | Azure DevOps Server |
---|---|
It offers two options for scoping and scaling data: organizations and projects. Organizations get their own URLs and have only one project collection containing many projects. | It offers three options for scoping and scaling data: deployments (servers), project collections (containers for administration and security) and projects (encapsulate the assets). |
You can authenticate over the public internet with Microsoft account credentials or Azure AD credentials. | You connect to an intranet server using Windows Authentication and Active Directory domain credentials. |
To provide access to a group of users, you have to add Azure AD groups to Azure DevOps Services or add users one at a time when using Microsoft accounts. | To provide access to a group of users you have to add Active Directory Groups to various Azure DevOps groups and the AD group memberships are kept in sync. |
Features access management is done by specifying the access levels on the administration page to set access levels for users. | Features access management is done by assigning an access level to each user that will be validated as the subscribers sign in. |
For work-tracking experience customization you can use the Inheritance process. | For work-tracking experience customization you can use the Inheritance process. In addition, for Azure DevOps Server you can use On-premises XML process model. |
Integrating and Extending Azure DevOps
Azure DevOps allows you to create custom tasks besides using the ones that come built-in.
But, what is a task?
Let’s suppose you want to define automation in a pipeline and you need a building block – a simple package abstracted with a set of inputs. That building block is what we call a task.
Sometimes, adding a task to the pipeline may also involve adding a set of demands. The demands are the prerequisites that must be installed on the agent to run the task.
Azure DevOps provides built-in tasks for basic build and deployment scenarios. For example, you can use .NET core CLI tasks to build, test or package .net applications or you can use Docker Compose task to build or run multi-container docker applications.
If the built-in tasks do not meet your needs, you can create your own custom tasks. For example, to make your packaging process smoother, you can use the Advanced Installer extension to create a custom task to build your Advanced Installer projects within Azure DevOps.
You can read the Configure Azure DevOps build environment for your VS solution including an Advanced Installer setup project article to see how to configure Azure DevOps build environment for your Visual Studio solution, including an Advanced Installer setup project.
Video Tutorial
Conclusion
We hope you now have a better idea of this transition from Team Foundation Server to Azure DevOps, the differences you may encounter, and how it works.
Further resources:
If you have an installation package created by Visual Studio build tasks in Azure DevOps you can publish it as artifacts.