Top Banner
Integração Contínua com containers Docker Fabricio Leotti f [email protected] @ lonefreak
58

Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Nov 09, 2018

Download

Documents

dodiep
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Integração Contínua com containers Docker

Fabricio Leotti

[email protected]

@lonefreak

Page 2: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Agenda

StacksContinuous Integration

DockerDockerize Continuous Integration

Docker + Jenkins

Page 3: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Devtools

Page 4: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 5: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 6: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 7: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 8: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 9: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 10: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 11: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 12: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 13: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Stacks

Page 14: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration is a software development practice

where members of a team integrate their work

frequently, usually eachperson integrates at leastdaily - leading to multiple integrations per day. Each

integration is verified by an automated build (including

test) to detect integration errors as quickly as possible.

-- Martin Fowler

Continuous Integration

Page 15: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Maintain a code repository

Automate the build

Make the build self-testing

Everyone commits to the baseline every day

Every commit (to baseline) should be built

Test in a clone of the production environment

Make it easy to get the latest deliverables

Everyone can see the results of the latest build

Keep the build fast

Automate deployment

Continuous Integration

Page 16: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Maintain a code repository

Automate the build

Make the build self-testing

Everyone commits to the baseline every day

Every commit (to baseline) should be built

Test in a clone of the production environment

Make it easy to get the latest deliverables

Everyone can see the results of the latest build

Keep the build fast

Automate deployment

Continuous Integration

Page 17: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Maintain a code repository

Automate the build

Make the build self-testing

Everyone commits to the baseline every day

Every commit (to baseline) should be built

Test in a clone of the production environment

Make it easy to get the latest deliverables

Everyone can see the results of the latest build

Keep the build fast

Automate deployment

Continuous Integration

Page 18: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Maintain a code repository

Automate the build

Make the build self-testing

Everyone commits to the baseline every day

Every commit (to baseline) should be built

Test in a clone of the production environment

Make it easy to get the latest deliverables

Everyone can see the results of the latest build

Keep the build fast

Automate deployment

Continuous Integration

Page 19: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Maintain a code repository

Automate the build

Make the build self-testing

Everyone commits to the baseline every day

Every commit (to baseline) should be built

Test in a clone of the production environment

Make it easy to get the latest deliverables

Everyone can see the results of the latest build

Keep the build fast

Automate deployment

Continuous Integration

Page 20: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Maintain a code repository

Automate the build

Make the build self-testing

Everyone commits to the baseline every day

Every commit (to baseline) should be built

Test in a clone of the production environment

Make it easy to get the latest deliverables

Everyone can see the results of the latest build

Keep the build fast

Automate deployment

Continuous Integration

Page 21: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Maintain a code repository

Automate the build

Make the build self-testing

Everyone commits to the baseline every day

Every commit (to baseline) should be built

Test in a clone of the production environment

Make it easy to get the latest deliverables

Everyone can see the results of the latest build

Keep the build fast

Automate deployment

Continuous Integration

Page 22: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration

Page 23: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration

Page 24: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration

Page 25: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration

Page 26: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration

Page 27: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration

Page 28: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration

Page 29: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Continuous Integration

Page 30: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...
Page 31: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker

Page 32: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker

Page 33: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker

Page 34: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

PRODUCTION

READY??

Docker

Page 35: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker

Page 36: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker

Page 37: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker

Page 38: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 39: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 40: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 41: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 42: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 43: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 44: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 45: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 46: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Dockerize Continuous Integration

Page 47: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...
Page 48: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...
Page 49: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker + Jenkins = Amor

empacotamento de aplicações

FPMhttps://github.com/jordansissel/fpm

build.sh

$FPM_OPTS

Page 50: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker + Jenkins = Amor

empacotamento de aplicações

Especialmente útil para linguagensque sem facilidades para empacotar

Desacoplamento entre a aplicação e o ambiente

Script de empacotamento no controlede versão

Sem conflito entre dependências

Container precisa de acesso aoworkspace

Nem sempre é a melhor solução

Cuidado com a arquitetura em queocorre o empacotamento

Page 51: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker + Jenkins = Amor

teste e análise uniformes

Page 52: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker + Jenkins = Amor

teste e análise uniformes

Ideal para ambientes de CI com mutasnecessidades diferentes

Liberdade na escolha da sua pilha de testes

Ambiente de integração contínuaorganizado

Fácil reprodução e manutenção do ambiente de testes

Código de execução dos testes no controle de versão

Container precisa de acesso aoworkspace

CI Server precisa ter permissão pramanipular artefatos

É uma “caixa preta” se os devs nãoconhecerem Docker

Manutenção do Docker host

Page 53: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker + Jenkins = Amor

Jenkins slaves com containers

Page 54: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker + Jenkins = Amor

Jenkins slaves com containers

Funciona bem para casos onde não háambiente sob demanda

Mais rápido do que usar VMs

Escala facilmente com muito jobs

Permite usar containers como artefatosde build

Documentação escassa

Cada job necessita de uma imagemcadastrada

Volumes para os caches de dependências

Container precisa de acesso aoworkspace

CI Server/Container precisa terpermissão pra manipular artefatos

Page 55: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

Docker + Jenkins = Amor

testes de integração

Page 56: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

integração contínua de cookbooks

Docker + Jenkins = Amor

driver_plugin: dockerdriver_config:

socket: tcp://docke.host:5000dockerfile: test/Dockerfile

http://kitchen.ci/

Page 57: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...
Page 58: Integração Contínua com containers Docker · Integração Contínua com containers Docker ... Liberdade na escolha da sua pilha de ... 4/7/2015 4:12:12 PM ...

[email protected] @lonefreak