Software Open Source e Integração Contínua no Instituto de InformáticaFerramentas de Integração ContínuaJaneiro 2015
Área de DesenvolvimentoDepartamento de Arquitetura e Desenvolvimento
Agenda
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
• Processo de desenvolvimento no Instituto de Informática
• Ferramentas Open Source Software/Free Software
• Integração Contínua, Entrega Contínua e Deployment Contínuo
Cadeia de Valor – Processo de Gestão de Entregas
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
Metodologia UP
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
• Casos de Uso• Requisitos de Negócio• Storyboard• Requisitos Não Funcionais
• Pedido de Serviços• Relatórios e Ofícios• Documentos VIE’s• Modelo de Análise e
Desenho• Modelo Dados Lógico• Protótipo Arquitetura• Plano de Testes
Elaboração
• Visão• Lista de Riscos• Documento Arquitetura• Modelo Casos de Uso• Plano de Projeto
• Manual de Deployment• Manual Operaçao Batches• Queries aplicacionais• Modelo Dados Físico• Binários, Javadocs …
Fases e artefactos
Conceção
Construção
Transição
• Release Notes• Relatório Final de Testes
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
Departamento de Arquitetura e Desenvolvimento
(DEV)
Departamento de Arquitetura e Desenvolvimento
(DEV)
DESENVOLVIMENTO
QUALIDADE
Departamento de Administração de Sistemas
(OPS)
Departamento de Administração de Sistemas
(OPS)
PRODUÇÃO
PRÉ-PRODUÇÃO
Departamentos e Ambientes
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
Ferramentas - Overview
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
SVN – O que é?
• SCM – Software Configuration Management/Version Control• Client Web based• Permite versionar artefatos e controlar quem fez o quê e quando
Onde aplicamos
• Guardar em todas as versões os artefactos produzidos• Disponibilizar informação não desmaterializada
Grau de integração
• Transversal a todas as outras ferramentas
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
O que é?
• Wiki 2ª geração – classes + objetos + scripting• Guarda informação de forma estruturada• Conteúdo colaborativo• Web based
Onde aplicamos
• Construção e disponibilização de artefactos (UC’s, Visão, etc)• Publicação de informação de interesse para a organização • Desmaterialização de documentação
Grau de integração
• SVN – Documentos ou espaços exportados da xWiki são colocados no SVN
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
O que é?
• Sistema de Gestão de Erros/Bugs• Web based• Colaborativo
Onde aplicamos
• Reporte de não conformidades• Gestão de tarefas
Grau de integração
• Jenkins – Solicita o ID da tarefa associada à entrega• IDE (plugin SVN) – Código commited associado a uma tarefa ou não conformidade• Tortoise (cliente SVN) – Cada artefacto comitted deve incluir o ID de uma tarefa
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
O que é?
• Ferramenta de gestão para a construção de projetos de software• Baseia-se no conceito de Project Object Model (POM)• Permite centralizar a produção de binários, relatórios e documentação
Onde aplicamos
• Em todos os projetos / subsistemas novos• Em alguns projetos migrados
Grau de integração
• Utilizado em modo stand-alone numa linha de comandos• Integrado no IDE (Eclipse, NetBeans, etc)• Integrado no Jenkins
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
O que é?
• Repositório que armazena e organiza os binários de software para uso nos vários ambientes
• Ponto central
Onde aplicamos
• Partilhar / disponibilizar binários a ser instalados nos vários ambientes• Repositório único de third-party jars• Repositório fidedigno de snapshots e releases
Grau de integração
• Populado pelo Jenkins / Maven
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
O que é?
• Plataforma para gerir a qualidade do código• Apresenta gráficos com métricas e estatísticas• Guarda histórico e evolução da qualidade de código
Onde aplicamos
• No processo de entrega contínua
Grau de integração
• Jenkins – invoca o Sonar via plugin para validar código• IDE – Via plugin do IDE pode ser invocado
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
O que é?
• Orquestrador de tarefas repetitivas• Compilador e executor de testes de projetos contínuos • Monitorização de tarefas externas
Onde aplicamos
• Na produção de daily-builds e deliveries
Grau de integração
• SVN – Checkout das sources e commit de tags• MVN – Execução de vários comandos• Nexus – Upload dos artefactos gerados• Sonar – Invocado para validação do código fonte• Bugzilla – Regista informação em tarefa de preparação de build
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
• Casos de Uso• Requisitos de Negócio• Storyboard• Requisitos Não Funcionais
• Pedido de Serviços• Relatórios e Ofícios• Documentos VIE’s• Modelo de Análise e
Desenho• Modelo Dados Lógico• Protótipo Arquitetura• Plano de Testes
Elaboração
• Visão• Lista de Riscos• Documento Arquitetura• Modelo Casos de Uso• Plano de Projeto
• Manual de Deployment• Manual Operaçao Batches• Queries aplicacionais• Modelo Dados Físico• Binários, Javadocs …
Onde moram os nossos artefactos
Conceção
Construção
Transição
• Release Notes• Relatório Final de Testes
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
Nova Funcionalidade ou Correção
Tarefa atribuída
Artefactos
Obtém artefactosInsere tagsCó d i g o F ont e p ar a aná l i se
ou
Programadores, Testers, Responsáveis de Projeto
Equipa Projeto
Ferramentas
SVN Repo
Processo de desenvolvimento
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
Lança Job
Binários e outros artefactos
Integração Contínua
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
• Rentabilizar as maiores potencialidades de cada uma das ferramentas, garantindo uma visão integrada e atualizada de toda a informação relevante dos projetos
• Permitir e facilitar uma maior paralelização de trabalhos
• Percepcionar e evitar problemas de integração de código fonte e de outros artefactos, desenvolvidos em simultâneo por diferentes elementos da equipa
Porquê?
• Reduzir o risco ► garantindo que a build compila sempre ► caso de falha notifica a respetiva equipa – rápido feedback para a equipa
• Bugs/defeitos detetados mais cedo ► Permitindo correção imediata dos bugs introduzidos no processo de desenvolvimento
• Torna mais fácil gerir várias linhas de desenvolvimento
Benefícios
Integração Contínua - Build Diária
svn commit
Lança maven
Programadores SVN Repo
svn checkout
Servidor CI
• Versionamento• Gera binários• Executa testes unitários• Empacota os binários
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
Entrega Contínua
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
• Necessidade de disponibilizar automaticamente uma entrega
Porquê?
• Permite reduzir riscos em torno nas releases
• Beneficia os gestores do negócio pois há sempre uma release candidata
• Possibilita rápido feedback sobre os produtos e estratégias desenvolvidas
Benefícios
Entrega contínua – Delivery Build
ProgramadoresSVN Repo Servidor CI
• Versionamento• Gera binários• Executa testes unitários• Empacota os binários• Cria tag• Cria site c/ resources• Arquiva artefactos
Invoca Sonar
mvn release
mvn site deploy
svn commit svn checkout
Lança mav en
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
Deployment Contínuo
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
• Permitir com um simples pressionar do botão produzir uma nova versão do produto e instala-la no ambiente de produção, disponibilizando-a rapidamente ao cliente.
Porquê?
• Reduzir o tempo entre o levantamento de um requisito e a sua disponibilização para o cliente, permitindo:
• Ter mais cedo o retorno do que foi investido (Return On Investment)• Feedback dos end users
Benefícios
• Montar infraestrutura baseada em automatismos e instrumentação
• Capacidade de efectuar um rollback rapidamente caso surja um problema com a nova release
Dificuldades
Roadmap – Onde nos encontramos
Integração ContínuaIntegração Contínua Deployment ContínuoDeployment ContínuoEntrega Contínua
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
• Investir no processo de deployment contínuo
• Continuar a aposta em ferramentas OSS
• Alargar utilização a todos os projetos dentro processo de gestão de
entregas mas também a outros processos da cadeia de valor
• Contribuir para a consolidação, evolução e melhoria contínua das
ferramentas de desenvolvimento OSS
FERRAMENTAS OPEN SOURCE NO INSTITUTO DE INFORMÁTICA
Conclusão
Av. Prof. Dr. Cavaco Silva, nº 17 Edifício Ciência 1 – Taguspark2740-120 Porto Salvo Telf. 214230000