A Tail of Two Containers: How docker made ci great again

Preview:

Citation preview

A Tale of Two Containers

How Docker made CI Great Again

About us

Kyle Rames@kramesgithub.com/krames

Brendan Fosberry@brendanfosberrygithub.com/bfosberry

2

Agenda

● History of Codeship Platform● Checkbot (LXC)● Jet (Docker)● Future of CI/CD

History of Codeship Platform

Checkbot

Checkbot

39K Builds Per Day7.8M Builds Per Year

Jet

Jet

1.5K Builds Per Day115K Builds total

Checkbot

Powered by LXC

Benefits of LXC

• Impose resource limits• Containers are isolated• Separation of build environment and Codeship

infrastructure• Customer code is secure• Consistent build environment and experience• Automatable

How we use LXC

• Universal build image• Pre-installed languages, services, libraries

Screenshot of test commands and setup

Checkbot (LXC)

How we use LXC

• Build server scaling group• Assign user to build server

Issues for Developers

• Shared system requirements for every user.• Maintaining parity with development & production

Issues for Codeship

• Many parallel services leave a large footprint• Lack of tooling around LXC

It works!

Jet

Powered by Docker

Benefits of Docker

• Standardization• Strong tooling and automation support• Parity between dev, test, and prod• BYO Container and OS• Empowered Users

How we use docker

• Provision Docker resources• Repo-controlled build - zero config• Layer on Codeship features• Docker-centric support and integrations

How users run builds

• Describe services• Write custom images where needed• Committed to SCM

How users run builds

How users run builds

• Define pipeline• References service• Tests, compilation, deployments, notifications• Control parallelism• Control flow• Committed to SCM

How users run builds

How users run buids

How users run builds

Parity through Docker

Maintain Parity

● Credential & Dockercfg support● Share Image build cache● Tooling● Development environments

Issues for Developers

• High Barrier to entry• Requires Docker understanding• Requires careful configuration

• More isolation <-> Less visibility

Issues for Codeship

• Heavily tied to Docker• Upstream changes break our features• Docker bugs are our bugs

Demo

The future of CI/CD

Powered by Codeship

Containers

● Isolation● Portability● Resource control

Docker

● Phase 1: Docker● Phase 2: ???● Phase 3: Profit

Docker

● Control○ Automation○ Configurability

● Parity● Lowest common denominator

CI/CD

● Configuration● Execution● Notification

CI/CD

● Native● Personal● Instantly available● Intelligent

Q&A