wiki:buildSystem

BuildSystem - Sistema de criação de pacotes Linux em ambiente multi-plataforma

Informação sobre o Projecto

Licença

GPL V2 (a actual licença utilizada em todos os projectos internos da Caixa Mágica)

Necessidade que visa colmatar

A forma como funciona todo o fluxo utilizado por uma distribuição de Linux desde que um pacote fonte de uma aplicação é introduzido no sistema até que este esteja pronto para ser instalado pelos utilizadores finais ainda é um processo por vezes demasiado manual, ou então muito especifico de cada distribuição de Linux.

É necessário encontrar um processo que seja automático o suficiente bem como genérico o suficiente para ser utilizado na maioria dos casos, de forma a que este fluxo se torne o mais transparente possível para todos os intervenientes, e que permita analisar todas as fases do processo de forma simples, facilitando a identificação e correcção de problemas rapidamente.

Descrição do projecto

O objectivo deste projecto é então automatizar a forma como o fluxo de construção de um pacote (RPM ou DEB) acontece desde que se tem um pacote fonte até este estar disponível para os utilizadores de uma distribuição, nas suas diferentes plataformas (noarch, i586 e x86_64). Existem duas componentes principais a implementar:

  1. A construção dos pacotes do estado "building" nas diferentes arquitecturas, e informação sobre o estado após o "building": se correu tudo bem (passa ao estado "testing"), se falhou (passa ao estado "pending"); Utilização do BuildBot para o efeito
  2. A forma de análise visual do estado das submissões em cada momento, quer de forma geral para os "administradores", quer por utilizador para os pacotes que este submeteu.

BuildBot System Architecture

Fig.1 Arquitectura de sistema do BuildBot

Roadmap

  • Fase 1: Investigação sobre o "BuildBot"

Sumário: Instalar o BuildBot master/slave e conhecer a aplicação

Deadline: 24 de julho de 2009

Deliverable: Documento com a forma de instalação e utilização da ferramenta BuildBot e como a sua utilização pode beneficiar o nosso buildsystem, quer em termos de funcionalidades quer em termos de visualização dos estados em cada momento.

  • Fase 2: Construir pacote fonte

Sumário: Construir pacote fonte na máquina local usando o slave do BuildBot e ver a resposta no Master

Deadline: 31 de Julho de 2009

Deliverable: Script que envia os pacotes em Building para os slaves em directorias locais e devolve o resultado de cada build

  • Fase 3: Utilizar máquinas de building remotas

Sumário: Construir pacote fonte em máquinas remotas (xen guests) usando-as como slaves do buildbot e ver a resposta no Master

Deadline: 7 de Agosto de 2009

Deliverable: Script que envia os pacotes em Building para os slaves remotos e devolve o resultado de cada build

  • Fase 4: Build em chroot

Sumário: Fazer o build dos pacotes remotamente em ambiente chrooted (para que em cada build o pacote tenha o mesmo ambiente de dependências, configurações, etc)

Deadline: 14 de Agosto de 2009

Deliverable: Script que ao lançar um pacote para building cria um ambiente de chroot em cada slave,

  • Fase 5: Build em chroot com instalação de dependências à priori

Sumário: Fazer o build dos pacotes remotamente em ambiente chrooted para que cada pacote tenha o mesmo ambiente, mas garantir de forma automática as dependências de build (build-deps)

Deadline: 21 de Agosto de 2009

Deliverable: Script que ao lançar um pacote para building cria um ambiente de chroot em cada slave, e instalar em cada ambiente chrooted as dependências que o ambiente de building necessita (Build Requires)

  • Fase 6: Interface web

Sumário: Criar interface web que permita analisar o estado de building de cada pacote em cada momento, bem como uma ideia geral do estado do building system

Deadline: 4 de Setembro de 2009

Deliverable: Site web com visualização de estado do building, usando os outputs do BuildBot

  • Fase 7: Interface web, com opção de alteração de estados

Sumário: Conseguir através do interface web alterar os estados dos pacotes dentro do sistema de building

Deadline: 18 de Setembro de 2009

Deliverable: Site web com funcionalidade de alteração manual de estados de pacotes,

Plano de risco

Riscos até ao momento identificados e possíveis soluções:

  • Trabalhar em ambiente chroot: Auxilio da equipa da Caixa Mágica;

Interacção com a comunidade / incentivos à colaboração

A gestão de pacotes é uma actividade essencial de qualquer distribuição Linux por isso soluções inovadoras que facilitam a automatização de tarefas são do interesse da comunidade.

Perspectivas de continuação após o SAPO Summer bits

Dependendo de quão genérico e modular o código produzido pode haver possibilidade da solução de build system ser também desenvolvida e adoptada por outras distribuições e projectos.

Informação sobre o orientador e co-orientador

Organização

Caixa Mágica Software

Descrição da Organização

A Caixa Mágica é um dos projectos Open Source com maior historial em Portugal.

Nascida em ambiente universitário, no ISCTE, no ano de 2000, tem tido um crescimento estável ao longo dos últimos 8 anos alicerçada num conjunto de valores, missão, visão e estratégia que a ajudam a manter o foco em tecnologias Open Source.

Em 2004 foi constituído uma empresa spin-off, sendo mantido uma forte ligação à ADETTI através de um contrato de partilha de desenvolvimento. A empresa Caixa Mágica Software teve resultados positivos em 2004 e tem tido um crescimento na ordem de 30% ao ano.

Hoje a Caixa Mágica está organizada em 3 área principais por onde se distribuem os seus 15/20 colaboradores:

  • Produto: unidade de engenharia que desenvolve a distribuição Linux Caixa Mágica. Actualmente, a CM comercializa cerca de 900 unidades / mês do seu produto entre venda on-line, loja e programas especiais.
  • Projectos / outsourcing: projectos de elevada exigência em tecnologias Open Source que os profissionais Caixa Mágica encaixam valor.
  • Investigação: projectos europeus e nacionais de R & D que fornecem tecnologia e competência às outras U.N.. Neste momento, existe um ciclo de 3 anos entre a investigação e "produtização".

Para além das acima, a Caixa Mágica tem 3 unidades de menor dimensão mas em crescimento: Formação, Serviços Profissionais e Appliances.

Orientador

Flávio Moringa

Experiência profissional:

Flávio Moringa é Technical Consultor da Caixa Mágica, sendo neste momento o responsável pelas versões estáveis da distribuição de Linux Caixa Mágica, bem como pelo desenvolvimento das novas versões. É também investigador sénior da ADETTI, onde trabalha no laboratório O2H na investigação sobre Sistemas Operativos e segurança.

Co-Orientador

Susana Nunes

Experiência profissional:

Susana Nunes é Technical Consultor da Caixa Mágica, sendo neste momento a responsável por toda a gama de sites e plataformas da Caixa Mágica. É também investigadora da ADETTI, onde trabalha no laboratório O2H na investigação sobre Sistemas Operativos e segurança.

URL da Proposta

http://contribsoft.caixamagica.pt/trac/wiki/buildSystem

Informação sobre o Aluno

Identificação pessoal do aluno

Nome: André Parreira Ricardo

Experiência anterior: Programação em Java, JSP, PHP, MySQL, C#, Shell Script.

Situação actual: No próximo ano lectivo irá frequentar o Mestrado em Informática e Gestão no ISCTE

Métodos de desenvolvimento que adopta: Início com o levantamento informal dos requisitos do projecto. Estudo da documentação das tecnologias e ferramentas a utilizar seguido da aplicação de alguns casos práticos. Posterior implementação da solução e entrega com a respectiva documentação.

Descrição sobre o projecto e motivação: Interesse em realizar o projecto porque este permite aprofundar os conhecimentos sobre o sistema operativo Linux, aprender e trabalhar com novas tecnologias e tomar contacto com o ambiente de trabalho em desenvolvimento de software.

Documentação do Projecto

Referências

[1] - Página do projecto BuildBot

[2] - Manual do BuildBot 0.7.11

[3] - http://www.caixamagica.pt/pag/i-cxmag2.php?id=9

[4] - Documentação do PostgreSQL

Last modified 9 years ago Last modified on Apr 13, 2010, 4:33:07 PM

Attachments (1)

Download all attachments as: .zip