Introduction xix
Chapter 1: Introduction to Devops 1
Definition and Overview of DevOps 1
History of DevOps 2
The DevOps Life Cycle 3
The Benefit of DevOps 4
The Current State of DevOps 5
Summary 7
Chapter 2: Introduction to Azure Devops 9
What Is Azure DevOps? 9
Azure DevOps Services vs. Azure DevOps Server 10
Differences Between Azure DevOps Services and Azure DevOps Server 10
Scoping 10
Authentication 11
Users and Group 11
User Access Management 11
Data Protection 12
Similarities Between Azure DevOps Services and Azure DevOps Server 12
Features 12
Analytics and Reporting 12
Process Customization 12
Added Benefits on Azure DevOps Services 12
Azure DevOps Features 13
Benefits of Azure DevOps 14
Azure Monitor 14
Azure DevTest Labs 15
Summary 15
Chapter 3: Managing an Azure Devops Project With Azure Boards 17
Azure DevOps Organizations 18
Planning Your Organization 18
Creating an Azure DevOps Organization 19
Azure DevOps Projects 20
Types of Projects 22
Single Project 22
Many Projects 22
Creating an Azure DevOps Project 22
Understanding Project Processes 24
Concepts in Azure Boards 27
Work Items 27
Creating a Work Item 28
Backlogs 31
Managing Backlogs 32
Boards 34
Sprints 36
Queries 37
Plans 39
Integrating Azure Boards with GitHub 40
GitHub and Azure Boards Connection 40
GitHub and Azure Boards Verification 44
Summary 45
Chapter 4: Version Control with Azure Repos 47
Version Control 48
Version Control Systems 48
History of Version Control 49
Benefits of Version Control 50
Git 50
What Is a Git Repository? 51
Create a Git Repository on Azure DevOps 51
Setting Repository Permissions 51
Creating the Repository 53
Cloning the Repository 55
Import an Existing Git Repository to Azure DevOps 57
Pull Requests 58
Draft Pull Requests 58
Create a Pull Request from Azure Repos 59
Creating a Pull Request from the Pull Requests Page 59
Creating a Pull Request from a Feature Branch 60
Creating a Pull Request from a Work Item in Azure Boards 60
Creating a Draft Pull Request 62
Collaborate in Pull Requests 63
Git Tags 63
Annotated Tags 63
Lightweight Tags 64
Create Tags in Azure DevOps 64
Using the Tags View 64
Using the Commits View 65
Summary 66
Chapter 5: Automating Code Builds with Azure Pipelines 67
Overview of Continuous Integration and Continuous Deployment 68
Continuous Integration 68
Continuous Deployment 68
Continuous Delivery 69
Overview of Azure Pipelines 69
Azure Pipelines Features 69
Defining Pipelines 69
Defining Pipelines Using YAML 71
Defining Pipelines Using the Classic Editor 74
Components of Azure Pipelines 76
Azure Pipelines Agents and Agent Pools 77
Agents 77
Agent Pools 77
Using Microsoft- Hosted Agents 78
Using Self- Hosted Linux Agents 79
Using Self- Hosted Windows Agents 81
Using Self- Hosted macOS Agents 82
Azure Pipelines Build Script 83
YAML Overview 83
Writing a Build Script 84
Summary 86
Chapter 6: Running Automated Tests with Azure Pipelines 89
Overview of Software Testing 90
History of Software Testing 90
Continuous Testing 90
Importance of Software Testing 91
Types of Software Tests 92
Unit Tests 92
Integration Tests 92
Smoke Tests 94
Regression Tests 94
End- to- End Tests 95
Other Types of Software Tests 96
Steps for Running Software Tests 96
Setting Up Testing in Azure Pipelines 97
Summary 102
Chapter 7: Creating and Hosting Source Code Packages with Azure Artifacts 103
Overview of Artifact Repositories 104
Introduction to Azure Artifacts 104
Azure Artifacts Feeds 105
Project- Scoped Feeds 105
Organization- Scoped Feeds 105
How to Create an Azure Artifacts Feed 106
Public Feeds 108
Azure Artifacts Feed Views 108
Types of Azure Artifacts Feed Views 108
Upstream Sources 108
Setting Up Upstream Sources 109
How to Update a Feed to Use an Upstream Source 109
How to Create a Feed with Upstream Source Capability 111
How to Add a Feed in Your Organization to an Upstream Source 113
Publishing Artifacts in Azure Pipelines 115
Publishing Artifacts Using the publish Keyword in YAML 115
Publishing Artifacts Using a YAML Task 115
Publishing Artifacts Using the Classic Editor 116
Downloading Artifacts in Azure Pipelines 120
Downloading Artifacts Using the Download Keyword in YAML 120
Downloading Artifacts Using a YAML Task 121
Downloading Artifacts Using the Classic Editor 121
Summary 122
Chapter 8: Automating Code Deployments With Azure Pipelines 125
Continuous Deployment and Continuous Delivery in DevOps 125
Continuous Deployment 126
Continuous Deployment Tools 126
Advantages of Continuous Deployment 127
Continuous Delivery 127
Advantages of Continuous Delivery 128
Release Pipelines 128
Advantages of Release Pipelines 129
How Release Pipelines Work in Azure 129
Deployment Model Using Azure Release Pipelines 131
Creating the Release Pipeline 131
Creating a Release 134
Multistage Pipelines 137
Summary 143
Chapter 9: Application Testing with Azure Test Plans 145
Overview of Azure Test Plans 146
How Azure Test Plans Work 146
Advantages of Azure Test Plans 147
Creating Test Plans and Test Suites 148
Test Plans 148
Test Suites 150
Adding a Static Test Suite 150
Adding a Requirement- Based Test Suite 151
Adding a Query- Based Test Suite 152
Test Cases 154
Overview of Test Cases 154
Creating Test Cases 154
Configurations in Tests 157
Creating Test Configurations 157
Assigning Test Configurations 159
Running Manual Tests 161
Running Tests with Configurations 161
Viewing Manual Test Results 161
Running Automated Tests from Test Plans 162
Setting Up Your Environment for Automated Tests 163
Running the Tests 164
Summary 166
Chapter 10: Infrastructure Automation with Azure Pipelines 169
Overview of Infrastructure Automation 169
Types of Infrastructure as Code 170
Imperative Infrastructure as Code 171
Declarative Infrastructure as Code 172
Benefits of Infrastructure as Code 173
Infrastructure Automation Tools on Azure 174
Azure Resource Manager Templates 174
Azure Bicep 176
How Azure Bicep Works 176
Benefits of Azure Bicep 177
Using Azure Bicep in Azure Pipelines 177
Setting Up Azure Bicep on Your Computer 177
Azure Bicep Templates Overview 178
Azure Bicep Templates in Azure Pipelines 179
Pipeline Authentication 179
Deploying Azure Bicep Templates Using the Pipeline 181
Summary 185
Chapter 11: Exercise Practice Using Azure Devops Tools 187
Introducing the Sample Application 187
Create a Fork of the Project 188
Clone Your Fork Locally 189
Importing the Repository from GitHub to Azure Repos 189
Using Azure Boards to Manage Work Items 191
Committing Code That Adds New Features 193
Building the Code in Azure Pipelines 194
Deploying the Code 195
Summary 196
Chapter 12: Starting a Career in Azure Devops 197
Starting an Azure DevOps Career 197
Getting Your First Job as an Azure DevOps Engineer 199
Finding an Azure DevOps Community Near You 201
Summary 202
Chapter 13: Conclusion 203
Appendix: Review Questions 205
References 213
Index 219