Boas Práticas para D.C.
com Drupal
Renato Vasconcellos
renato@taller.net.br
O que você verá nesta
apresentação?
● O que é Continuous Deployment
● Ferramentas & Modulos
● Fluxo de desenvolvimento
● Dicas & Referências
Agenda
Aviso
Esta apresentação está direcionada para pessoas
que desejam começar ou ter contato com
algumas lições aprendidas na minha
experiência com Continuous Deployment.
Se você já tem domínio dos princípios de devops
e tem experiência avançada com Drupal talvez
você já conheça o que está por vir.
O que significa Deploy?
“Colocação de
equipamentos e tropas no
campo de batalha.”
www.webopedia.com/TERM/D/deploy.html
“Instalar, testar e
implementar uma
aplicação ou sistema de
computador.”
www.webopedia.com/TERM/D/deploy.htm
Integração Continua?
Entrega Continua?
Deploy Contínuo?
Integração Continua
Integrar seu trabalho
constantemente com
sua equipe.
Entrega Continua
Disponibilizar seu trabalho
constantemente para revisão
pela equipe ou pelo cliente.
Deploy Contínuo
Implantar seu trabalho
constantemente no
servidor do cliente.
Deploy Continuo
é um reflexo da cultura e
disciplina de um time.
Continuous Deployment
in 5 steps
Eric Ries - O'Reilly Radar
http://lb.cm/dploy5stps
Servidor de
Integração Contínua
(CI Server)
Checagem de commits do
Controle de versão
(Source control commit check)
Scripts de Deploy
simples
(Simple deployment scripts)
Alertas em
tempo real
(Real-time alerting)
Análise da
causa raíz
(the five whys)
Como/por onde começar?
Image by Jalel
Fluxo de trabalho
padronizado
Acordos de trabalho
ATs são um conjunto de
regras/disciplinas/processos que a
equipe concorda em seguir, sem
falhas, para torná-los mais eficientes
e aumentar a qualidade do trabalho.
Vignesh Murthy
https://www.scrumalliance.org/community/articles/2014/january/work-agreements-scrum-team
Padrões de codificação
drupal.org/coding-standards
Tudo em código
Test Driven
Development
Servidor de CI/CD
Escolha o seu preferido
● Jenkins
● CircleCI
● Codeship
● Strider CD
● Dploy
● Travis CI
● Gitlab CI
● Other
Deploy on Green!
Fluxo de
Desenvolvimento
Pipeline
Develop.
Test/QA
ProductionUAT/Staging
Ambiente de
Desenvolvimento
Pode simular o
ambiente de produção.
Ambiente de
Teste/QA
Pode simular o
ambiente de produção.
Ambiente de
UAT/Staging/Pre-prod
Deve simular o
ambiente de produção.
Ambiente
Produção
Recap.
Develop.
Test/QA
http://dltj.org/article/software-development-practice/
http://spacebug.com/effective_development_environments/
ProductionUAT/Staging
Com fazer isso com Drupal?
Drupal Development
Virtual Machine
drupalvm.com
github.com/revagomes/drupal-boilerplate
github.com/sebas5384/charm-drupal
Drush
drush.org
Perfís de instalação
& Distribuições
drupal.org/documentation/build/distributions
Modulo Strongarm
drupal.org/project/strongarm
Modulo Features
drupal.org/project/features
drupal.org/documentation/modules/features
Modulo Default Config
drupal.org/project/defaultconfig
Modulo personalizado
de Deployment
befused.com/drupal/site-deployment-module
Modulo
Configuration Management
drupal.org/project/configuration
Modulo UUID
drupal.org/project/uuid
Modulo Deploy
drupal.org/project/deploy
Modulos WF Tools
drupal.org/project/wf_tools
Git Workflow
atlassian.com/git/workflows
Centralized
workflow
Feature branch
workflow
Git flow
workflow
Forking
workflow
A successful
git branch model?
Vincent Driessen
nvie.com/posts/a-successful-git-branching-model
Git flow
Workflow
Git flow
https://github.com/nvie/gitflow
Git flow cheat sheet
http://danielkummer.github.io/git-flow-cheatsheet/
.git/Hooks
git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
Client Side
Pre
Commit
● Padrão de Código (Lint)
● Testes automatizados
Post
Checkout
● Testes críticos
● Checagem de branch
Server Side
Pre
Receive
● Padrão de Código (Lint)
● Testes automatizados
● Proteção de Branches
Post
Receive
● Testes de carga
● Notificações
Com fazer isso com Drupal?
Modulo Coder
drupal.org/project/coder
Script PAReview
drupal.org/project/pareviewsh
Modulo
Drupal Code Quality
drupal.org/project/dcq
Testes Automatizados
Testes Automatizados
trazem segurança e
confiabilidade para um
processo de melhoria
contínua.
Joseph Yodel
slideshare.net/yodamann/pragmatic-not-dogmatic-tdd-agile2012
Joseph Yodel
slideshare.net/yodamann/pragmatic-not-dogmatic-tdd-agile2012
Joseph Yodel
slideshare.net/yodamann/pragmatic-not-dogmatic-tdd-agile2012
Com fazer isso com Drupal?
Simple Test
drupal.org/project/simpletest
PHP Unit
phpunit.de
drupal.org/phpunit
Modulo
Behat Extension
drupal.org/project/drupalextension
Barbor
(BDD Framework)
github.com/barbor/barbor
Jasmine
(BDD Framework)
github.com/jasmine/jasmine
Perguntas & Respostas
Deixe seu feedback!
latinamerica2015.drupal.org/session/best-practices-continuous-deployment-drupal
Mantenha contato!
@revagomes
renato@taller.net.br
drupal.org/u/revagomes
about.me/revagomes

Boas práticas para deploy contínuo com drupal