SlideShare a Scribd company logo
CI doesn’t start with Jenkins
DevOps Stage - 2018: October 12-13
Bio
•CatOps Engineer @ Preply Inc
•Twitter: @grem11n
•Telegram: @grem1in
• CatOps
• Kyiv HashiCorp User Group
Agenda
Pain
CICD evolution @ Preply
External dependencies for CI
Tools
Cats
Let’s start with Jenkins, tho
CI doesn’t start with Jenkins
In the very beginning
In the very beginning
In the very beginning
Separate teams
In the very beginning
Separate teams Monolith
Welcome, Jenkins!
Dependencies
• A tool
Skullcandy flow (code)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
1. Create a pull request
to the master
Skullcandy flow (code)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
1. Create a pull request
to the master
2. Label it once ready
Skullcandy flow (code)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
1. Create a pull request
to the master
2. Label it once ready
3. Gather all “ready
PRs” into ephemeral
branch
Skullcandy flow (code)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
1. Create a pull request
to the master
2. Label it once ready
3. Gather all “ready
PRs” into ephemeral
branch
4. Test it!
Skullcandy flow (code)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
1. Create a pull request
to the master
2. Label it once ready
3. Gather all “ready
PRs” into ephemeral
branch
4. Test it!
5. Merge QA branch to
the master
Skullcandy flow (artifact)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
1. QA artifact is created
from the ephemeral
QA branch
Skullcandy flow (artifact)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
1. QA artifact is created
from the ephemeral
QA branch
2. Production artifact is
created after QA
branch is merged to
master
Skullcandy flow (pros)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
• We can live with the
monolith
Skullcandy flow (pros)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
• We can live with the
monolith
• Release candidates
every day
Skullcandy flow (pros)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
• We can live with the
monolith
• Release candidates
every day
• Works pretty well with
GitHub
Skullcandy flow (pros)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
• We can live with the
monolith
• Release candidates
every day
• Works pretty well with
GitHub
• Clear priorities
Skullcandy flow (cons)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
• PRs could have
conflicts with each
other
Skullcandy flow (cons)
https://www.endpoint.com/blog/2014/05/02/git-workflows-that-work
• PRs could have
conflicts with each
other
• You need to wait QA
before resolve the
conflicts
Dependencies
• A tool
• Development flow
Feel the pain [1]
• Unknown status of PR
Feel the pain [1]
• Unknown status of PR
• Lack of notifications
Feel the pain [1]
• Unknown status of PR
• Lack of notifications
• No CD
Feel the pain [1]
• Unknown status of PR
• Lack of notifications
• No CD
• A lot of manual work
Feel the pain [1]
• Unknown status of PR
• Lack of notifications
• No CD
• A lot of manual work
• Unknown time for QA
Feel the pain [1]
• Unknown status of PR
• Lack of notifications
• No CD
• A lot of manual work
• Unknown time for QA
• Unstable tests
Dependencies
• A tool
• Development flow
• Alignment
Dependencies
• A tool
• Development flow
• Alignment
• Sane tests
Skullcandy 2.0
• GitHub API
Skullcandy 2.0
• GitHub API
• Merge constraints
Skullcandy 2.0
• GitHub API
• Merge constraints
• Code ownership
Skullcandy 2.0
• GitHub API
• Merge constraints
• Code ownership
• Codestyle
Skullcandy 2.0
• GitHub API
• Merge constraints
• Code ownership
• Codestyle
• Sane tests
Skullcandy 2.0
• GitHub API
• Merge constraints
• Code ownership
• Codestyle
• Sane tests
• UI tests
Skullcandy 2.0
• GitHub API
• Merge constraints
• Code ownership
• Codestyle
• Sane tests
• UI tests
• QA session limits
Skullcandy 2.0
• GitHub API
• Merge constraints
• Code ownership
• Codestyle
• Sane tests
• UI tests
• QA session limits
• More notifications
Dependencies
• A tool
• Development flow
• Alignment
• Sane tests
• UI tests
Dependencies
• A tool
• Development flow
• Alignment
• Sane tests
• UI tests
• Discipline
So, are we done?
Feel the pain [2]
• Conflicts between PRs
Feel the pain [2]
• Conflicts between PRs
• Need to wait for QA
Feel the pain [2]
• Conflicts between PRs
• Need to wait for QA
• You cannot merge
directly
Feel the pain [2]
• Conflicts between PRs
• Need to wait for QA
• You cannot merge
directly
• Hotfixes are harmful
Gitflow?
https://nvie.com/posts/a-successful-git-branching-model/
• Everybody likes Gitflow
• Easy to automate
• Clear enough
Gitflow
https://nvie.com/posts/a-successful-git-branching-model/
• Everybody likes Gitflow
• Easy to automate
• Clear enough
• Broken development
branch is a company-
wide problem
Trunk-based development!
https://www.toptal.com/software/trunk-based-development-git-flow
• Only one mainline
• Clear releases (tags)
• Everyone is independent
• Hotfixes are the same entities
Trunk-based development
https://www.toptal.com/software/trunk-based-development-git-flow
1. Feature branch is created
and tested separately
Trunk-based development
https://www.toptal.com/software/trunk-based-development-git-flow
1. Feature branch is created
and tested separately
2. Feature is merged directly
into the master when it’s
ready
Trunk-based development
https://www.toptal.com/software/trunk-based-development-git-flow
1. Feature branch is created
and tested separately
2. Feature is merged directly
into the master when it’s
ready
3. New tag is created from the
master branch, which goes
to production
Trunk-based development
https://www.toptal.com/software/trunk-based-development-git-flow
1. Each feature is a separate
artifact for QA
Trunk-based development
https://www.toptal.com/software/trunk-based-development-git-flow
1. Each feature is a separate
artifact for QA
2. Production artifact is created
from tag
Wait, but …
• What if trunk is broken?
Wait, but …
• What if trunk is broken?
• Test better!
Wait, but …
• What if trunk is broken?
• Test better!
• Where can I test?!
Wait, but …
• What if trunk is broken?
• Test better!
• Where can I test?!
• …
Welcome, Kubernetes!
Welcome, Kubernetes!
You cannot just put Kubernetes to fix everything!11
Me:
Dynamic env for each PR
• Kubernetes
• Helm
• Jenkins
DB for each environment!
Django Anonymizer:
• Preply & OpenSource
• Utilizes Django ORM
• Safe data for development
Dependencies
• A tool
• Development flow
• Alignment
• Sane tests
• Discipline
• UI testes
• Infrastructure
Deal with it!
Let’s add some services!
• Monorepo or not?
• Repeatable CI
• Env for the whole thing
And we also have Lambdas
• CI for Lambdas
• LocalStack
• Docker
And we also have Lambdas
• CI for Lambdas
• LocalStack
• Docker
• CD for Lambdas
• Serverless framework
• Terraform
Dependencies
• A tool
• Development flow
• Alignment
• Sane tests
• Discipline
• UI testes
• Infrastructure
• Architectural planning
Dependencies
• A tool (tech, ops)
• Development flow (tech, mgmt)
• Alignment (cult, mgmt)
• Sane tests (tech, dev)
• Discipline (cult, all)
• UI testes (tech, qa)
• Infrastructure (tech, ops)
• Architectural planning (tech, all)
A Toolset
A Toolset
Jenkins:
• Multibranch project
• Declarative pipeline
• Shared libraries
A Toolset
Jenkins:
• Multibranch project
• Declarative pipeline
• Shared libraries
Shared libraries are
pretty much Groovy :(
A Toolset
Dynamic Env:
• Kubernetes on Spot
• Helm
A Toolset
Dynamic Env:
• Kubernetes on Spot
• Helm
• Chart for entire environment 

is complex
• Helm 2 vs Helm 3
Where are we going to?
Where are we going to?
• Stable CICD flow for existing monolith
• Survive in the Microservices world
• Figure out deploy to k8s 

(to Helm or not to Helm)
• Canary (Blue/Green) deployments
• Perhaps try JenkinsX
• Do something with CICD for Lambdas
Thank you!
yrochnyak@gmail.com

TG: @grem1in && @catops
Questions?

More Related Content

ODP
Repositories as Code
PDF
從限制理論看 DevOps
ODP
Deploying your SaaS stack OnPrem
PDF
True Git
PPTX
Test Driven Development on Android (Kotlin Kenya)
PDF
Сontinuous Integration - step to continuous deployment
PDF
淺談 Startup 公司的軟體開發流程 v2
PDF
Enabling Microservices @Orbitz - DevOpsDays Chicago 2015
Repositories as Code
從限制理論看 DevOps
Deploying your SaaS stack OnPrem
True Git
Test Driven Development on Android (Kotlin Kenya)
Сontinuous Integration - step to continuous deployment
淺談 Startup 公司的軟體開發流程 v2
Enabling Microservices @Orbitz - DevOpsDays Chicago 2015

What's hot (20)

PDF
COSCUP 開源工作坊:Git workflows
PDF
GitOps , done Right
PDF
Collaborating on GitHub for Open Source Documentation
PDF
End-to-end performance testing, profiling, and analysis at Redis
PDF
7 tools for your devops stack
PDF
Managing releases effectively through git
PDF
Delivery Free of Charge
PPTX
Collaborating on GitHub for Open Source Documentation
PPTX
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
PDF
Making the switch to DVCS
PDF
Run stuff, Deploy Stuff, Jax London 2017 Edition
PDF
Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
PDF
Help , My Datacenter is on fire
PDF
Trying Out Tomorrow’s WordPress Today
PDF
TDD for jenkins pipelines
KEY
Avoiding integration hell
PDF
Git sourcecontrolpreso
PPTX
Hands on Gradle
ZIP
Introduction to Git
PDF
I Love APIs 2015: Getting **IT Done Workshop
COSCUP 開源工作坊:Git workflows
GitOps , done Right
Collaborating on GitHub for Open Source Documentation
End-to-end performance testing, profiling, and analysis at Redis
7 tools for your devops stack
Managing releases effectively through git
Delivery Free of Charge
Collaborating on GitHub for Open Source Documentation
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Making the switch to DVCS
Run stuff, Deploy Stuff, Jax London 2017 Edition
Scrum Gathering Portugal 2016 - Containerizing Tests with Docker
Help , My Datacenter is on fire
Trying Out Tomorrow’s WordPress Today
TDD for jenkins pipelines
Avoiding integration hell
Git sourcecontrolpreso
Hands on Gradle
Introduction to Git
I Love APIs 2015: Getting **IT Done Workshop
Ad

Similar to CI doesn’t start with Jenkins (20)

PDF
Application Deployment at UC Riverside
PPTX
State of angular ecosystem
PPTX
Testing API's: Tools & Tips & Tricks (Oh My!)
PPTX
Build software like a bag of marbles, not a castle of LEGO®
PDF
Hacking on WildFly 9
PDF
Continuous Infrastructure First
KEY
Development tools
PPTX
Lean-Agile Development with SharePoint - Bill Ayers
PPTX
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
PPTX
'Intro to Infrastructure as Code' - DevOps Belfast
PDF
10 Deployments a day - A brief on extreme release protocols
KEY
Make It Cooler: Using Decentralized Version Control
PDF
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
PDF
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
PPTX
PuppetConf 2016: How Not to Freak Out When You Start Writing Puppet Modules f...
PPTX
Short Introduction of software engineering for bioinformatics
PDF
Continuous Integration @ Haptik
PPTX
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
PDF
Steamlining your puppet development workflow
PDF
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Application Deployment at UC Riverside
State of angular ecosystem
Testing API's: Tools & Tips & Tricks (Oh My!)
Build software like a bag of marbles, not a castle of LEGO®
Hacking on WildFly 9
Continuous Infrastructure First
Development tools
Lean-Agile Development with SharePoint - Bill Ayers
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
'Intro to Infrastructure as Code' - DevOps Belfast
10 Deployments a day - A brief on extreme release protocols
Make It Cooler: Using Decentralized Version Control
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
PuppetConf 2016: How Not to Freak Out When You Start Writing Puppet Modules f...
Short Introduction of software engineering for bioinformatics
Continuous Integration @ Haptik
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
Steamlining your puppet development workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Ad

Recently uploaded (20)

PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
ai tools demonstartion for schools and inter college
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
System and Network Administration Chapter 2
PPTX
L1 - Introduction to python Backend.pptx
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPT
Introduction Database Management System for Course Database
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
medical staffing services at VALiNTRY
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PPTX
Introduction to Artificial Intelligence
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Softaken Excel to vCard Converter Software.pdf
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
ai tools demonstartion for schools and inter college
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Wondershare Filmora 15 Crack With Activation Key [2025
System and Network Administration Chapter 2
L1 - Introduction to python Backend.pptx
How to Choose the Right IT Partner for Your Business in Malaysia
Introduction Database Management System for Course Database
Which alternative to Crystal Reports is best for small or large businesses.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Design an Analysis of Algorithms II-SECS-1021-03
Adobe Illustrator 28.6 Crack My Vision of Vector Design
medical staffing services at VALiNTRY
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
VVF-Customer-Presentation2025-Ver1.9.pptx
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Introduction to Artificial Intelligence
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Softaken Excel to vCard Converter Software.pdf

CI doesn’t start with Jenkins