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