ci/cd at verizon media using...
TRANSCRIPT
Information Classification: General
CI/CD at Verizon Media
using ScrewdriverJithin EmmanuelApril 18, 2019
Information Classification: General
2
Jithin Emmanuel
Senior Engineering
ManagerPlatforms and Technology
Sunnyvale
Jithin Emmanuel is a Sr. Software
Development Manager for Developer Platform
Services at Verizon Media. Jithin leads the
product development and operations of
Screwdriver, which is a flagship CICD product
used at scale in Verizon Media.
Information Classification: General
3
Overview
Information Classification: General
5
Stats
29k+Pipelines
30k+Daily builds
10+Programming
Languages
470+Hosts
5Build Clusters
4Versions
2011Established
Template
sFootprint HistoryUsage
Information Classification: General
6
Daily Habit Integration
Secure Continuous Delivery
● Feature code checked into SCM
● Screwdriver Pull Request Workflow
● Pull Request merged
● Screwdriver Production Workflow
Information Classification: General
7
Pipeline as Codejobs:
build:
requires: [~pr, ~commit]
image: node:10
steps:
- init: npm install
- test: npm test
publish:
requires: [build]
image: node:10
steps:
- publish: npm install
- deploy: ./deploy.sh
Information Classification: General
8
Runs Anywhere
● Pluggable components enables
Screwdriver cluster admins to
choose what’s best
● Multiple build executors to choose
from
● Helm chart for easy setup in a
Kubernetes cluster
● Screwdriver in a box
Information Classification: General
9
Containerized Builds
● Multiple build executors available to run your build
○ Enables build execution as Docker containers or Kubernetes
pods
● Strict build isolation via HyperContainer, a VM-based executor
Information Classification: General
10
Architecture
Information Classification: General
11
Features
Information Classification: General
12
See Screwdriver in action
https://cd.screwdriver.cd
Information Classification: General
13
Powerful Workflow
● Fan-in & fan-out jobs
● Detached workflows
● Easy rollback workflows
● Remote triggers
● Periodic jobs
● Execution constraints - freeze windows, blocked by, collapsed builds
https://cd.screwdriver.cd/pipelines/2313
https://cd.screwdriver.cd/pipelines/1
Information Classification: General
14
Advanced
● Native support for mono-repos
○ https://cd.screwdriver.cd/pipelines/1837/events
● Branch Filtering enables feature branch workflows
○ https://cd.screwdriver.cd/pipelines/1838/events
● External config for orchestrating multiple pipelines
○ https://cd.screwdriver.cd/pipelines/1074/child-pipelines
● Pull request workflow
○ https://cd.screwdriver.cd/pipelines/2539/pulls
Information Classification: General
15
Build Cache
● Provides native caching support for builds
● Simple yaml config to cache artifacts with varying scopes (pipeline, event, or
job-level)
https://cd.screwdriver.cd/pipelines/1773/events
Information Classification: General
16
Build Analysis
● SonarQube integration for build analysis
● Microservice architecture enables additional build analysis tools
https://cd.screwdriver.cd/pipelines/777/builds/73879
Information Classification: General
17
Templates & Commands
● Shared best practices.
● Abstracts build container and build steps.
● Opens up Screwdriver platform to subject matter experts
● Screwdriver at Verizon Media supports - Node.js, Golang, Android, iOS,
Python, Docker, Java, and more
https://cd.screwdriver.cd/templates
https://cd.screwdriver.cd/commands
Information Classification: General
18
Build Metrics
● Detailed insights into your build pipeline
● Powerful UI
https://cd.screwdriver.cd/pipelines/1/metrics
Information Classification: General
19
Links
● Homepage - https://screwdriver.cd
● User Guide - https://docs.screwdriver.cd
● Example cluster - https://cd.screwdriver.cd
● Contributing - https://docs.screwdriver.cd/about/contributing/index
● Slack - https://screwdriver-cd.slack.com
● Blog - https://blog.screwdriver.cd/
Information Classification: General
20
Questions?
Information Classification: General
Contact
Jithin EmmanuelSenior Engineering Manager
Platforms & Technology, Sunnyvale
https://www.linkedin.com/in/jithine