Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins Camilo Ribeiro Klarna AB



Documentos relacionados
Orquestrando Docker Containers

ARQUITETANDO E EVOLUINDO. um erp para a nuvem

Software Público Brasileiro: Manual de Operação (dev)

Hospedagem Rails Heroku

Software Público Brasileiro: Manual de Operação (prod)

Continuous Delivery. E seus princípios e práticas. Carlos Felippe Cardoso (CFC) slideshare.

Oportunidades 30/05/2014

DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% de uptime

Qualidade com Agilidade

Internet of Things com. Vitor Leal -

35% GARTNER. Despesas com tecnologia ocorrem fora da T.I. Fazem uso de tecnologias não aprovadas pela T.I.

Docker do básico à orquestração de containers. Meetup de Laravel em São Paulo #3

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS APLICATIVOS HÍBRIDOS. Prof. Angelo Augusto Frozza, M.Sc.

ClasseV. Quadro branco

Conhecendo o Visual FoxPro 8.0 Parte 1

Marcos Cardoso Engenheiro de Vendas Bruno Cesar Engenheiro de Sistemas

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS - APLICATIVOS HÍBRIDOS. Prof. Angelo Augusto Frozza, M.Sc.

Customização ao Extremo

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

Integração Contínua com containers Docker. Fabricio

Windows Vista - Novas Técnicas e Características de Gerenciamento para IT Pros. Fabio Hara MVP Windows Server

Test Driven Infrastructure na Globo.com. globo. .com. Fernando Carolo e Rogério Schneider QCon São Paulo 2014

O PNEU QUE VOCÊ PODE CONFIAR.

BANCO DE DADOS II. AULA MySQL.

Desenvolvimento de Aplicativos com ASR para Android

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

1º passo: Instalando a rvm.

Tutorial para criação de blog

Sistema de Digitalização e Gerenciamento de Arquivos On-Line

Gerencie o seu ambiente de produção utilizando o. conheça o OpenEdge Explorer. Petrucio José Faé de Catro

PROCEDIMENTO OPERACIONAL PADRÃO. Serviço Administração do CA

Infraestrutura == código. Projetando servidores Debian com Chef e Vagrant. Antonio Terceiro

Git e contribuição para projetos Open Source. Bruno Orlandi

administração de servidores Jenkins

Integração Contínua com Jenkins

Monday, August 6, 12

Padrões de configuração GIT

Introdução ao TDD. Dionatan Moura. #guma10anos Abril de about.me/dionatanmoura

Fórum Social Mundial Memória FSM memoriafsm.org

Instalando o plugin CDT 4.0

Instalação do VOL Backup para Sistemas Unix-Like

Como criar seus links?

SELENIUM 28/03/2011. Márcio Delamaro Harry Trinta

Agora OS: Manual Interface Milenial Multimedia

Webcast Marketing Arcserve. Ana Paula Campelo Marketing Analyst

Progress Exchange 2007

Diego Software Architect Agile Coach. Cesar Middleware Architect

1

Xerox Remote Services

Introdução ao Maven. Leonardo Gresta Paulino Murta

DevOps com Exemplos Práticos

Desenvolvimento Flex com Maven

Oportunidades 05/05/2015

Parallels Plesk Panel 11 Tour prático do Produto para Proprietários de Website

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS

Alexandre Malveira, Wolflan Camilo

Controle de Versão com GIT

OptiView. Total integração Total controle Total Network SuperVision. Solução de Análise de Rede. Ninguém melhor que os. Engenheiros de Rede e a Fluke

Marlos de Moraes Tavares. Tutorial Rsync

Caso Prático: Java como ferramenta de suporte a um ambiente realmente colaborativo no método Scrum de trabalho

SEAD 2006 Integração Contínua...usando software livre CHRISTIANO MILFONT - cmilfont@gmail.c om 20/10/2006

Configurar Novell Small Business Suite

Fala, CMO! Com Thiago Reis da Project Builder

Go para programação paralela

INTRODUÇÃO AO DESENVOLVIMENTO DE JOGOS COM LIBGDX. Vinícius Barreto de Sousa Neto

Este tutorial está publicado originalmente em

SEO O que é? Por que investir em SEO? O que é Orago? Como ele vai me ajudar?

Minicurso de CKAN. Augusto Herrmann. Time de dados abertos - Ministério do Planejamento

WinGate - Passo a passo

Av. Paulista, 171 1º andar SP Fone: (11) ou (11) Próximo à estação Brigadeiro, metrô linha verde.

Manual de operação THM6000R Portal de internet RedLINK

Sua comunidade no celular!

Tema 3 Ferramentas e Funcionalidades do Moodle

A coerência dos normativos com as reais necessidades do desporto português. Albino Maria

Sua empresa on-line, 24hs por dia, para usuários em qualquer parte do mundo? SOMENTE UM SITE PERMITE ISSO!

Retorno de Investimento em tempos turbulentos: Agilidade e Capacidade de Mudanças Organizacionais. Copyright 2016 Prosci Inc. All rights reserved.

ORGANIZAÇÃO PARA SEGURANÇA E COOPERAÇÃO NA EUROPA - OSCE

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br

CAPA Área de utilização para ilustração MANUAL w-vpn

Depois que instalamos o Squid vamos renomear o arquivo de configuração para criarmos um do zero.

2º Encontro de Contabilidade e Auditoria para Companhias Abertas e Sociedades de Grande Porte

Antivírus. Trabalho elaborado por. Ana Ferreira. Patricia Ferreira

Prof. Romulo Fagundes Cantanhede. Node.JS. O poder do JavaScript do lado do Servidor

J. M. Silveira Neto. Sun Campus Ambassador.

Segurança Web com PHP 5 Douglas V. Pasqua Zend Certified Enginner

INTRODUÇÃO À MÍDIA PROGRAMÁTICA

COM A INTERVIP VOCÊ VAI MAIS LONGE. INTERCÂMBIOS E CURSOS NO EXTERIOR.

Gonçalves, Adriel - Porto Alegre, RS Brazil. Guia de Configuração TACACS+ no NR2G-3200.

QuarkXPress 8,01 ReadMe

Trilha Agile TDD e 20 coisas que você precisa saber

Quadro 1 Número de empresas de seguros a operar em Portugal Vida Não Vida Mistas Total. Empresas de seguros de direito português

Secure Client. Manual do Usuário. Versão 6.2. Procedimento para Instalação e configuração do Secure Client 6.1. Secure Client versão 6.

Implementação de Web Services em Projetos de LabVIEW

SEO. Search Engine Optimization

Índice APRESENTAÇÃO... 1 CADASTRO DOS CONTADORES... 3 REGISTRAR COMO SAGE ID... 5 CRIAR CONVITE PARA O CLIENTE... 8

Introdução a Go para programação paralela

MC1 - Desenvolvendo sua primeira aplicação web na Nuvem com o Software Livre Openshift. Prof. Me. Stenio Longo (UESB/IFBA) Pedro Maioli (UESB)

Eclipse IDE for Java EE Developers 4.3 Kepler

Transcrição:

Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins Camilo Ribeiro Klarna AB

Camilo Ribeiro Software Test Engineer at Klarna ex-senior QA Consultant at Thoughtworks Blogger on www.bugbang.com.br @camiloribeiro

HQ em Estocolmo/Suécia Maior empresa de pagamento online da europa, atuando na Suécia, Alemanha, Noruega, Dinamarca, Austria, Reino Unido, Estados Unidos e vários outros países. Foco em entregas rápidas, confiáveis e automação para testes, deploys e configuração www.klarna.com

https://github.com/camiloribeiro/cdeasy

https://github.com/camiloribeiro/cdeasy

https://dribbble.com/shots/1753131-mvp

Continuous Delivery Entrega Continua é uma disciplina de desenvolvimento de software aonde você desenvolve software de uma maneira que ele possa ser entregue em produção a qualquer momento. Martin Fowler

Continuous Delivery Entrega Continua é uma disciplina de desenvolvimento de software aonde você desenvolve software de uma maneira que ele possa ser entregue em produção a qualquer momento. Martin Fowler

docker pull gradle docker run gradle clean build runinparallel

docker pull ruby docker run ruby bundle install && rake test

docker pull node docker run node npm install && node app.js

Poder de cloud no seu local

docker-compose nginx: build: docker/nginx ports: - "8080:8080" tty: true links: - server server: build: docker/server links: - database volumes: -./src:/tmp command: /tmp/setup-jenkins.sh database: build: docker/mongo ports: - "27017:27017" - "27018:27018 - "27019:27019 - "28017:28017" tty: true

Jenkins Job DSL

job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") triggers { scm 'H/5 * * * *' steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runinparallel' publishers { publishhtml { report('build/reports/cucumber') { reportname('cucumber Report') reportfiles('feature-overview.html') keepall() allowmissing() alwayslinktolastbuild()

job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") triggers { scm 'H/5 * * * *' steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runinparallel' publishers { publishhtml { report('build/reports/cucumber') { reportname('cucumber Report') reportfiles('feature-overview.html') keepall() allowmissing() alwayslinktolastbuild()

job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") triggers { scm 'H/5 * * * *' steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runinparallel' publishers { publishhtml { report('build/reports/cucumber') { reportname('cucumber Report') reportfiles('feature-overview.html') keepall() allowmissing() alwayslinktolastbuild()

job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") triggers { scm 'H/5 * * * *' steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runinparallel' publishers { publishhtml { report('build/reports/cucumber') { reportname('cucumber Report') reportfiles('feature-overview.html') keepall() allowmissing() alwayslinktolastbuild()

job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") triggers { scm 'H/5 * * * *' steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runinparallel' publishers { publishhtml { report('build/reports/cucumber') { reportname('cucumber Report') reportfiles('feature-overview.html') keepall() allowmissing() alwayslinktolastbuild()

job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") triggers { scm 'H/5 * * * *' steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runinparallel' publishers { publishhtml { report('build/reports/cucumber') { reportname('cucumber Report') reportfiles('feature-overview.html') keepall() allowmissing() alwayslinktolastbuild()

configure { project -> project / publishers << 'join.jointrigger' { 'joinprojects'{ 'joinpublishers' { 'hudson.plugins.parameterizedtrigger.buildtrigger' { 'configs' { 'hudson.plugins.parameterizedtrigger.buildtriggerconfig' { 'configs' { 'hudson.plugins.parameterizedtrigger.currentbuildparameters' { projects('promote_rpm_to_stage') condition('success') triggerwithnoparameters('true') evenifdownstreamunstable('false')

https://github.com/jenkinsci/job-dsl-plugin/wiki/job-reference

Demo

camilo@camiloribeiro.com