Continuous Delivery. Continuous DevOps. KYIV, 2020
CONTINUOUS DELIVERY. CONTINUOUS DEVOPS.
5-6,JUNE 2020
KYIV, UKRAINE
Serhii Abanichev
Modern CICD pipeline with Azure DevOps
Continuous Delivery. Continuous DevOps. KYIV, 2020
Microsoft certified professional with about
5 years of work experience in building and
managing high available systems. Has a
deep understanding in configuration
management systems, continuous
integration and delivery processes, creating
architecture and implementing IaaC
approach in various cloud providers from
scratch.
Key area of technical experience and
personal interests: Microsoft technologies
and Azure cloud
Serhii Abanichev
Technology Architect @
GlobalLogic
Continuous Delivery. Continuous DevOps. KYIV, 2020
Executive summary
Components
Customers need to speed up the development
and delivery of software applications without huge
effort in establishing CI/CD processes with
various tools, especially on initial project stage.
Azure DevOps Services and Azure Kubernetes
Service could help solve such problem and allow
to manage all delivery process from one place.
Continuous Delivery. Continuous DevOps. KYIV, 2020
“DevOps is the union of people,
process, and products to enable
continuous delivery of value to our end
users.”
- Donovan Brown
DevOps definition
Continuous Delivery. Continuous DevOps. KYIV, 2020
Why is DevOps important?
• Our competition is already
doing this
• Increase velocity
• Reduce downtime
• Reduce human error
Continuous Delivery. Continuous DevOps. KYIV, 2020
Microsoft proposal
Set of cloud-hosted DevOps services, that work for any
language targeting any platform:
• Plan your project with Agile tools
• Manage test plans from the web
• Version code using Git
• Deploy code using cross-platform CICD system
Azure
DevOps
Continuous Delivery. Continuous DevOps. KYIV, 2020
What is Azure DevOps?
Plan, track, and discuss work
across your teams so that
you can deliver value to your
users faster.
CI/CD that works with any language,
platform, and cloud. Connect to GitHub
or any Git provider and deploy
continuously to any cloud.
Unlimited cloud-hosted private Git
repos for your project. Collaborative
pull requests, advanced file
management, and more.
The manual and exploratory
testing toolkit to ship with
confidence.
Create, host, and share packages
with your team. Add artifacts to your
CI/CD pipelines with a single click.
Built by the community – access
extensions from Slack to
SonarCloud to 1,000 other amazing
things.
Visual Studio Team
services (VSTS) Azure DevOps
Continuous Delivery. Continuous DevOps. KYIV, 2020
The Concept of Pipelines in DevOps
• A pipeline enables a constant flow of changes into production via an
automated software production line
• Pipelines create a repeatable, reliable and incrementally improving
process for taking software from concept to customer
• Pipelines require infrastructure, this infrastructure will have a direct
impact on the effectiveness of the pipeline
Build Automation
and Continuous
Integration
Test Automation
Deployment
Automation
Continuous Delivery. Continuous DevOps. KYIV, 2020
Pipeline flow
Continuous Delivery. Continuous DevOps. KYIV, 2020
Azure DevOps Pipelines
• Azure Pipelines is a cloud service that you can use to automatically build
and test your code project and make it available to other users
• Works great with Continuous Integration and Continuous Delivery
• Work with any language or platform - Python, Java, PHP, Ruby, C#, and Go
• Deploy to different types of targets at the same time
• Integrate with Azure deployments - container registries, virtual machines, Azure
services, or any on-premises or cloud target (Microsoft Azure, Google Cloud, or
Amazon cloud services)
• Build on Windows, Linux, or Mac machines
• Integrate with GitHub
• Work with open-source projects
Continuous Delivery. Continuous DevOps. KYIV, 2020
Azure Pipelines and Visual Designer
• Configure your pipelines with the Visual Designer
• Create and configure your build and release pipelines
• Push your code to your version control repository
• The build creates an artifact that's used by the rest of your pipeline
• Your code is now updated, built, tested, and packaged
Continuous Delivery. Continuous DevOps. KYIV, 2020
Old-style pipeline
Engineer
Visual Studio
Azure Repos
Azure
Build
Pipeline
Azure
Release
pipeline
Azure Board
Azure
Container
Registry
Azure
Kubernetes
Service
Azure
Application
Insights
A
z
u
r
e
D
e
v
O
p
s
Continuous Delivery. Continuous DevOps. KYIV, 2020
Pull Request flow
commit
Pull request
initiation Code updates
and test
triggering
Creating
feature
branch
Triggering
CI build
master
feature branch
Continuous Delivery. Continuous DevOps. KYIV, 2020
Release flow
dev qa stg prodCI build
Approval flow
Continuous Delivery. Continuous DevOps. KYIV, 2020
DEMO:
Azure Pipelines and
Visual Designer
Continuous Delivery. Continuous DevOps. KYIV, 2020
Build definition as code
Why store build definitions in YAML?
• Versioning
• Keeping Build Definitions with Code
• Branching
• Peer Review
• Reuse
• Linting
• Abstraction and Declarative Instruction
The concept of a build definition as code as it relates to a build server for continuous
integration means using an actual declarative language to define how your build should
works instead of using a web user interface to define your build steps. You can use a
general purpose programming language, a domain specific language or some other
declarative construct to indicate how your build your system.
Continuous Delivery. Continuous DevOps. KYIV, 2020
Azure Pipelines and YAML
• Configure your pipelines in a YAML file that exists alongside your code
• Configure Azure Pipelines to use your Git repo
• Edit your azure-pipelines.yml file to define your build
• Push your code to your version control repository
• Your code is now updated, built, tested, and packaged
Continuous Delivery. Continuous DevOps. KYIV, 2020
New-style pipeline
Engineer
Visual Studio
Azure Repos
Azure
Pipeline
Azure Board
Azure
Container
Registry
Azure
Kubernetes
Service
Azure
Application
Insights
A
z
u
r
e
D
e
v
O
p
s
Continuous Delivery. Continuous DevOps. KYIV, 2020
Pipeline Structure
• Pipeline – one or more stages that describe a CI/CD process
• Stage – collection of related jobs
• Job – collection of steps run by an agent on a server
• Step – linear sequence of operations that make up a job
• Tasks – building blocks of a pipeline
Azure Pipelines supports 4 kinds of templates
• Stage
• Job
• Step
• Variable
Continuous Delivery. Continuous DevOps. KYIV, 2020
DEMO:
Azure Pipelines and
YAML
Continuous Delivery. Continuous DevOps. KYIV, 2020
Thank you
Serhii Abanichev
serhii.abanichev@globallogic.com

DevOps Fest 2020. Сергей Абаничев. Modern CI\CD pipeline with Azure DevOps

  • 1.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 CONTINUOUS DELIVERY. CONTINUOUS DEVOPS. 5-6,JUNE 2020 KYIV, UKRAINE Serhii Abanichev Modern CICD pipeline with Azure DevOps
  • 2.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Microsoft certified professional with about 5 years of work experience in building and managing high available systems. Has a deep understanding in configuration management systems, continuous integration and delivery processes, creating architecture and implementing IaaC approach in various cloud providers from scratch. Key area of technical experience and personal interests: Microsoft technologies and Azure cloud Serhii Abanichev Technology Architect @ GlobalLogic
  • 3.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Executive summary Components Customers need to speed up the development and delivery of software applications without huge effort in establishing CI/CD processes with various tools, especially on initial project stage. Azure DevOps Services and Azure Kubernetes Service could help solve such problem and allow to manage all delivery process from one place.
  • 4.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 “DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.” - Donovan Brown DevOps definition
  • 5.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Why is DevOps important? • Our competition is already doing this • Increase velocity • Reduce downtime • Reduce human error
  • 6.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Microsoft proposal Set of cloud-hosted DevOps services, that work for any language targeting any platform: • Plan your project with Agile tools • Manage test plans from the web • Version code using Git • Deploy code using cross-platform CICD system Azure DevOps
  • 7.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 What is Azure DevOps? Plan, track, and discuss work across your teams so that you can deliver value to your users faster. CI/CD that works with any language, platform, and cloud. Connect to GitHub or any Git provider and deploy continuously to any cloud. Unlimited cloud-hosted private Git repos for your project. Collaborative pull requests, advanced file management, and more. The manual and exploratory testing toolkit to ship with confidence. Create, host, and share packages with your team. Add artifacts to your CI/CD pipelines with a single click. Built by the community – access extensions from Slack to SonarCloud to 1,000 other amazing things. Visual Studio Team services (VSTS) Azure DevOps
  • 8.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 The Concept of Pipelines in DevOps • A pipeline enables a constant flow of changes into production via an automated software production line • Pipelines create a repeatable, reliable and incrementally improving process for taking software from concept to customer • Pipelines require infrastructure, this infrastructure will have a direct impact on the effectiveness of the pipeline Build Automation and Continuous Integration Test Automation Deployment Automation
  • 9.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Pipeline flow
  • 10.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Azure DevOps Pipelines • Azure Pipelines is a cloud service that you can use to automatically build and test your code project and make it available to other users • Works great with Continuous Integration and Continuous Delivery • Work with any language or platform - Python, Java, PHP, Ruby, C#, and Go • Deploy to different types of targets at the same time • Integrate with Azure deployments - container registries, virtual machines, Azure services, or any on-premises or cloud target (Microsoft Azure, Google Cloud, or Amazon cloud services) • Build on Windows, Linux, or Mac machines • Integrate with GitHub • Work with open-source projects
  • 11.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Azure Pipelines and Visual Designer • Configure your pipelines with the Visual Designer • Create and configure your build and release pipelines • Push your code to your version control repository • The build creates an artifact that's used by the rest of your pipeline • Your code is now updated, built, tested, and packaged
  • 12.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Old-style pipeline Engineer Visual Studio Azure Repos Azure Build Pipeline Azure Release pipeline Azure Board Azure Container Registry Azure Kubernetes Service Azure Application Insights A z u r e D e v O p s
  • 13.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Pull Request flow commit Pull request initiation Code updates and test triggering Creating feature branch Triggering CI build master feature branch
  • 14.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Release flow dev qa stg prodCI build Approval flow
  • 15.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 DEMO: Azure Pipelines and Visual Designer
  • 16.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Build definition as code Why store build definitions in YAML? • Versioning • Keeping Build Definitions with Code • Branching • Peer Review • Reuse • Linting • Abstraction and Declarative Instruction The concept of a build definition as code as it relates to a build server for continuous integration means using an actual declarative language to define how your build should works instead of using a web user interface to define your build steps. You can use a general purpose programming language, a domain specific language or some other declarative construct to indicate how your build your system.
  • 17.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Azure Pipelines and YAML • Configure your pipelines in a YAML file that exists alongside your code • Configure Azure Pipelines to use your Git repo • Edit your azure-pipelines.yml file to define your build • Push your code to your version control repository • Your code is now updated, built, tested, and packaged
  • 18.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 New-style pipeline Engineer Visual Studio Azure Repos Azure Pipeline Azure Board Azure Container Registry Azure Kubernetes Service Azure Application Insights A z u r e D e v O p s
  • 19.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Pipeline Structure • Pipeline – one or more stages that describe a CI/CD process • Stage – collection of related jobs • Job – collection of steps run by an agent on a server • Step – linear sequence of operations that make up a job • Tasks – building blocks of a pipeline Azure Pipelines supports 4 kinds of templates • Stage • Job • Step • Variable
  • 20.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 DEMO: Azure Pipelines and YAML
  • 21.
    Continuous Delivery. ContinuousDevOps. KYIV, 2020 Thank you Serhii Abanichev serhii.abanichev@globallogic.com

Editor's Notes

  • #5 It is very important to realize that DevOps is not a product. You cannot buy DevOps and install it. DevOps is not just automation or infrastructure as code. DevOps is people following a process enabled by products to deliver value to our end users.