Noosfero

Fonte: Wikiversidade

Introdução[editar | editar código-fonte]

Propósito[editar | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

Organização, Responsabilidades e Interfaces[editar | editar código-fonte]

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 | editar código-fonte]

Chef[editar | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

Identificação da Configuração[editar | editar código-fonte]

Baselines do Projeto[editar | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

Recursos e Treinamentos[editar | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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

Done[editar | editar código-fonte]
  • 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
Doing[editar | editar código-fonte]
  • Aprimoramento da aplicação Robot
To Do[editar | editar código-fonte]
  • 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 | editar código-fonte]

Esta seção apresenta os resultados da entrega final

Done[editar | editar código-fonte]
  • 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 | editar código-fonte]

Instalação da Vagrant Box Contendo noosfero (Ubuntu)[editar | editar código-fonte]

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 | editar código-fonte]

Habilitando Serviço do Gitlab CI[editar | editar código-fonte]
Configurando um Runner[editar | editar código-fonte]

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 | editar código-fonte]

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