deploy de aplicações python

11
Deploy de Aplicações Python Marcos Cardoso Grupy-SP

Upload: marcos-cardoso

Post on 15-Apr-2017

153 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Deploy de aplicações python

Deploy de Aplicações Python

Marcos Cardoso

Grupy-SP

Page 2: Deploy de aplicações python

Marcos CardosoBacharel em Ciência da

Computação - UFRJ

Desenvolvedor Pleno @ Globosat

Entusiasta de Backend, Mobile

facebook.com/vrcmarcos

github.com/vrcmarcos

linkedin.com/vrcmarcos

[email protected]

slideshare.net/vrcmarcos

Page 3: Deploy de aplicações python

Preparando o projeto para o deploy1.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

Page 4: Deploy de aplicações python

O pipeline de deploy1.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

9.Reiniciar a aplicação em produção

Page 5: Deploy de aplicações python

Mas como? Continuous Integration!Usaremos Jenkins para automatizar nossas tarefas

Page 6: Deploy de aplicações python

Hands on!

Page 7: Deploy de aplicações python

Preparação do ambiente1.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 pasta /var/lib/jenkins/plugins/ssh/WEB-INF/lib/ (https://issues.jenkins-ci.org/browse/JENKINS-25258)

Page 8: Deploy de aplicações python

Criando o primeiro Job1. 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.txt2. python manage.py migrate3. python manage.py test

c. Post-build Actionsi. Git publisher

1. Push Only If Builds Succeeds = true2. Tags: Tag to push = ${BUILD_NUMBER}, Create new tag = true, Target

remote name = origin

Page 9: Deploy de aplicações python

Promovendo o build1.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

Page 10: Deploy de aplicações python

Duvidas?

Page 11: Deploy de aplicações python

Obrigado!facebook.com/vrcmarcos

github.com/vrcmarcos

linkedin.com/vrcmarcos

[email protected]

slideshare.net/vrcmarcos