Boas práticas para deploy contínuo com drupal

86
Boas Práticas para D.C. com Drupal Renato Vasconcellos [email protected]

Transcript of Boas práticas para deploy contínuo com drupal

Boas Práticas para D.C.com Drupal

Renato [email protected]

O que você verá nesta apresentação?

● O que é Continuous Deployment

● Ferramentas & Modulos

● Fluxo de desenvolvimento

● Dicas & Referências

Agenda

AvisoEsta 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 trabalhoconstantemente para revisão

pela equipe ou pelo cliente.

Deploy Contínuo

Implantar seu trabalhoconstantemente noservidor do cliente.

Deploy Continuo é um reflexo da cultura e

disciplina de um time.

Continuous Deploymentin 5 steps

Eric Ries - O'Reilly Radarhttp://lb.cm/dploy5stps

Servidor deIntegração Contínua

(CI Server)1

Checagem de commits do Controle de versão

(Source control commit check)2

3Scripts de Deploy

simples(Simple deployment scripts)

Alertas emtempo real

(Real-time alerting)4

Análise da causa raíz

(the five whys) 5

Como/por onde começar?

Image by Jalel

Fluxo de trabalhopadronizado

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 Murthyhttps://www.scrumalliance.org/community/articles/2014/january/work-agreements-scrum-team

Padrões de codificação

drupal.org/coding-standards1

Tudo em código

2

Test DrivenDevelopment3

Servidor de CI/CD

Escolha o seu preferido

● Jenkins

● CircleCI

● Codeship

● Strider CD

● Dploy

● Travis CI

● Gitlab CI

● Other

Deploy on Green!

Fluxo deDesenvolvimento

Pipeline

Develop.

Test/QA

ProductionUAT/Staging

Ambiente deDesenvolvimento

Pode simular oambiente de produção.

Ambiente deTeste/QA

Pode simular o ambiente de produção.

Ambiente deUAT/Staging/Pre-prod

Deve simular o ambiente de produção.

AmbienteProduçã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 DevelopmentVirtual Machine

drupalvm.com

github.com/revagomes/drupal-boilerplate

github.com/sebas5384/charm-drupal

Perfís de instalação& Distribuições

drupal.org/documentation/build/distributions

Modulo Strongarmdrupal.org/project/strongarm

Modulo Default Configdrupal.org/project/defaultconfig

Modulo personalizado de Deployment

befused.com/drupal/site-deployment-module

ModuloConfiguration Management

drupal.org/project/configuration

Modulo UUIDdrupal.org/project/uuid

Modulo Deploydrupal.org/project/deploy

Modulos WF Toolsdrupal.org/project/wf_tools

Centralizedworkflow1

Feature branchworkflow2

Git flowworkflow3

Forkingworkflow4

A successful git branch model?

Vincent Driessennvie.com/posts/a-successful-git-branching-model

Git flowWorkflow

Git flowhttps://github.com/nvie/gitflow

Git flow cheat sheethttp://danielkummer.github.io/git-flow-cheatsheet/

Client Side

PreCommit

● Padrão de Código (Lint)

● Testes automatizados

PostCheckout

● Testes críticos

● Checagem de branch

Server Side

PreReceive

● Padrão de Código (Lint)

● Testes automatizados

● Proteção de Branches

PostReceive

● Testes de carga

● Notificações

Com fazer isso com Drupal?

ModuloDrupal Code Quality

drupal.org/project/dcq

Testes Automatizados

Testes Automatizados trazem segurança e

confiabilidade para um processo de melhoria

contínua.

Com fazer isso com Drupal?

ModuloBehat Extension

drupal.org/project/drupalextension

Barbor(BDD Framework)

github.com/barbor/barbor

Jasmine(BDD Framework)

github.com/jasmine/jasmine

Perguntas & Respostas

Mantenha contato!

@[email protected]/u/revagomesabout.me/revagomes