39
A Tale of Two Containers How Docker made CI Great Again

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

Embed Size (px)

Citation preview

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

A Tale of Two Containers

How Docker made CI Great Again

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

About us

Kyle [email protected]/krames

Brendan [email protected]/bfosberry

2

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

Agenda

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

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

History of Codeship Platform

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

Checkbot

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

Checkbot

39K Builds Per Day7.8M Builds Per Year

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

Jet

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

Jet

1.5K Builds Per Day115K Builds total

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

Checkbot

Powered by LXC

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

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

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

How we use LXC

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

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

Screenshot of test commands and setup

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

Checkbot (LXC)

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

How we use LXC

• Build server scaling group• Assign user to build server

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

Issues for Developers

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

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

Issues for Codeship

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

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

It works!

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

Jet

Powered by Docker

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

Benefits of Docker

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

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

How we use docker

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

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

How users run builds

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

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

How users run builds

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

How users run builds

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

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

How users run builds

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

How users run buids

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

How users run builds

Parity through Docker

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

Maintain Parity

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

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

Issues for Developers

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

• More isolation <-> Less visibility

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

Issues for Codeship

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

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

Demo

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

The future of CI/CD

Powered by Codeship

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

Containers

● Isolation● Portability● Resource control

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

Docker

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

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

Docker

● Control○ Automation○ Configurability

● Parity● Lowest common denominator

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

CI/CD

● Configuration● Execution● Notification

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

CI/CD

● Native● Personal● Instantly available● Intelligent

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

Q&A