1) O documento apresenta um pipeline de deploy de aplicações Python utilizando Jenkins para automatizar as tarefas de integração contínua.
2) É explicado como preparar o projeto, configurar o Jenkins e criar um primeiro job para rodar os testes e fazer o deploy na máquina de produção.
3) Passo a passo é dado para configurar o Jenkins, criar o primeiro job, promover o build e fazer o deploy automático na produção.
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