Introdução

editar

Propósito

editar

Este plano de gerência de configuração visa esclarecer as etapas, ferramentas e envolvidos no processo de gerência de configuração do projeto de software livre Noosfero.

Escopo

editar

A gerência de configuração será aplicada a plataforma de rede social Noosfero com o foco na integração continua e automatização de configuração do ambiente de desenvolvimento, as quais atualmente são feitas apenas parcialmente.

Gerenciamento de Configuração de Software

editar

Organização, Responsabilidades e Interfaces

editar

A responsabilidade pela gerência de configuração será compartilhada pelos responsáveis: - André Bernardes - Tallys Martins Os responsáveis realizarão papéis semelhantes entre si, dividindo as tarefas de acordo com a necessidade.

Ferramentas, Ambiente e Infraestrutura

editar

Esta ferramenta será usada para a automatizar os processos de instalação dos ambientes de desenvolvimento e de produção. Desta maneira, todo o processo ocorrerá de forma mais rápida e com uma menor taxa de erros que podem ser causados por erros nos passos da instalação manual.

Git e Gitlab CE
editar

Atualmente, o projeto Noosfero já utiliza o sistema de versionamento Git, desta forma, esta característica será mantida. De maneira análoga, o projeto principal do Noosfero está atualmente hospedado no forge GitLab CE em um servidor externo. O GitLab CE é um sistema open source o qual os usuários tem a possibilidade de criar e manter uma instalação própria, recurso este que será implantado juntamente à automatização do processo de instalação dos ambientes.

Gitlab CI
editar

O Gitlab CI será utilizado para integração continua pois o projeto atualmente já está hospedado no forge Gitlab CE, e a ferramenta proporciona grande integração entre os ambientes.

Gerência de Configuração de Programa

editar

Identificação da Configuração

editar
Baselines do Projeto
editar

As Baselines para a execução da gerência de configuração serão definidas a partir das Releases da plataforma Noosfero a partir da versão 1.1.

Configuração e Controle de Mudança

editar

Como à plataforma Noosfero é desenvolvida em um ambiente distribuido, sendo esta uma caracteristica de projetos de software livre, o controle de mudanças é realizado pelos membros do projeto através de revisões de “merge requests”, onde a revisão é feita manualmente por algum dos membros e as mudanças feitas por membros são aceitas imediatamente e auditadas posteriormente se necessário. A integração continua busca facilitar à detecção de inconformidades através da verificação de testes para restringir a submissão de código defeituoso.


Relato do Status de Configuração

editar

O andamento da gerência de configuração será guiado e controlado também por um sistema de controle de versão Git, registrando ao longo do tempo as mudanças e a evolução do processo. O repositório estará disponível em: gitlab.com/gcs/projeto.git e será restrito aos responsáveis pela execução deste plano de gerência de configuração, conforme o item 2.1 deste documento. Desta forma, os recursos da ferramenta Git possibilitarão ações de recuperação caso ocorra algum desastre.

Milestones

editar

Recursos e Treinamentos

editar

Conhecimentos em linguagem de programação Ruby on Rails, controle de versão Git, PostgreSQL, scripts de instalação Chef, foge Gitlab CE e ferramenta de integração contínua Gitlab CI

Referências

editar

RUP. Configuration Management Plan. Rational Unified Process, 2002. Disponível em:http://sce.uhcl.edu/helm/rationalunifiedprocess/process/artifact/ar_cmpln.htm Acesso em: 04 de maio de 2015

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Status do Andamento

editar

Esta seção possui o relato do andamento do projeto ao longo da execução do plano de gerência da configuração.

Alterações de Escopo

editar

Houveram algumas alterações quanto ao escopo do projeto. Pretendia-se utilizar o Chef para automatizar a instalação dos ambientes de produção e de desenvolvimento, porém já existem scripts que fazem esta instalação para instalação em depoly. Logo, optou-se por utilizar o Vagrant para gerar um ambiente completo para desenvolvimento, pronto para ser utilizado por novos colaboradores.

Foi proposto também, a disponibilização de uma instância do Gitlab CE em um servidor próprio, mas pela falta de tempo, essa tarefa não será concluída. Esta falta de tempo deu-se pelo fato de que se fez necessário o desenvolvimento e configuração de uma nova ferramenta (chamda Robot) para trabalhar juntamente com o Gitlab CI na integração contínua, pelo motivo de esta não dar suporte à builds de commits advindos de merge requests de projetos externos, como Forks.

Antes Agora
Gitlab CE Retirado
Chef para ambientes devel e deploy Vagrant apenas para ambientes devel
Gitlab CI Gitlab CI + Robot

Ponto de Controle

editar

Progresso de tarefas do desenvolvimento de GSC no projeto no Ponto de Controle.

  • Criação da Vagrant Box contendo noosfero instalado e configurado
  • Estudo para entendimento da interação entre o Gitlab CE e o Gitlab CI
  • Desenvolvimento da aplicação Robot para trabalhar com Merge Requests externos no Gitlab CI
  • Aprimoramento da aplicação Robot
  • Disponibilização da Vagrant Box criada
  • Tutorial de Instalação da Vagrant Box
  • Tutorial de Instalação e Configuração do Gitlab CI em um projeto
  • Tutorial de Instalação e Configuração do Robot

Entrega Final

editar

Esta seção apresenta os resultados da entrega final

  • Criação da Vagrant Box contendo noosfero instalado e configurado
  • Estudo para entendimento da interação entre o Gitlab CE e o Gitlab CI
  • Desenvolvimento da aplicação Robot para trabalhar com Merge Requests externos no Gitlab CI
  • Aprimoramento da aplicação Robot
  • Disponibilização da Vagrant Box criada
  • Tutorial de Instalação da Vagrant Box
  • Tutorial de Instalação e Configuração do Gitlab CI em um projeto
  • Criação de um tutorial de Instalação e Configuração do Robot

Tutoriais

editar

Instalação da Vagrant Box Contendo noosfero (Ubuntu)

editar

1) Abra o terminal e instale o vagrant

sudo apt-get install vagrant

2) Adicione a box do noosfero disponível na url {url}

vagrant box add noosfero {url}

3) Crie uma pasta para a box

mkdir -p nome_da_pasta

4) Entre na pasta criada

cd nome_da_pasta

5) Inicie a box e note que será criado um arquivo de configuração 'Vagrantfile'

vagrant init noosfero

6) Edite a linha 22 do arquivo Vagrantfile para a seguinte

 config.vm.network :forwarded_port, guest: 3000, host: 3000

7) Faça o boot da máquina virtual

vagrant up

8) Acesse a máquina via ssh

vagrant ssh

9) Digite ls para ver o diretório da pasta noosfero, entre nela, atualize o repositório

ls
cd noosfero
git pull origin master

10) Inicie o noosfero

rails s

Configuração do Gitlab CI em um projeto do Gitlab CE

editar
Habilitando Serviço do Gitlab CI
editar
Configurando um Runner
editar

Para instalar e configurar um runner, basta seguir o Tutorial Oficial

https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-manually.md

Instalação e Configuração do Robot CI

editar

O guia de instalação e configuração do Robot CI se encontra no arquivo README.md no repositório

https://gitlab.com/noosfero-robot/ci-app