Post on 14-Feb-2018
ImplementandoIntegração Contínua
com
servereJenkins
Modelo Zend para Entrega Contínua
por Slavey Karadzhov
Zend Technologies, Inc. · www.zend.com2
Entrega Contínua de Aplicações PHP
Introdução
O Modelo Zend para Entrega Contínua
O Modelo de Entrega Contínua
www.zend.com/
continuousdelivery
Entrega contínua é uma metodologia, uma mudança de mentalidade e uma prática de liderança que foca em como alcançar a rápida entrega de aplicações através do ciclo de vida do software. Baseia-se na adoção de automação para agilizar os processos manuais e reforçar a consistência e reprodutibilidade na cadeia de entrega de software, assim como a melhoria na colaboração e compartilhamento de métricas e processos entre as equipes de desenvolvimento e operacional [1].
Um dos requisitos fundamentais para o estabelecimento de Distribuição Contínua é a implementação de um sistema de Integração Contínua automatizado, que automática e constistentemente constrói o aplicativo a partir de componentes e recursos de código para um pacote implementável.
Este artigo irá demonstrar os passos e vantagens da implementação de um sistema de integração contínua utilizando Jenkins e a pataforma de Entrega Contínua Zend Server.
O Modelo Zend para Entrega Contínua codifica as melhores práticas para implementar cada etapa do ciclo de entrega de software e fornece padrões, integrados com o Zend Server, (Plataforma Zend para Entrega Contínua de aplicações PHP), que ajudam a implementar as melhores práticas.
O Modelo fornece orientações sobre a infraestrutura básica que deve ser construída para entregar valor ideal. O objetivo é implementar abordagens práticas que irão acelerar e fortalecer cada etapa no processo de trazer aplicações mais rapidamente do código para produção.
Este modelo de Entrega Contínua é baseado em conceitos práticos de implementação reunido através da experiência da equipe de Serviços Profissionais da Zend no trabalho
Aprenda mais sobre o modelo
Integração Contínua
Compilação Qualidade Empacotamento
Automação de
infraestrutura
Automação de
Lançamento
Controle de Qualidade & Aprovações
Gerenciamento de Aplicações
Desenvolvedores trabalhando em branches.
Disparar Code Igniter ao fazer merge do branch master / trunk
Obter e organizar artefatos e dependências de aplicações
Rodar testes unitários e ferramentas de análise de código estático para garantir a qualidade do código
Montagem de artefatos da aplicação incluíndo dependências & configuração num pacote instalável
Provisionamento automatizadodos recursos & plataformas de infraestrutura
Implementação de aplicação automatizada por todos os ambientes
Testes funcionais & avisos de conclusão específicos para cada projeto
Disponibiliza dados e diagnósticos instantâneos na aplicação implementada para equipes de desenvolvimento e operações
Controle de versão
Zend Technologies, Inc. · www.zend.com3
Entrega Contínua de Aplicações PHP
Integração Contínua: Fundamentos
Integração Contínua
De
sen
volv
ed
ore
s
Controle do fonte
Um princípio chave da estratégia de Entrega Contínua é que a aplicação está sempre pronta para produção. Isso significa que todos artifícios necessários para construir a aplicação estão armazenados e gerenciados num sistema de controle de versão, e que o código deve ser checado regularmente por consistencia com as diretrizes da fonte do projeto para garantir pequenas incrementações entre as compilações. Basicamente, espera-se que o código principal esteja sempre pronto para produção.
Existem três elementos principais que dão fundamento a qualquer sistema de Integração Contínua.
1. Comprometimento com testes de compilação. O primeiro é um dos elementos mais importante; o comprometimento da equipe de desenvolvimento em produzir uma suíte de testes no nível da unidade e funcionalidade juntamente com o código. Isso é essencial para atingir o nível "garantido" de qualidade do código que pode estar pronto para entrar em produção a qualquer momento.
2. Nunca quebrar a compilação. O objetivo é que a aplicação deve estar pronta para ser compilada, empacotada e implementada a cada mudança enviada. Isto (é claro), significa que código quebrado ou não testado jamais devem ser comitados.
3. Controle de Versão. Outro elemento fundamental para a Integração Contínua é o controle de versão. De modo a estar pronto para focar na Integração Contínua, o código deve ser gerenciável por políticas rídigas de controle de versão.
Quando o código estiver sempre pronto para produção, gerenciado por rígidas políticas de controle de versão, e a equipe de desenvolvimento tiver adotado práticas de desenvolvimento ágeis e testes unitários, a empresa pode iniciar a implementação do ambiente de Integração Contínua.
Testes de compilação
Pacote e Implementação
Teste de aceitaçãoautomatizado
Testes de aceitação do usuário
retorna
VerificaNovo Código Dispara
Integração Contínua Falha
VerificaCorreção Dispara
Integração Contínua Dispara
Teste Automatizado
Falha
Diagnósticos
VerificaCorreção Dispara
DisparaAmbiente de Provisionamentoe implantação de aplicação
Promoção àProdução
Aprovação
Produção
Zend Technologies, Inc. · www.zend.com4
Entrega Contínua de Aplicações PHP
Integração Contínua
Para ilustrarum �uxo detrabalho típicode IntegraçãoContínua,considere oseguintecenário:
A estratégia de Integração Contínua foi projetada para criar um ambiente de automação que garante que toda mudança na aplicação resultará numa versão que poderá ser lançada, e que qualquer versão poderá ser compilada automaticamente com o clique de um botão. Num nível mais amplo, o escopo da Entrega Contínua é criar um processo completo de lançamento de aplicações de ponta a ponta sem necessidade de interferência humana (automatizado), onde a aplicação construída a partir do sistema de Integração Contínua, é frequentemente disponibilizada para os ambientes de teste e produção. O objetivo do ciclo de Entrega Contínua é assegurar consistência e alta qualidade respondendo com rapidez às solicitações dos usuários. A Integração Contínua é parte importante da Entrega Contínua.
O objetivo da Integração Contínua é automatizar etapas manuais no processo de desenvolvimento de aplicações na qual uma versão completa de recurso para software se move pela primeira vez do desenvolvimento para integrar-se ao sistema e para fase de testes de integração.
Na Integração Contínua as aplicações são construídas, desde a primeira etapa do processo de desenvolvimento, numa frequência de intervalos especí�ca ou com cada uma das mudanças veri�cadas pelos desenvolvedores. Isso elimina efetivamente a necessidade de testes de integração e o custo associado a desenvolvedores gastando tempo nessa etapa. Habilitar compilações incrementais frequentes e demandar processos de testes abrangentes também permite que desenvolvedores detectem falhas no início e como
Veja a Ilustração na próxima página
Durante o processo de desenvolvimento os programadores trabalham localmente em suas máquinas e uma vez que estão prontos para enviar as novas modi�cações no código eles comitam as alterações para o repositório central do código fonte. No diagrama abaixo o sistema de Gerenciamento de Controle do Código (ou controle de versão) é o repositório Git.
Quando o código entra no tronco principal (ou o gerente de lançamentos mescla o código de um dos desenvolvedores), a adição do código libera o lançamento de uma nova versão (release).
O sistema de Integração Contínua (Jenkins nesse caso) monitora o sistema de controle de versões por mudanças e lança o processo de compilação.
O servidor de Integração Contínua pega o código fonte do repositório.
O servidor de Integração Contínua roda os testes unitários para validar a qualidade.
O servidor de Integração Contínua empacota os arquivos em unidades distribuíveis e implanta o pacote no servidor de testes e valida o pacote e as funcionalidades básicas, rodando os testes funcionais automatizados.
O servidor de Integração Contínua implanta o mesmo pacote no ambiente de testes para que o usuário possa realizar um minucioso teste de aceitação.
Uma vez que os testes de aceitação são concluídos com sucesso, o mesmo pacote é implantado no servidor de produção. Implementar automação de infraestrutura e lançamentos possibilita automação de ponta à ponta e permite o provisionamento e implantação dos pacotes da aplicação em todos os servidores com o clique de um botão.
1.
2.
3.
4.
5.
6.
7.
8.
Zend Technologies, Inc. · www.zend.com5
Entrega Contínua de Aplicações PHP
Benefícios de integraçãoZend Server e Jenkins
commit
Clone do "Master" Brunch
Unittest
Produção
BuildPackaging
&Deploy
Validationtests
CodeAnalysis
O Zend Server, quando integrado ao Jenkins, possibilita um processo completo de entrega automatizada a partir do sistema de Integração Contínua, em Staging e Produção. O Zend Server irá implantar o pacote automaticamente no servidor, ou no grupo de servidores, seja em Staging ou Produção. Se o servidor �zer parte de um cluster Zend Server, automaticamente todos os nós receberão a mesma aplicação e con�guração. A capacidade de empacotar e implantar todo o código, con�gurações e bibliotecas necessárias para a aplicação PHP num ambiente de cluster de modo automatizado, também inclui a habilidade para retornar imediatamente todo o cluster para uma versão anterior da aplicação, caso seja necessário.
Outro benefício do Zend Server é a facilidade de manter a mesma versão para o stack de aplicações e con�gurações entre dev, test e produção. Isso inclui a habilidade de gerenciamento de bibliotecas que garante que as versões de framework e outras dependências estejam corretamente gerenciadas entre os ambientes. Que torna muito mais fácil trazer a aplicação sem problemas da Integração Contínua/Ambiente de desenvolvimento para o Staging e Produção. O Zend Server também alerta a equipe de modo a previnir erros causados por inconsistências de con�guração.
Controlede versão
Desenvolvedores
Testing Staging
Consistent. Automated. Collaborative. No problem.
Zend Technologies, Inc. · www.zend.com6
Entrega Contínua de Aplicações PHP
PHP Runtime Completo
Suporte e Correções de Segurança, Suporte a longo prazo
Pilha otimizada - Aceleração, caching, en�leramento de tarefas
IntegraçãoContínua
Empacotamentode App e
Bibliotecas
Automação delançamento
Implantação emCluster
Automação deInfraestrutura
Provisionamentoautomático em
Cluster
Gerenciamentode aplicação
Painéis de métricas,tendências e
Auditoria
APIs de automação DevOps
Como o Zend Server possibilita a Entrega Contínua?
Empacotamento padronizado e testes de implantação
Provisionamento instântaneo de infra de aplicação padronizada
Implantação, versão e reversão de aplicação automatizada
Entenda e corrija problemas de produção e reitere rapidamente
Zend Server: Plataforma para Entrega Contínuade aplicações PHP
O modelo Zend para Entrega Contínua está centrado na Plataforma de aplicaçãoZend Server. O Zend Server foi planejado para te ajudar a entregar aplicações demodo mais rapido, interativo e consistente.
Sem problemas.Consistente. Automatizado. Colaborativo.
Detecçãode erros
Consistênciana Pilha PHP
Retorno automáticode versão
Implantaçãoautomática em escala
Dependências eversionamento
Escala automática
Elasticidade emCloud
Gestão deCon�guraçãoMulti-Server
Clustering e AltaDisponibilidade
Análise decausa raiz
Acompanhamentode Mudanças
e Auditoria
VisibilidadeDev/Ops
compartilhada
Zend Technologies, Inc. · www.zend.com7
Entrega Contínua de Aplicações PHP
Sobre o Autor
Corporate Headquarters: Zend Technologies, Inc. 19200 Stevens Creek Blvd. Cupertino, CA 95014, USA · Tel 1-408-253-8800 · Fax 1-408-253-8801
Central Europe: (Germany, Austria, Switzerland) Zend Technologies GmbH, St.-Martin-Str. 53, 81669 Munich, Germany · Tel +49-89-516199-0 · Fax +49-89-516199-20
International: Zend Technologies Ltd. 12 Abba Hillel Street, Ramat Gan, Israel 52506 · Tel 972-3-753-9500 · Fax 972-3-613-9671
France: Zend Technologies SARL, 105 rue Anatole France, 92300 Levallois-Perret, France · Tel +33-1-4855-0200 · Fax +33-1-4812-3132
Italy: Zend Technologies, Largo Richini 6, 20122 Milano, Italy · Tel +39-02-5821-5832 · Fax +39-02-5821-5400
Ireland: Zend Technologies, The Digital Court, Rainsford Street, Dublin 8, Ireland · Tel +353-1-6908019
© 2014 Zend Corporation. Zend and Zend Server are registered trademarks of Zend Technologies Ltd.All other trademarks are the property of their respective owners.
0106-M-WP-0314-R1-EN www.zend.com
Sobre a Zend
Referências e recursos:[1]
[2]
O modelo Zend para Entrega Contínua, Zend Technologies, www.zend.com/continuousdelivery
http://www.thoughtworks.com/de/continuous-delivery
Slavey Karadzhov é Consultor Sênior na Zend Technologies. Possui certificações PHP 5/5.3, Zend Framework e MySQL Certified Engineer. Dono orgulhoso de dois mestrados em Ciências da Computação pela Universidade de Sofia na Bulgaria, e em Tecnologias de Software pela Universidade de Ciências Aplicadas de Stuttgard na Alemanha. Slavey um grande apoiador do código aberto e reconhecido inovador de softwares assim como autor do livro de Zend Framework chamado "Aprenda ZF2: Aprendendo com Exemplos" (http://learnzf2.com).
Na Zend Professional Services, lidera implementações de metodologias ágeis, design de aplicação, otimização e soluções de entrega contínua globalmente em empresas rodando aplicações PHP de missão crítica. Os consultores focam em orientar tanto o desenvolvimento quanto a equipe operacional dos clientes para entregar rapidamente aplicações PHP de alta qualidade com maior performance e disponibilidade.
A Zend realiza parceria com negócios que visam entregar rapidamente modernas aplicações para web, mobile e cloud. Nos ajudamos a estabelecer a linguagem PHP, que hoje estão presentes em mais de 200 milhões de aplicações e web sites. Nosso carro chefe, o Zend Server, é a Plataforma de aplicação líder para desenvolvimento, implantação e gerenciamento de aplicações em PHP críticas para os negócios. Mais de 40.000 empresas con�am nas soluções da Zend, incluindo NYSE Euronet, BNP Paribas, Bell Helicopter, France Telecom e outros líderes de segmento ao redor do globo.