7
Implementando Integração Contínua com s erver e Jenkins Modelo Zend para Entrega Contínua porSlaveyKaradzhov

Implementando Integração Contínua - nua Falha Verifica ... O servidor de Integração Contínua pega o código fonte do repositório. O servidor de Integração ... 0106-M-WP-0314-R1-EN

Embed Size (px)

Citation preview

Page 1: Implementando Integração Contínua - nua Falha Verifica ... O servidor de Integração Contínua pega o código fonte do repositório. O servidor de Integração ... 0106-M-WP-0314-R1-EN

ImplementandoIntegração Contínua

com

servereJenkins

Modelo Zend para Entrega Contínua

por Slavey Karadzhov

Page 2: Implementando Integração Contínua - nua Falha Verifica ... O servidor de Integração Contínua pega o código fonte do repositório. O servidor de Integração ... 0106-M-WP-0314-R1-EN

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

Page 3: Implementando Integração Contínua - nua Falha Verifica ... O servidor de Integração Contínua pega o código fonte do repositório. O servidor de Integração ... 0106-M-WP-0314-R1-EN

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

Page 4: Implementando Integração Contínua - nua Falha Verifica ... O servidor de Integração Contínua pega o código fonte do repositório. O servidor de Integração ... 0106-M-WP-0314-R1-EN

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.

Page 5: Implementando Integração Contínua - nua Falha Verifica ... O servidor de Integração Contínua pega o código fonte do repositório. O servidor de Integração ... 0106-M-WP-0314-R1-EN

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

Page 6: Implementando Integração Contínua - nua Falha Verifica ... O servidor de Integração Contínua pega o código fonte do repositório. O servidor de Integração ... 0106-M-WP-0314-R1-EN

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

Page 7: Implementando Integração Contínua - nua Falha Verifica ... O servidor de Integração Contínua pega o código fonte do repositório. O servidor de Integração ... 0106-M-WP-0314-R1-EN

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.