SlideShare a Scribd company logo
Docker-based Pipelines
with Codefresh
KOSTIS KAPELONIS
About Kostis Kapelonis
● Software engineer
● Technical writer
● Manning author
About Kostis Kapelonis
Agenda
1. Docker usage in Continuous Integration
2. Dockerizing build tools as pipeline steps
3. Upgrading build tools to new versions
4. Mixing multiple versions of the same tool in
the same pipeline
5. Creating new pipeline steps on the fly
● Demos for everything using Codefresh
https://github.com/containers101/docker-based-pipelines-webinar/
Theory: Docker-based Pipelines
“Docker-based” means 2 different things:
Using Docker as a
deployment package
(this is what most people think)
Using Docker for build Tooling
(this is not what most people think)
90% of cases: “We have migrated
to Docker in production”
The Basic Software Lifecycle
Before Docker – The Dark Ages
Docker-based Deployments - Better
Adding Docker-based Build Pipelines
Today’s Webinar
CI CD
Resources for Docker as Deployment artifact
Using Docker in Continuous Integration
● EVERY build tool is placed in a Docker
container
● The build node has only Docker installed
and nothing else
● A pipeline is a series of commands that run
inside a Docker context
● After each build the node reverts back to its
original state
Container per build step
● Codefresh requires ALL tools to be dockerized
● You can use any public or private Docker
image as tooling
● Each build step has a Docker image as context
● Pipelines are described in declarative YAML
About Codefresh
● Docker based CI/CD solution
● Each build step is a Docker image
● Native support for Docker, Helm,
Kubernetes deployments
● Includes built-in Docker registry and
Helm repository
● 20,000+ users
Demo 1:
Python/Node application
https://github.com/containers101/docker-based-pipelines-webinar/tree/master/01_simple_pipeline
Traditional VM based problems
Traditional CI Platform Questions:
● Do you support my favorite version of
Node/Java/Go/Ruby/Python?
● Do you support maven, yarn, gulp, sbt, gradle, rake?
● Can I run Ansible? Terraform? GCloud? AWS CLI?
● Can I run Kubectl? Helm? Draft?
Traditional CI/CD Platforms
Demo 2:
Adding Go and AWS CLI
https://github.com/containers101/docker-based-pipelines-webinar/tree/master/02_aws_cli
Does Codefresh Support…
● Node 10?
● Perl 6?
● Python2?
● Gradle?
● Vault?
● AWS cli?
● Sonar?
● Findbugs?
● Selenium?
● Snyk?
● Clair?
Does Codefresh Support…
● Node 10?
● Perl 6?
● Python2?
● Gradle?
● Vault?
● AWS cli?
● Sonar?
● Findbugs?
● Selenium?
● Snyk?
● Clair?
YES!
Because there is a Docker
image for it
Codefresh Pipelines are Future Proof
● You can use ANY existing Docker image from Dockerhub or
any other Registry
● Every time a new tool comes out, it can be used right away if
packaged in a Docker image
Tool Upgrades and Version
Clashes
Updating a Tool in a Traditional VM Pipeline
Traditional CI Solutions
Demo:
Updating Python to 3.7
https://github.com/containers101/docker-based-pipelines-webinar/tree/master/02_aws_cli
Using Tools from Different Versions
● Version clashes are a huge pain for both developers and operators
● Legacy projects need to still use old version
● Using different versions in the same pipeline is almost impossible
● Developers want to use latest version of tool, traditional CI/CD
platforms may not be able to keep up
Wasting Effort on “Version Managers”
Wasting Effort on “Version Managers”
● They allow developers to switch between different versions
● Tied to a specific technology/programming language
● Require they own installation/ maintenance
● Must be upgraded for new versions
The Problem with Python
● Different python versions are a
notorious problem
● Until recently you needed
dedicated support from your CI
platform
● What happens if I want to test
Python 2.5?
Replacing “version managers”
with Docker
● Works for any language/framework
● Already installed on the build node
● Its own version is independent from
the tools
● Can use any public and private image
Codefresh “Python Support”
● We support EVERY container
ever made
● We support EVERY container
that you can make in the future
Demo 3:
Multiple Python/Node versions
https://github.com/containers101/docker-based-pipelines-webinar/tree/master/03_multiple_versions
Data Sharing Between
Pipeline Steps
Data Sharing
● Steps need to communicate
● Output of one step is input for the
next
● Artifacts (node modules, ruby gems,
maven caches) need to persist
● Test reports/Coverage statistics
Caches and Artifacts (Traditional CI solutions)
● “Cache” directive
● Need to be setup explicitly
● Different for each build tool
● “Artifact” directive
● Developers defines exact path of
what needs to be archived
● Used for the result of the whole build
or as shared data between steps
All Steps Share a Volume in Codefresh
Project is on the Volume
● Project is checked out in the volume
● Volume is also persisted between builds
● Any build tools that use the project folder for
artifacts will gain automatic caching
● For other tools you just need to point their
cache to /codefresh/volume
● There is no need for special “artifact settings”.
Just place files in /codefresh/volume
Demo 4 – Node Modules
https://github.com/containers101/docker-based-pipelines-webinar/tree/master/04_volume
Dynamic Docker Images
Docker Tooling on Demand – A Unique Feature
Creating Docker Images On-demand
● Create a Docker image as a step
● Use image in a later step
● Maximum flexibility for build context
● Image contents are not known in
advance
● Codefresh is the only platform at the
moment that offers this capability
Creating Docker Images On-demand
● No need for multiple Docker
images
● “Create and forget” build steps
● Useful for integration tests
● Keep your Docker registry small
and tidy
Demo 5:
Dynamic Docker Images
https://github.com/containers101/docker-based-pipelines-webinar/tree/master/05_dynamic
Codefresh Plugins
Plugins in Traditional CI/CD Platforms
● Specific to the platform (vendor lock-in)
● Tied to a specific language (e.g. Groovy)
● Developer needs to learn proprietary API
● Testing and installing them is difficult
Codefresh Plugins = Docker Images
Codefresh Plugins
● Not tied to any programming language
● Require only Docker knowledge
● Easy to test, easy to search, easy to store
● Several plugins for Codefresh already available
Case study: bintray
● JFrog bintray integration
● There is no official docker image
● A Codefresh plugin with wrap the CLI
● Plugin will be used to query Bintray
Demo 6:
Codefresh Plugins
https://github.com/containers101/docker-based-pipelines-webinar/tree/master/06_plugin
Plugin Directory
https://codefresh.io/codefresh-plugins/
Summary
● Docker-based pipelines use Docker
images as build steps
● Upgrading tools is easy
● Using multiple versions of the same tool is
trivial
● Can dynamically create build steps
● Codefresh plugins are Docker images
Get 120 FREE builds/month!
Signup & schedule a 1:1 at:
Codefresh.io
Build Fast,
Deploy Faster
Q ?
Codefresh.io/events
U E

More Related Content

What's hot (20)

PDF
Docker @ RelateIQ Presentation
John Fiedler
 
PPTX
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
NLJUG
 
PDF
4K–Kubernetes with Knative, Kafka and Kamel
Red Hat Developers
 
PPTX
2015 05-06-karsten gaebert-akademie-etrainings
Haufe-Lexware GmbH & Co KG
 
PDF
How to Become DevOps
Opsta
 
PDF
GitLab - Java User Group
PhilippWestphalen
 
PDF
PuppetConf 2016: Using Puppet with Kubernetes and OpenShift – Diane Mueller, ...
Puppet
 
PDF
OPENSHIFT CONTAINER PLATFORM CI/CD Build & Deploy
Natale Vinto
 
PDF
CI/CD Pipeline mit Gitlab CI und Kubernetes
inovex GmbH
 
PDF
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Red Hat Developers
 
PDF
Docker Best Practices Workshop
Ahmed AbouZaid
 
PDF
Updating Kubernetes With Helm Charts: Build, Test, Deploy with Codefresh and...
Codefresh
 
PDF
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
Docker, Inc.
 
PDF
Golang Microservices meetup
Girish Ramnani
 
PPTX
Supercharging CI/CD with GitLab and Rancher - June 2017 Online Meetup
Shannon Williams
 
PPTX
Cloud Native Okteto Cloud
sangam biradar
 
PPTX
DevOps Practices @Pipedrive
Renno Reinurm
 
PDF
Introduction to Kubernetes - Docker Global Mentor Week 2016
Opsta
 
PDF
Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...
sangam biradar
 
PDF
Kubernetes and the hybrid cloud with Skupper | DevNation tech talk
Red Hat Developers
 
Docker @ RelateIQ Presentation
John Fiedler
 
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
NLJUG
 
4K–Kubernetes with Knative, Kafka and Kamel
Red Hat Developers
 
2015 05-06-karsten gaebert-akademie-etrainings
Haufe-Lexware GmbH & Co KG
 
How to Become DevOps
Opsta
 
GitLab - Java User Group
PhilippWestphalen
 
PuppetConf 2016: Using Puppet with Kubernetes and OpenShift – Diane Mueller, ...
Puppet
 
OPENSHIFT CONTAINER PLATFORM CI/CD Build & Deploy
Natale Vinto
 
CI/CD Pipeline mit Gitlab CI und Kubernetes
inovex GmbH
 
Kubernetes configuration and security policies with KubeLinter | DevNation Te...
Red Hat Developers
 
Docker Best Practices Workshop
Ahmed AbouZaid
 
Updating Kubernetes With Helm Charts: Build, Test, Deploy with Codefresh and...
Codefresh
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
Docker, Inc.
 
Golang Microservices meetup
Girish Ramnani
 
Supercharging CI/CD with GitLab and Rancher - June 2017 Online Meetup
Shannon Williams
 
Cloud Native Okteto Cloud
sangam biradar
 
DevOps Practices @Pipedrive
Renno Reinurm
 
Introduction to Kubernetes - Docker Global Mentor Week 2016
Opsta
 
Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...
sangam biradar
 
Kubernetes and the hybrid cloud with Skupper | DevNation tech talk
Red Hat Developers
 

Similar to Docker based-Pipelines with Codefresh (20)

PDF
Docker based-pipelines
DevOps.com
 
PDF
VM vs Docker-Based Pipelines
Codefresh
 
PDF
Codefresh CICD New Features Launch! May 2019
Codefresh
 
PPTX
Docker driven development pipeline webinar (1)
Codefresh
 
PDF
New Features Webinar-April
Codefresh
 
PDF
Cloud-Native Builds & Deployments in Bitbucket Pipelines
Atlassian
 
PDF
5 steps to take setting up a streamlined container pipeline
Michel Schildmeijer
 
PPTX
Moby KubeCon 2017
Patrick Chanezon
 
PDF
ContainerDays Boston 2015: "Continuous Delivery with Containers" (Nick Gauthier)
DynamicInfraDays
 
PDF
Hybrid CI/CD with Kubernetes and Codefresh
DevOps.com
 
PDF
Docker Online Meetup #3: Docker in Production
Docker, Inc.
 
PDF
Hybrid CI/CD with Kubernetes & Codefresh
Codefresh
 
PPTX
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Lucas Jellema
 
PPTX
Java developer intro to environment management with vagrant puppet and docker
Getting value from IoT, Integration and Data Analytics
 
PPTX
AWS DevDay Vienna - Automating building blocks choices you will face with con...
Cobus Bernard
 
PPTX
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
Docker, Inc.
 
PPTX
Docker Meetup Paris: enterprise Docker
Arnaud MAZIN
 
PDF
Alibaba Cloud Conference 2016 - Docker Open Source
John Willis
 
PPTX
Consuming Cinder from Docker
Tesora
 
PPTX
AWS DevDay Cologne - Automating building blocks choices you will face with co...
Cobus Bernard
 
Docker based-pipelines
DevOps.com
 
VM vs Docker-Based Pipelines
Codefresh
 
Codefresh CICD New Features Launch! May 2019
Codefresh
 
Docker driven development pipeline webinar (1)
Codefresh
 
New Features Webinar-April
Codefresh
 
Cloud-Native Builds & Deployments in Bitbucket Pipelines
Atlassian
 
5 steps to take setting up a streamlined container pipeline
Michel Schildmeijer
 
Moby KubeCon 2017
Patrick Chanezon
 
ContainerDays Boston 2015: "Continuous Delivery with Containers" (Nick Gauthier)
DynamicInfraDays
 
Hybrid CI/CD with Kubernetes and Codefresh
DevOps.com
 
Docker Online Meetup #3: Docker in Production
Docker, Inc.
 
Hybrid CI/CD with Kubernetes & Codefresh
Codefresh
 
Java Developer Intro to Environment Management with Vagrant, Puppet, and Dock...
Lucas Jellema
 
Java developer intro to environment management with vagrant puppet and docker
Getting value from IoT, Integration and Data Analytics
 
AWS DevDay Vienna - Automating building blocks choices you will face with con...
Cobus Bernard
 
The Tale of a Docker-based Continuous Delivery Pipeline by Rafe Colton (ModCl...
Docker, Inc.
 
Docker Meetup Paris: enterprise Docker
Arnaud MAZIN
 
Alibaba Cloud Conference 2016 - Docker Open Source
John Willis
 
Consuming Cinder from Docker
Tesora
 
AWS DevDay Cologne - Automating building blocks choices you will face with co...
Cobus Bernard
 
Ad

More from Codefresh (20)

PDF
Detect, debug, deploy with Codefresh and Lightstep
Codefresh
 
PDF
CICD Pipelines for Microservices: Lessons from the Trenches
Codefresh
 
PDF
Simplify Your Code with Helmfile
Codefresh
 
PDF
Making the Most of Helm 3 with Codefresh
Codefresh
 
PDF
5 Simple Tips for Troubleshooting Your Kubernetes Pods
Codefresh
 
PDF
Best Practices for Microservice CI/CD: Lessons from Expedia and Codefresh
Codefresh
 
PDF
Why You Should be Using Multi-stage Docker Builds in 2019
Codefresh
 
PPTX
Deploy Secure Cloud-Native Apps Fast
Codefresh
 
PDF
CICD Pipelines for Microservices Best Practices
Codefresh
 
PDF
Terraform GitOps on Codefresh
Codefresh
 
PDF
Adding Container Image Scanning to Your Codefresh Pipelines with Anchore
Codefresh
 
PDF
Image scanning using Clair
Codefresh
 
PDF
Discovering and Fixing Dependency Vulnerabilities for Kubernetes apps with Sn...
Codefresh
 
PDF
Net Pipeline on Windows Kubernetes
Codefresh
 
PPTX
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Codefresh
 
PPTX
Istio + Helm + Canary Webinar
Codefresh
 
PDF
Continuous Delivery for Kubernetes Apps with Helm and ChartMuseum
Codefresh
 
PDF
Continuous Delivery of Stateful Applications with Kubernetes (in Production)
Codefresh
 
PPTX
DevOps with Azure, Kubernetes, and Helm Webinar
Codefresh
 
PDF
Introducing a Security Feedback Loop to your CI Pipelines
Codefresh
 
Detect, debug, deploy with Codefresh and Lightstep
Codefresh
 
CICD Pipelines for Microservices: Lessons from the Trenches
Codefresh
 
Simplify Your Code with Helmfile
Codefresh
 
Making the Most of Helm 3 with Codefresh
Codefresh
 
5 Simple Tips for Troubleshooting Your Kubernetes Pods
Codefresh
 
Best Practices for Microservice CI/CD: Lessons from Expedia and Codefresh
Codefresh
 
Why You Should be Using Multi-stage Docker Builds in 2019
Codefresh
 
Deploy Secure Cloud-Native Apps Fast
Codefresh
 
CICD Pipelines for Microservices Best Practices
Codefresh
 
Terraform GitOps on Codefresh
Codefresh
 
Adding Container Image Scanning to Your Codefresh Pipelines with Anchore
Codefresh
 
Image scanning using Clair
Codefresh
 
Discovering and Fixing Dependency Vulnerabilities for Kubernetes apps with Sn...
Codefresh
 
Net Pipeline on Windows Kubernetes
Codefresh
 
Skip Staging! Test Docker, Helm, and Kubernetes Apps like a Pro
Codefresh
 
Istio + Helm + Canary Webinar
Codefresh
 
Continuous Delivery for Kubernetes Apps with Helm and ChartMuseum
Codefresh
 
Continuous Delivery of Stateful Applications with Kubernetes (in Production)
Codefresh
 
DevOps with Azure, Kubernetes, and Helm Webinar
Codefresh
 
Introducing a Security Feedback Loop to your CI Pipelines
Codefresh
 
Ad

Recently uploaded (20)

PDF
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
 
PPSX
Usergroup - OutSystems Architecture.ppsx
Kurt Vandevelde
 
PPTX
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
PDF
Redefining Work in the Age of AI - What to expect? How to prepare? Why it mat...
Malinda Kapuruge
 
PDF
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
Edge AI and Vision Alliance
 
PDF
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
 
DOCX
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
PPTX
𝙳𝚘𝚠𝚗𝚕𝚘𝚊𝚍—Wondershare Filmora Crack 14.0.7 + Key Download 2025
sebastian aliya
 
PDF
From Chatbot to Destroyer of Endpoints - Can ChatGPT Automate EDR Bypasses (1...
Priyanka Aash
 
PDF
Database Benchmarking for Performance Masterclass: Session 1 - Benchmarking F...
ScyllaDB
 
PPTX
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
PPTX
Simplifica la seguridad en la nube y la detección de amenazas con FortiCNAPP
Cristian Garcia G.
 
PPTX
Paycifi - Programmable Trust_Breakfast_PPTXT
FinTech Belgium
 
PDF
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
PDF
Optimizing the trajectory of a wheel loader working in short loading cycles
Reno Filla
 
PDF
Darley - FIRST Copenhagen Lightning Talk (2025-06-26) Epochalypse 2038 - Time...
treyka
 
PDF
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
 
PPTX
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
PDF
Open Source Milvus Vector Database v 2.6
Zilliz
 
PDF
How to Visualize the ​Spatio-Temporal Data Using CesiumJS​
SANGHEE SHIN
 
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
 
Usergroup - OutSystems Architecture.ppsx
Kurt Vandevelde
 
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
Redefining Work in the Age of AI - What to expect? How to prepare? Why it mat...
Malinda Kapuruge
 
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
Edge AI and Vision Alliance
 
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
 
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
𝙳𝚘𝚠𝚗𝚕𝚘𝚊𝚍—Wondershare Filmora Crack 14.0.7 + Key Download 2025
sebastian aliya
 
From Chatbot to Destroyer of Endpoints - Can ChatGPT Automate EDR Bypasses (1...
Priyanka Aash
 
Database Benchmarking for Performance Masterclass: Session 1 - Benchmarking F...
ScyllaDB
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
Simplifica la seguridad en la nube y la detección de amenazas con FortiCNAPP
Cristian Garcia G.
 
Paycifi - Programmable Trust_Breakfast_PPTXT
FinTech Belgium
 
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
Optimizing the trajectory of a wheel loader working in short loading cycles
Reno Filla
 
Darley - FIRST Copenhagen Lightning Talk (2025-06-26) Epochalypse 2038 - Time...
treyka
 
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
 
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
Open Source Milvus Vector Database v 2.6
Zilliz
 
How to Visualize the ​Spatio-Temporal Data Using CesiumJS​
SANGHEE SHIN
 

Docker based-Pipelines with Codefresh