Discovering Azure DevOps services
In this section, we will delve into the wide range of Azure DevOps services, which are intended to assist teams throughout the entirety of delivering business value to customers. Azure DevOps serves a diverse audience, with its offerings customized to meet the requirements of different roles within a project team.
The services known as Repositories (Repos), Pipelines, and Artifacts are primarily tailored to developers, offering a range of powerful tools for managing code and executing continuous integration/continuous deployment (CI/CD) processes. On the other hand, Boards are specifically designed to cater to the needs of the entire team, providing valuable assistance in project management and fostering collaboration through agile planning tools and tracking capabilities. For managers, Analytics and Delivery Plans prove to be particularly beneficial as they offer insights and oversight on project progress, team performance, and delivery timelines. Lastly, Test Plans are specifically created for testers and stakeholders, equipping them with a comprehensive suite of testing tools to ensure software quality and meet customer requirements.
We will now dive deeper into each one of these services.
Azure Boards
Azure Boards is an advanced project management solution, one of the features of the Azure DevOps suite. Its primary purpose is to support Agile software development methodologies. By acting as a centralized hub, it enables teams to efficiently plan, monitor, and engage in discussions regarding their tasks. This fosters collaboration and boosts overall productivity.
The following screenshot shows an example of an Azure Board:
Now, let’s delve into the essential functionalities and capabilities of this tool:
- Agile Planning Tools: Azure Boards is equipped with tools that support Agile methodologies, making it easier for teams to adopt and implement practices such as Scrum and Kanban. These tools allow for flexible planning and tracking of work items, enabling teams to adapt to changes quickly.
- Scrum and Kanban Support: It offers native support for both Scrum and Kanban, two of the most popular Agile methodologies. Teams can choose the framework that best fits their workflow, whether it’s the structured sprints of Scrum or the continuous flow of Kanban.
- Customizable Dashboards: Teams can tailor dashboards to their needs, ensuring that relevant information is always in the proper place. This customization capability allows for the monitoring of progress and key metrics in real-time, facilitating data-driven decision-making.
- Integrated Reporting: Azure Boards includes integrated reporting features, providing insights into project health, team productivity, and delivery timelines. These reports can help identify bottlenecks and areas for improvement.
- Work Item Tracking: Teams can create and track various types of work items, including user stories, backlog items, tasks, features, and bugs. This functionality supports a comprehensive approach to managing all aspects of software development, from feature planning to bug tracking.
Azure Analytics
Azure Analytics is a robust feature that enables data analysis for your software development projects. It facilitates collecting, visualizing, and interpreting important metrics and trends from your Azure DevOps environment.
By utilizing this potent analytical tool, you can obtain profound insights into your team’s performance, recognize areas of improvement, and make informed decisions based on data analysis. With Azure DevOps Analytics, you can streamline your development processes, boost cooperation, and achieve project success by leveraging the potential of data. Your teams can create unique Dashboard views enriched by widgets based on analytics, such as burndown and burnup widgets. Further, you can leverage Power BI data connectors to support data import.
The following screenshot shows an example of an Azure Analytics Dashboard:
Azure Delivery Plans
The Azure Delivery Plans feature is a highly beneficial tool that assists teams in visualizing and organizing their work delivery across various teams and projects. It offers an interactive timeline view of planned work, enabling teams to coordinate and align their efforts efficiently.
Delivery Plans help track in tracking dependencies, identifying potential conflicts, and ensuring a smooth delivery process. This collaborative tool promotes transparency, improves communication, and facilitates the coordination of complex projects, making it an indispensable component of successful project management within Azure DevOps.
The following screenshot shows an example of an Azure Delivery Plan:
Azure Repos
Azure Repos offers support for hosting private Git repositories and for Team Foundation Version Control (TFVC). It provides a suite of version control tools designed to handle the source code management needs of any development project, regardless of size. In Git, changes are committed to the version control system, which then calculates the current state of the code based on these commits. This calculated state, often referred to as a “snapshot,” is represented as the directory structure of the repository with its files. The history of commits is immutable and saved permanently, allowing the state of the files to be restored to any previous version if necessary.
Git is the most widely used version control system among developers today. Azure Repos supports standard Git, enabling developers to work with their preferred tools and clients, including Git for Windows, Mac, and various third-party Git services. Additionally, it integrates seamlessly with a broad range of development tools, including but not limited to Visual Studio and Visual Studio Code, thus accommodating developers who use different Integrated Development Environments (IDEs).
The following screenshot shows an example of the commits you can push to a repo in Azure:
Azure Pipelines
Azure Pipelines enables the automation of building, testing, and deploying code across various stages, facilitating its availability to users and deployment across diverse environments beyond the traditional Development, Testing, Acceptance, and Production (DTAP) pipeline. This includes the utilization of ephemeral environments, which offer temporary, dynamic testing configurations. It encompasses Continuous Integration/Continuous Delivery (CI/CD), a methodology that automates the process of software delivery and ensures the continuous improvement of products.
Before leveraging Azure Pipelines, it’s essential to store your code in a version control system. Azure Pipelines supports integration with numerous version control systems, including Azure Repos, Git, Team Foundation Version Control (TFVC), GitHub, GitHub Enterprise, Subversion, Bitbucket Cloud, and now Bitbucket Server. Azure Pipelines is versatile, catering to a broad spectrum of development projects. It is compatible with various programming languages and platforms, such as Java, JavaScript, Node.js, Python, .NET, C++, Go, PHP, and XCode, and it can facilitate the building of desktop and mobile applications.
Furthermore, Azure Pipelines allows for deployment to multiple target environments, which can range from virtual machines and Azure services to any on-premises or cloud platform. However, it is important to note that container registries are used for storing container images rather than hosting applications. Azure Pipelines provides the flexibility to work with any project or application, supporting a wide array of deployment targets to meet the needs of diverse software development practices.
Azure Pipelines Library offers a centralized repository for managing configuration data crucial for your deployment processes. In the library, values are stored in the form of variables, by simply mapping key, or the variable name, to the value. Variables can be stored as plain text, as encrypted text, or the variable value source can come from the Azure Key Vault, by linking the library to the specific Azure Key Vault Resources. Library facilitates pipeline configurations that dictate the flow of the continuous integration and delivery (CI/CD) processes, infrastructure configurations which define the underlying resources required for your application, and application runtime configurations that specify the environment variables and settings necessary for your application to run properly. By leveraging the Azure Pipelines Library, you can ensure consistent, reliable management of these configurations across different environments, streamlining the deployment and operational workflows for your projects.
The following screenshot shows an example of a run for an Azure Pipeline:
Azure DevOps Test Plans
Azure DevOps Test Plans enhance code quality through a combination of structured and exploratory testing approaches. This tool facilitates various testing strategies, including planned manual testing, exploratory testing, user acceptance testing (UAT), and the collection of feedback from stakeholders. In planned manual testing, test cases are organized into test plans and suites by test leads and testers. Testing can be initiated directly from Kanban boards or what is commonly referred to in the UI as the “Boards” or “Work” sections.
User Acceptance Testing (UAT) is crucial for verifying the software’s fulfillment of customer requirements, typically conducted by end-users or clients to ensure the solution meets their needs before it is deployed into production. Exploratory testing encourages the entire DevOps team, including engineers, developers, product owners, and testers, to actively engage in testing without predefined plans or suites, promoting creativity and spontaneous discovery of issues.
Feedback gathering from stakeholders, conducted by teams outside of development such as marketing or sales, is facilitated through Azure DevOps, allowing developers to seek input on user stories and features directly. Stakeholders can respond to these requests, ensuring valuable insights are integrated into the development process.
It is important to note that Azure DevOps Test Plans is a premium feature. While a “Basic” Azure DevOps license offers read-only access to Test Plans, actively using the service for testing requires a “Basic + Test Plans” license, costing around $52 per user per month. This pricing structure is significant for organizations considering the comprehensive testing capabilities Azure DevOps Test Plans provides, balancing cost against the value of advanced testing features and stakeholder engagement in the software development lifecycle.
The following screenshot shows an example of an Azure DevOps Test Plan:
Azure Artifacts
Azure Artifacts enables the creation, sharing, and management of NuGet, Cargo, npm, Python, Maven, and Universal packages within Azure DevOps. It allows for the packaging of code into reusable components that can be consumed by both source code and CI/CD pipelines. With Azure Artifacts, you have the flexibility to establish multiple feeds, which serve as repositories for your packages. These feeds can be configured as either private or public, providing you with control over access and distribution. This capability ensures that your development teams can easily organize their packages and regulate who can view or consume them, enhancing collaboration and efficiency in software development processes.
The following screenshot shows an example of a feed in Azure Artifacts:
Extension Marketplace
You can install extensions for Azure DevOps from the Visual Studio Marketplace. These extensions are simple add-ons that can be used to customize and extend your team’s experience with Azure DevOps. They can help by extending the planning and tracking of work items, code testing and tracking, pipeline build and release flows, and collaboration among team members. The extensions are created by Microsoft and the community.
The following screenshot shows some of the extensions that can be installed from the marketplace:
The services such as Azure Boards, Azure Analytics, Azure Delivery Plans, Azure Repos etc. that we introduced in the previous sections will be explained more thoroughly in the upcoming chapters of this book. In the next section, we will introduce the scenarios that will be used throughout this book.