Azure DevOps Services
What is Azure DevOps? Who is it for? What is the big picture?
- Azure DevOps: The big picture
- The Extensions Marketplace
- LAB: Register for an Azure DevOps Account
Azure DevOps Team Projects
Azure DevOps is the collaboration hub for everyone in the development
team, including project managers, testers, architects, developers and
end-users. Here we will create a team project and configure it.
- Development Processes
- Team Projects and Process Templates
- LAB: Creating and configuring your team project
- LAB: Customizing your process
Sources are probably the most important part in any software project and
we need a way to keep track of all sources and all changes. Azure Repos
gives you the choice between TFVS and Git for storing your source history,
branching, merging and everything else required.
- Version Control concepts
- Distributed Source Control with Git
- Git Clients: Command Line, Visual Studio or Visual Studio Code
- Creating a local repository
- Configuring your git repository
- Checking the status of your repo
- Staging files
- Committing files, and then amending it
- Comparing changes in files
- Reverting commits
- Finding the bad change using git bisect
- LAB: Working with a local repository
Team collaboration with remote repositories
Multiple developers working on the same code base requires some central place for all your code and changes.
In git these are known as remote repositories
- Team collaboration with remote repositories
- Cloning a remote repository
- Synchronizing with a remote repository
- Resolving conflicts
- Using Git Hooks
- LAB: Working with remote repositories
Working in isolation with branches
How can we avoid code changes from one developer interfering with code from others?
Branching has always been used to allow developers to complete their changes before integrating with with other's.
- Adding branches to your workflow
- Branching Strategies - Using GitFlow
- Merge vs. Rebase - keeping a linear history
- Different Merge Strategies, i.e. Squash Merge
- Managing your branches
- LAB: Working with branches in git
Team Collaboration with Pull Requests
Working as a team on the same code base comes with its own challenges.
Things like false cognates, code conventions, SOLID principles etc. could
result in good or bad code quality. Pull requests allow you to ensure that
your code keeps its high quality.
- Protecting your branches with pull requests
- Ensuring high quality code with Pull Requests
- Versioning with Git Tags
- Using Forks
- LAB: Team collaboration with Pull Requests
Project Management with Azure Boards
The project backlog contains all the features that users have requested.
This does not mean we will immediately add this feature, for this we have
backlog planning where we try to identity the features we want to build
- Iterative Development
- Creating the project backlog
- Work Items and Queries
- Velocity and Forecasting
- LAB: Create your project backlog
Planning a sprint
Once we have decided which features we will build next, we will identity
the various tasks that need to be completed to built that feature. We will
look at balancing product, schedule and cost.
- Sprint Planning
- Identifying user stores for the next sprint
- Capacity planning
- Defining tasks to complete a user story
- Adjust work to fit team capacity
- Sharing a sprint with stakeholders
- LAB: Planning the next sprint
Running the sprint
Ready? Set? Go! During the sprint the whole team builds the next features.
Communication here is essential, so we will look at the daily standup
meeting and how VSTS can help. We will also look at reporting in VSTS.
- Running a sprint
- The daily standup meeting
- Burndown chart
- Team dashboard
- Task integration with source control
- LAB: Starting the sprint
Continuous Integration with Azure Pipelines
To build quality software, and to limit nasty integration problems at the
end of the project, doing a daily build is long regarded as a best
practice. Azure DevOps makes building daily very easy through the build
system. You'll learn how to manage the build, do desktop builds, and how
you can setup Team Build to work in a continuous integration environment.
You'll then learn how to customize the build process to perform all your
build steps including running unit tests, creating custom build actions,
generating setup programs and deploying to staging servers.
- What is Team Build?
- Doing Continuous integration
- Authoring build using the designer and yaml
- What are stages, jobs, tasks?
- Integrating with other systems (such as Azure and GitHub) using Service Connections
- What are Build Agents?
- Setting up a build agent in your enterprise network
- LAB: Setting up and running a build definition
Continuous Deployment with Azure Pipelines
With continuous deployment you can automatically setup a machine in a consistent state, whenever you want.
Not only can you deploy your application, but also setup your infrastructure.
- Release management and continuous deployment
- Release definitions
- Approving releases with release gates
- Choosing between deployment patterns
- Notifications with Service Hooks
- LAB: Continous Deployment with a release definition
Infrastructure as Code
Don't deploy your infrastructure manually! Deploy your Infrastructure as Code.
- What is Infrastructure as Code?
- Authoring Bicep Templates
- Deploying Bicep using Azure CLI
- Using Continuous Deployment to create your infrastructure
- LAB: Deploying your application's infrastructure using Azure Pipelines
Modern development uses packages like NuGet, NPM or others. With Azure Artifacts
you can create your own private or public package feeds.
- Understanding Azure Artifacts
- Creating a Package Feed
- Pushing a Package
- Understanding Upstream Sources
- Versioning Packages
- Using Artifacts in Azure Pipelines