Introduction to DevOps
Introduction to DevOps
- What is DevOps?
- Explore the DevOps journey
- Identify transformation teams
- Define organization structure for agile practices
- Explore shared goals and define timelines
- What is Azure DevOps?
- What is GitHub?
- Design a license management strategy
- What is source control?
- Describe working with Git locally
- Introduction to Azure Repos
- Introduction to GitHub
Plan Agile with GitHub Projects and Azure Boards
Plan Agile with GitHub Projects and Azure Boards
- Introduction to GitHub Projects and Project boards
- Introduction to Azure Boards
- Configure projects and teams in Azure DevOps
- Link GitHub to Azure Boards
- Configure GitHub Projects
- Manage work with GitHub Project boards
- Customize Project views
- Collaborate using team discussions
- Design and implement a strategy for feedback cycles
- Design and implement source, bug, and quality traceability
- Agile Plan and Portfolio Management with Azure Boards
Design and implement branch strategies and workflows
Design and implement branch strategies and workflows
- Explore branch workflow types
- Explore feature branch workflow
- Explore Git branch model for continuous delivery
- Explore GitHub flow
- Explore fork workflow
- Implement branch merging restrictions
- Version Control with Git in Azure Repos
Collaborate with pull requests in Azure Repos
Collaborate with pull requests in Azure Repos
- Collaborate with pull requests
- Exercise Azure Repos collaborating with pull requests
Explore Git hooks
Explore Git hooks
- Introduction to Git hooks
- Implement Git hooks
Plan foster inner source
Plan foster inner source
- Explore foster inner source
- Implement the fork workflow
- Describe inner source with forks
Manage and configure repositories
This module explores how to work with large repositories, purge repository data and manage and automate release notes using GitHub.
- Work with large repositories
- Explore monorepo versus multiple repos
- Implement a change log
- Implement Scalar and cross repo when cross repo sharing
- Recover specific data by using Git commands
- Purge repository data
- Manage releases with GitHub Repos
- Automate release notes with GitHub
- Create API documentation
- Implement automation of Git history documentation
- Configure source control repository permissions using GitHub
- Configure GitHub tags to organize repositories
Identify technical debt
Identify technical debt
- Examine code quality
- Examine complexity and quality metrics
- Introduction to technical debt
- Measure and manage technical debt
- Introduction to GitHub Advanced Security
- Integrate other code quality tools
- Plan effective code reviews
Explore Azure Pipelines
Explore Azure Pipelines
- Explore the concept of pipelines in DevOps
- Describe Azure Pipelines
- Understand Azure Pipelines key terms
Manage Azure Pipeline agents and pools
Manage Azure Pipeline agents and pools
- Choose between Microsoft-hosted versus self-hosted agents
- Explore job types
- Introduction to agent pools
- Explore predefined agent pool
- Understand typical situations for agent pools
- Communicate with Azure Pipelines
- Communicate to deploy to target servers
- Examine other considerations
- Describe security of agent pools
- Configure agent pools and understand pipeline styles
Describe pipelines and concurrency
Describe pipelines and concurrency
- Understand parallel jobs
- Estimate parallel jobs
- Describe Azure Pipelines and open-source projects
- Explore Azure Pipelines and Visual Designer
- Describe Azure Pipelines and YAML
- Enable Continuous Integration with Azure Pipelines
Design and implement a pipeline strategy
Implement a pipeline strategy
- Configure agent demands
- Explore multi-configuration and multi-agent
- Integrate GitHub repos and Azure Pipelines
- Design and implement a comprehensive testing strategy
- Implement code coverage and show in the pipeline
- Implement multi-job builds
- Explore source control types supported by Azure Pipelines
Integrate with Azure Pipelines
Integrate with Azure Pipelines
- Describe the anatomy of a pipeline
- Understand the pipeline structure
- Detail templates
- Explore YAML resources
- Use multiple repositories in your pipeline
- Migrate a pipeline from classic to YAML in Azure Pipelines
Introduction to GitHub Actions
Introduction to GitHub Actions
- What are actions?
- Explore Actions flow
- Understand Workflows
- Describe standard workflow syntax elements
- Explore Events
- Explore Jobs
- Explore Runners
- Examine release and test an action
Learn continuous integration with GitHub Actions
Learn continuous integration with GitHub Actions
- Describe continuous integration with actions
- Examine environment variables
- Share artifacts between jobs
- Examine Workflow badges
- Describe best practices for creating actions
- Mark releases with Git tags
- Create encrypted secrets
- Use secrets in a workflow
- Implement GitHub Actions for CI/CD
Design a container build strategy
Design a container build strategy
- Examine structure of containers
- Work with Docker containers
- Understand Dockerfile core concepts
- Examine multi-stage dockerfiles
- Examine considerations for multiple stage builds
- Explore Azure container-related services
- Deploy Docker containers to Azure App Service web apps
Create a release pipeline
Create a release pipeline
- Describe Azure DevOps release pipeline capabilities
- Explore release pipelines
- Explore artifact sources
- Choose the appropriate artifact source
- Examine considerations for deployment to stages
- Explore build and release tasks
- Explore custom build and release tasks
- Explore release jobs
- Understand database deployment task
- Configure Pipelines as Code with YAML
Explore release recommendations
Explore release recommendations
- Understand the delivery cadence and three types of triggers
- Explore release approvals
- Explore release gates
- Use release gates to protect quality
- Explore GitOps release strategy and recommendations
- Control Deployments using Release Gates
Provision and test environments
Provision and test environments
- Provision and configure target environments
- Exercise - set up service connections
- Configure automated integration and functional test automation
- Understand Shift-left
- Set up and run availability tests
- Explore Azure Load Testing
- Set up and run functional tests
Manage and modularize tasks and templates
Manage and modularize tasks and templates
- Examine task groups
- Explore variables in release pipelines
- Exercise - create and manage variable groups
Automate inspection of health
This module describes how to automate the inspection of health events, configure notifications in Azure DevOps and GitHub, set up service hooks to monitor pipelines, measure the quality of your release process, and detail release gates for quality purposes. You examine release management tools and details about them.
- Automate inspection of health
- Explore events and notifications
- Explore service hooks
- Configure Azure DevOps notifications
- Configure GitHub notifications
- Explore how to measure quality of your release process
- Examine release notes and documentation
- Examine considerations for choosing release management tools
- Explore common release management tools
Introduction to deployment patterns
Introduction to deployment patterns
- Explore microservices architecture
- Examine classical deployment patterns
- Understand modern deployment patterns
Implement blue-green deployment and feature toggles
Implement blue-green deployment and feature toggles
- What is blue-green deployment?
- Explore deployment slots
- Introduction to feature toggles
- Describe feature toggle maintenance
Implement canary releases and dark launching
Implement canary releases and dark launching
- Explore canary releases
- Examine traffic manager
- Understand dark launching
Implement A/B testing and progressive exposure deployment
Implement A/B testing and progressive exposure deployment
- What is A/B testing?
- Explore CI-CD with deployment rings
Integrate with identity management systems
Integrate with identity management systems
- Integrate GitHub with single sign-on (SSO)
- Design and implement permissions and roles in GitHub
- Design and implement permissions and security groups in Azure DevOps
- Explore workload identities
- Implement managed identities
Manage application configuration data
Manage application configuration data
- Rethink application configuration data
- Explore separation of concerns
- Understand external configuration store patterns
- Implement Azure DevOps secure files
- Introduction to Azure App Configuration
- Examine Key-value pairs
- Examine App configuration feature management
- Integrate Azure Key Vault with Azure Pipelines
- Manage secrets, tokens and certificates
- Examine DevOps inner and outer loop
- Integrate Azure Key Vault with Azure DevOps
- Enable Dynamic Configuration and Feature Flags
Explore infrastructure as code and configuration management
Explore infrastructure as code and configuration management
- Explore environment deployment
- Examine environment configuration
- Understand imperative versus declarative configuration
- Understand idempotent configuration
Create Azure resources using Azure Resource Manager templates
Create Azure resources using Azure Resource Manager templates
- Why use Azure Resource Manager templates?
- Explore template components
- Manage dependencies
- Modularize templates
- Manage secrets in templates
Create Azure resources by using Azure CLI
Create Azure resources by using Azure CLI
- What is Azure CLI?
- Work with Azure CLI
Explore Azure Automation with DevOps
Explore Azure Automation with DevOps
- Create automation accounts
- What is a runbook?
- Understand automation shared resources
- Explore runbook gallery
- Examine webhooks
- Explore source control integration
- Explore PowerShell workflows
- Create a workflow
- Explore hybrid management
- Examine checkpoint and parallel processing
Implement Desired State Configuration (DSC)
Implement Desired State Configuration (DSC)
- Understand configuration drift
- Explore Desired State Configuration (DSC)
- Explore Azure Automation State configuration (DSC)
- Examine DSC configuration file
- Implement DSC and Linux Automation on Azure
Implement Bicep
Implement Bicep
- What is Bicep?
- Install Bicep
- Exercise - Create Bicep templates
- Understand Bicep file structure and syntax
- Exercise - Deploy a Bicep file from Azure Pipelines
- Exercise - Deploy a Bicep file from GitHub workflows
- Deployments using Azure Bicep templates
Introduction to Secure DevOps
This module introduces DevSecOps concepts, SQL injection attacks, threat modeling, and security for continuous integration.
- Describe SQL injection attack
- Understand DevSecOps
- Explore Secure DevOps Pipeline
- Explore key validation points
- Explore continuous security validation
- Understand threat modeling
- Explore CodeQL in GitHub
Implement open-source software
Implement open-source software
- Explore how software is built
- What is open-source software?
- Explore corporate concerns with open-source software components
- Introduction to open-source licenses
- Explore common open-source licenses
- Examine license implications and ratings
Software Composition Analysis
Software Composition Analysis
- Inspect and validate code bases for compliance
- Explore software composition analysis (SCA)
- Implement GitHub Dependabot alerts and security updates
- Integrate software composition analysis checks into pipelines
- Examine tools for assess package security and license rate
- Automate container scanning, including container images
- Interpret alerts from scanner tools
Security Monitoring and Governance
Security Monitoring and Governance
- Implement pipeline security
- Explore Microsoft Defender for Cloud
- Examine Microsoft Defender for Cloud usage scenarios
- Explore Azure Policy
- Understand policies
- Explore initiatives
- Explore resource locks
- Understand Microsoft Defender for Identity
- Integrate GitHub Advanced Security with Microsoft Defender for Cloud
- Configure GitHub Advanced Security for GitHub and Azure DevOps
Explore package dependencies
Explore package dependencies
- What is dependency management?
- Describe elements of a dependency management strategy
- Identify dependencies
- Understand source and package componentization
- Decompose your system
- Scan your codebase for dependencies
Understand package management
Understand package management
- Explore packages
- Understand package feeds
- Explore package feed managers
- Explore common public package sources
- Explore self-hosted and SaaS based package sources
- Consume packages
- Introduction to Azure Artifacts
- Publish packages
- Package management with Azure Artifacts
Migrate consolidate and secure artifacts
Migrate consolidating and secure artifacts
- Identify existing artifact repositories
- Migrate and integrating artifact repositories
- Secure access to package feeds
- Examine roles
- Examine permissions
- Examine authentication
Implement a versioning strategy
Implement a versioning strategy
- Understand versioning of artifacts
- Explore semantic versioning
- Examine release views
- Promote packages
- Explore best practices for versioning
Introduction to GitHub Packages
Introduction to GitHub Packages
- Publish packages
- Install a package
- Delete and restore a package
- Explore package access control and visibility
Implement tools to track usage and flow
Implement tools to track usage and flow
- Understand the inner loop
- Introduction to continuous monitoring
- Explore Azure Monitor and Log Analytics
- Examine Kusto Query Language (KQL)
- Explore Application Insights
- Implement Application Insights
- Design and implement metrics and queries
- Monitor application performance with Application Insights
Develop monitor and status dashboards
Develop monitor and status dashboards
- Configure monitoring in GitHub
- Explore Azure Dashboards
- Explore Azure Monitor workbooks
- Explore Power BI
- Build your own custom application
- Monitor pipeline health, including failure rate, duration, and flaky tests
- Optimize a pipeline for cost, time, performance, and reliability
- Optimize pipeline concurrency for performance and cost
Share knowledge within teams
Share knowledge within teams
- Share acquired knowledge within development teams
- Introduction to Azure DevOps project wikis
- Integrate GitHub and Azure DevOps with Microsoft Teams
- Share team knowledge using Azure Project Wiki
Design processes to automate application analytics
Design processes to automate application analytics
- Explore rapid responses and augmented search
- Integrate telemetry
- Examine monitoring tools and technologies
- Explore IT Service Management Connector
Manage alerts, blameless retrospectives and a just culture
Manage alerts, blameless retrospectives and a just culture
- Examine when to get a notification
- Explore how to fix it
- Explore smart detection notifications
- Improve performance
- Understand server response time degradation
- Reduce meaningless and non-actionable alerts
- Examine blameless retrospective
- Develop a just culture