Noosfero
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