SlideShare uma empresa Scribd logo
1 de 11
Deploy de Aplicações Python
Marcos Cardoso
Grupy-SP
Marcos Cardoso
Bacharel em Ciência da
Computação - UFRJ
Desenvolvedor Pleno @ Globosat
Entusiasta de Backend, Mobile
facebook.com/vrcmarcos
github.com/vrcmarcos
linkedin.com/vrcmarcos
vrcmarcos@gmail.com
slideshare.net/vrcmarcos
Preparando o projeto para o deploy
1. O código deve estar versionado
2. O código deve possuir testes
3. Os testes não podem falhar
4. As dependências devem estar isoladas
O pipeline de deploy
1. Pegar o código do repositório (Github, Bitbucket, Gitlab, …)
2. Atualizar dependências
3. Rodar as possíveis migrates de banco
4. Executar os testes
5. Taggear o código
6. Acessar a máquina de produção e pegar a tag criada anteriormente
7. Atualizar dependências na máquina de produção
8. Rodar as possíveis migrates de banco em produção
Mas como? Continuous Integration!
Usaremos Jenkins para automatizar nossas tarefas
Hands on!
Preparação do ambiente
1. Fork do repositório de teste: https://github.com/vrcmarcos/python-jenkins
2. Em produção:
a. Dependências: python, git, pip, virtualenv e virtualenvwrapper
b. Criar as pastas /www/python e /www/venvs
3. Baixar o Jenkins (http://jenkins.io)
i. Instalar os plugins: Github plugin, promoted builds plugin, SSH Plugin, ShiningPanda Plugin
ii. Entrar em Manage Jenkins > Configure System:
1. Adicionar o servidor na área SSH remote hosts. Caso sua máquina utiliza OpenSSH >=
6.7, baixar o JAR https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.54 e trocar na
Criando o primeiro Job
1. Clicar em New Item no Jenkins
2. Configurações:
a. Source Code Management
i. Additional Behaviours: Shallow clone depth = 1, Do not fetch tags = true
b. Build
i. Virtualenv Builder
1. pip install -r requirements.txt
2. python manage.py migrate
3. python manage.py test
c. Post-build Actions
Promovendo o build
1. Nas configurações do Job:
a. General:
i. Promote builds when…
1. Promotion process: Name = PROD
2. Criteria: Promote immediatly once the build is complete
3. Actions: Execute shell script on remote host using ssh =
https://gist.github.com/vrcmarcos/2a16bf0ad7a701f0f7fc3040779cc6bb
Duvidas?
Obrigado!
facebook.com/vrcmarcos
github.com/vrcmarcos
linkedin.com/vrcmarcos
vrcmarcos@gmail.com
slideshare.net/vrcmarcos

Mais conteúdo relacionado

Mais procurados

Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvPedro Fernandes Vieira
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackAécio Pires
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para IniciantesLoiane Groner
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Hélio Medeiros
 
Hands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeHands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeRafael Pestano
 
Git that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBGit that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBHélio Medeiros
 
Desenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooDesenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooEder Magalhães
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsStefan Teixeira
 
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWDesvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWMorganna Giovanelli de Souza
 
TDC2016POA | Trilha Cloud Computing - Kubernetes para Desenvolvedores Docker
TDC2016POA | Trilha Cloud Computing - Kubernetes para Desenvolvedores DockerTDC2016POA | Trilha Cloud Computing - Kubernetes para Desenvolvedores Docker
TDC2016POA | Trilha Cloud Computing - Kubernetes para Desenvolvedores Dockertdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureGrupo de Testes Carioca
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoHélio Medeiros
 
Scrum Gathering Rio 2014
Scrum Gathering Rio 2014Scrum Gathering Rio 2014
Scrum Gathering Rio 2014Victor Pantoja
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDevHélio Medeiros
 
Spring roo - Criando aplicações Java Web em poucos minutos
Spring roo - Criando aplicações Java Web em poucos minutosSpring roo - Criando aplicações Java Web em poucos minutos
Spring roo - Criando aplicações Java Web em poucos minutosledsifes
 

Mais procurados (20)

Integração Continua - Jenkins
Integração Continua - JenkinsIntegração Continua - Jenkins
Integração Continua - Jenkins
 
Lab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenvLab python django - parte 2 - python + virtualenv
Lab python django - parte 2 - python + virtualenv
 
Gerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStackGerenciando o Zabbix com o SaltStack
Gerenciando o Zabbix com o SaltStack
 
Git e Github para Iniciantes
Git e Github para IniciantesGit e Github para Iniciantes
Git e Github para Iniciantes
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.
 
Testing laravel
Testing laravelTesting laravel
Testing laravel
 
Testes funcionais com frank
Testes funcionais com frankTestes funcionais com frank
Testes funcionais com frank
 
Hands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forgeHands on de desenvolvimento rápido de apllicações java ee com forge
Hands on de desenvolvimento rápido de apllicações java ee com forge
 
Git that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUBGit that like a boss - Colaborando com GITHUB
Git that like a boss - Colaborando com GITHUB
 
Desenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooDesenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring Roo
 
UAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao JenkinsUAI Test - Introdução Prática ao Jenkins
UAI Test - Introdução Prática ao Jenkins
 
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWDesvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
 
TDC2016POA | Trilha Cloud Computing - Kubernetes para Desenvolvedores Docker
TDC2016POA | Trilha Cloud Computing - Kubernetes para Desenvolvedores DockerTDC2016POA | Trilha Cloud Computing - Kubernetes para Desenvolvedores Docker
TDC2016POA | Trilha Cloud Computing - Kubernetes para Desenvolvedores Docker
 
Git ...ftw!
Git ...ftw!  Git ...ftw!
Git ...ftw!
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
Cloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows AzureCloud Computing e Integração Contínua com o Windows Azure
Cloud Computing e Integração Contínua com o Windows Azure
 
Github - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimentoGithub - Escrevendo código e compartilhando conhecimento
Github - Escrevendo código e compartilhando conhecimento
 
Scrum Gathering Rio 2014
Scrum Gathering Rio 2014Scrum Gathering Rio 2014
Scrum Gathering Rio 2014
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Spring roo - Criando aplicações Java Web em poucos minutos
Spring roo - Criando aplicações Java Web em poucos minutosSpring roo - Criando aplicações Java Web em poucos minutos
Spring roo - Criando aplicações Java Web em poucos minutos
 

Semelhante a Deploy Aplicações Python Jenkins

Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android EmbarcadoOdair Sousa
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...minastestingconference
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Alex Piaz
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoiMasters
 
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosQConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosStefan Teixeira
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverStefan Teixeira
 
TDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.ioTDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.iotdc-globalcode
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaLeonardo Kobus
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPThiago Colares
 
Introdução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPIntrodução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPSamuel Sampaio
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaDiego Cavalca
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 
Cake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCBA2012
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoEder Magalhães
 

Semelhante a Deploy Aplicações Python Jenkins (20)

Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
Fora Sobrinhos! Ecossistema para o desenvolvimento de aplicações corporativas...
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Android DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimentoAndroid DevConference - Automatizando testes sem sofrimento
Android DevConference - Automatizando testes sem sofrimento
 
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosQConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
 
TDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.ioTDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - Realtime applications com Socket.io
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHP
 
Introdução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPIntrodução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySP
 
Seminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec CafelândiaSeminário de Desenvolvimento Mobile - Etec Cafelândia
Seminário de Desenvolvimento Mobile - Etec Cafelândia
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Cake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modeloCake php selecaodeprojetos-apres-em-modelo
Cake php selecaodeprojetos-apres-em-modelo
 
Remobile
RemobileRemobile
Remobile
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 

Deploy Aplicações Python Jenkins

  • 1. Deploy de Aplicações Python Marcos Cardoso Grupy-SP
  • 2. Marcos Cardoso Bacharel em Ciência da Computação - UFRJ Desenvolvedor Pleno @ Globosat Entusiasta de Backend, Mobile facebook.com/vrcmarcos github.com/vrcmarcos linkedin.com/vrcmarcos vrcmarcos@gmail.com slideshare.net/vrcmarcos
  • 3. Preparando o projeto para o deploy 1. O código deve estar versionado 2. O código deve possuir testes 3. Os testes não podem falhar 4. As dependências devem estar isoladas
  • 4. O pipeline de deploy 1. Pegar o código do repositório (Github, Bitbucket, Gitlab, …) 2. Atualizar dependências 3. Rodar as possíveis migrates de banco 4. Executar os testes 5. Taggear o código 6. Acessar a máquina de produção e pegar a tag criada anteriormente 7. Atualizar dependências na máquina de produção 8. Rodar as possíveis migrates de banco em produção
  • 5. Mas como? Continuous Integration! Usaremos Jenkins para automatizar nossas tarefas
  • 7. Preparação do ambiente 1. Fork do repositório de teste: https://github.com/vrcmarcos/python-jenkins 2. Em produção: a. Dependências: python, git, pip, virtualenv e virtualenvwrapper b. Criar as pastas /www/python e /www/venvs 3. Baixar o Jenkins (http://jenkins.io) i. Instalar os plugins: Github plugin, promoted builds plugin, SSH Plugin, ShiningPanda Plugin ii. Entrar em Manage Jenkins > Configure System: 1. Adicionar o servidor na área SSH remote hosts. Caso sua máquina utiliza OpenSSH >= 6.7, baixar o JAR https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.54 e trocar na
  • 8. Criando o primeiro Job 1. Clicar em New Item no Jenkins 2. Configurações: a. Source Code Management i. Additional Behaviours: Shallow clone depth = 1, Do not fetch tags = true b. Build i. Virtualenv Builder 1. pip install -r requirements.txt 2. python manage.py migrate 3. python manage.py test c. Post-build Actions
  • 9. Promovendo o build 1. Nas configurações do Job: a. General: i. Promote builds when… 1. Promotion process: Name = PROD 2. Criteria: Promote immediatly once the build is complete 3. Actions: Execute shell script on remote host using ssh = https://gist.github.com/vrcmarcos/2a16bf0ad7a701f0f7fc3040779cc6bb