Wikilegis
Estudantes: Caique Pereira, Euler Carvalho
Introdução
[editar | editar código-fonte]O Plano de Gerência de Configuração contém a descrição de todas as atividades do Gerenciamento de Controle e Mudanças que serão executadas durante o ciclo de vida do projeto Wikilegis. Possui o cronograma de atividades, as responsabilidades atribuídas, e os recursos necessários, como equipes, ferramentas e computadores.
Finalidade
[editar | editar código-fonte]A finalidade desse plano é definir o que será feito, quem fará, quando e como na disciplina de Gerência de Configuração de Software, ou seja, padronizar a forma de como as mudanças serão gerenciadas.
Escopo
[editar | editar código-fonte]Este Plano de Gerência de configuração está relacionado ao projeto Wikilegis. O Wikilegis é um projeto desenvolvido pelo Laboratório Hacker da Câmara dos Deputados, com o objetivo de permitir ao cidadão propor alterações à redação de projetos de lei. [1] Esse projeto foi escolhido para ser melhorado no que diz respeito à sua Gerência de Configuração de Software na disciplina de Gerência de Configuração de Software da Universidade de Brasília.
O projeto abrange as seguintes demandas:
- Empacotar o Wikilegis para ambiente de produção
- Configurar ambiente de desenvolvimento com o Vagrant
- Integração Contínua*
* Desenvolvido no contexto da disciplina de Desenvolvimento Avançado de Software e reaproveitado nesta disciplina.
Definições, Acrônimos e Abreviações
[editar | editar código-fonte]Gerência de mudanças: O objetivo da gerência de mudanças é assegurar o tratamento sistemático e padronizado de todas as mudanças que ocorram no ambiente operacional, minimizando, assim, os impactos decorrentes de incidentes e problemas relacionados com essas mudanças na qualidade do serviço. Dessa forma, melhora a rotina operacional da organização. [2]
Visão Geral
[editar | editar código-fonte]Este documento está em constante evolução e está dividido em 5 sessões. A sessão "Gerenciamento de Configuração de Software" apresenta como os integrantes serão organizados e suas responsabilidades e as ferramentas e a infraestrutura utilizada. A sessão "O Programa de Gerenciamento de Configuração" apresenta como controlar e entender as siglas utilizadas nas mudanças e as baselines definidas para o projeto. A sessão "Marcos" apresenta quais foram os marcos definidos e suas respectivas datas. A sessão "Treinamento e Recursos" apresenta quais os treinamentos necessários pela equipe para desenvolver o projeto e a sessão "Referências" apresenta uma lista com o referencial teórico utilizado durante todo o projeto.
O Repositório no GitHub
[editar | editar código-fonte]https://github.com/caiquepereira/wikilegis-gcs
Tutorial de Utilização do Software Sem Utilizar a Ferramenta Vagrant
[editar | editar código-fonte]Passo a Passo:
Passo 1: Clonar o Projeto no Github
Passo 2: Instalar e ativar o ambiente virtual[3]
$ pip install virtualenv
$ virtualenv venv --distribute
$ virtualenv venv --distribute --system-site-packages --python=/usr/bin/python2.7
$ source venv/bin/activate
Passo 3: Instalar os softwares necessários:
- pip install -r requirements.txt
Passo 4: Executar os os comandos:
- $ python manage.py migrate
- $ ./manage.py createsuperuser
- $ python manage.y runserver
Feito isso, siga os comandos que o terminal vai apresentar para acessar o projeto via navegador.
Tutorial de Utilização do Software Com a Ferramenta Vagrant
[editar | editar código-fonte]Passo a Passo:
Passo 1: Instalação da Ferramenta Vagrant
- $ sudo apt-get install virtualbox
- $ sudo apt-get install vagrant
- $ sudo apt-get install virtualbox-dkms
- $ vagrant box add precise32 http://files.vagrantup.com/precise32.box
Passo 2: Acessar o ambiente do Vagrant
- $ vagrant up
- $vagrant ssh
- cd /vagrant/wikilegis-gcs
Passo 3: Instalar os softwares necessários:
- pip install -r requirements.txt
Passo 4: Executar os os comandos:
- $ python manage.py migrate
- $ ./manage.py createsuperuser
- $ python manage.y runserver 0.0.0.0:8000
Feito isso, siga os comandos que o terminal vai apresentar para acessar o projeto via navegador através do endereço:
Tutorial de Criação do Empacotamento via RPM
[editar | editar código-fonte]Passo a Passo: [4]
Passo 0: Instalar o SO Fedora (ou algum SO com base RedHat)
Passo 1: Instalação das Ferramentas RPM
- # dnf install rpmbuild
Passo 2: Criação da estrutura básica
- $ rpmdev-setuptree
Passo 3: Clonar o repositório e utilizar o comando archiver
- $ git clone https://github.com/caiquepereira/wikilegis-gcs.git
- git archive --format=tar.gz --prefix=wikilegis-1-1/ master > wikilegis-1-1.tar.gz
Passo 4: Mover o arquivo .tar.gz criado para a pasta de sources
- $ mv wikilegis-gcs/wikilegis-1-1.tar.gz rpmbuild/SOURCES/
Passo 5: Criar o arquivo SPEC
- $ touch rpmbuild/SPECS/wikilegis.spec
Passo 6: Crie o arquivo rpm rodando pelo terminal
- $ rpmbuild -ba rpmbuild/SPECS/wikilegis.spec
Passo 7: (Opcional) Limpar o cache do pip
- Durante a instalação vários software são instalados, limpar o cache do pip caso ocorra algum problema então executar o passo 6 novamente
- $ rm -rf ~/.cache/pip
Passo 8: Verificando o pacote
- $ rpm-Vp rpmbuild/RPMS/x86_64/wikilegis-1-1.x86_64.rpm
Feito isso, o ambiente já estará configurado, basta executar os comandos:
- $ ./manage.py migrate
- $ ./manage.py createsuperuser
- $ ./manage.py runserver
Código spec final do Wikilegis:
%define debug_package % {nil} %define name wikilegis %define version 1 %define release 1 Summary: Analise os projetos de lei e contribua com sugestões de nova redação a artigos ou parágrafos. Os deputados relatores das proposições acompanham as participações e podem adotar a sua ideia Name: %{name} Version: %{version} Release: %{release} License: OpenSource Group: Applications/Internet Source: %{name}-%{version}.tar.gz URL: http://wikilegis.labhackercd.net Packager: Caique Pereira <caiquepereira@gmail.com>, Euler Carvalho <tiagobrasil2005@yahoo.com.br> %description Analise os projetos de lei e contribua com sugestões de nova redação a artigos ou parágrafos. Os deputados relatores das proposições acompanham as participações e podem adotar a sua ideia! Nessa interação, ganha a sociedade, que participa mais ativamente do processo legislativo, e ganha o Parlamento, que aprova leis mais aprimoradas e conectadas às necessidades dos cidadãos. %prep pwd if [ -d $RPM_BUILD_ROOT/SOURCES/wikilegis-1 ]; then echo "Cleaning out stale build directory" rm -rf $RPM_BUILD_ROOT/SOURCES/wikilegis-1 fi %install sudo dnf -y install git sudo dnf -y install python-pip sudo dnf -y install gcc-c++ sudo dnf -y install python-devel sudo pip install libsass sudo dnf -y install libjpeg-devel sudo dnf -y install zlib-devel sudo pip install Pillow cd wikilegis-1-1/ sudo pip install -r requirements.txt ./manage.py migrate %clean rm -rf $RPM_BUILD_ROOT %files / %changelog * Tue Jul 28 2016 GCS <tiagobrasil2005@yahoo.com.br> - 1-1 - Version 1.0 - Create Spec File and package the project to .rpm
No início do arquivo, podem ser definidas constantes. Depois, os dados do sistema são especificados: sumário, nome, versão, release, licença, grupo, fonte, url e empacotadores.
Explicando cada seção do arquivo spec:
- %description: Descrição do sistema que está sendo empacotado.
- %prep: É a parte da preparação da build onde os arquivos são descompactados.
- %clean: Limpa a árvore de diretórios da build, $RPM_BUILD_ROOT.
- %files: Lista de arquivos que estarão no pacote.
- %changelog: Lista de mudanças que aconteceram de uma versão para outra de um pacote. Ex: Novas funcionalidades, bugs, etc.
Gerenciamento de Configuração de Software
[editar | editar código-fonte]Organização, Responsabilidades e Interfaces
[editar | editar código-fonte]A equipe é formada pelos alunos Caíque de Paula Pereira e Euler Tiago Rodrigues de Carvalho. Ambos farão os mesmos papéis, todos os papéis previstos para uma Gerência de Configuração de Software, como gerente de controle mudanças, gerente de configuração. Além disso, toda a equipe participará da elaboração do Plano de Gerência de Configuração de Software, configurar o ambiente de gerência de configuração, atualizar Wiki, entre outros.
Ferramentas, Ambiente e Infra-estrutura
[editar | editar código-fonte]Gerência de Configuração | |
---|---|
Ferramenta | Descrição |
Vagrant | Vagrant é uma ferramenta para construir ambientes completos de desenvolvimento. |
Github | É um serviço de web hosting compartilhado para o controle de versionamento Git em projetos. |
MAC OS X 10.11 | Sistema operacional da Apple OS X El Capitan |
O Programa de Gerenciamento de Configuração
[editar | editar código-fonte]Identificação da Configuração
[editar | editar código-fonte]Métodos de Identificação
[editar | editar código-fonte]A forma de identificação dos artefatos do projeto devem ser dadas da seguinte maneira:
- Formato: WIKILEGIS-SIGLA.pdf
- Por exemplo: WIKILEGIS-PGC.pdf
Segue abaixo o significado das siglas:
- PGC: Plano de Gerência de Configuração
- RF: Relatório Final
Controle de Configuração e Mudança
[editar | editar código-fonte]O controle de mudanças será feito por meio da ferramenta Github.
- Issues
Representação das tarefas a serem desenvolvidas ao longo do projeto. Cada tarefa de agregar um valor significativo ao projeto. Devem ser levantadas inicialmente, mas com o tempo novas podem ser adicionadas.
- Branch
É uma ramificação do código. As branchs devem ser criadas de acordo com cada funcionalidade nova.
Integração Contínua
[editar | editar código-fonte]Utilização da ferramenta TRAVIS CI. [5]
Passo 1: Entre no Travis CI com sua conta do Github.
Passo 2: Habilite as builds do Travis para seu repositório em seu perfil.
Passo 3: Crie um arquivo .travis.yml que diz o quê o Travis deve fazer:
language: python
python:
- "2.7"
env:
- DJANGO=1.8.4 MIGRATE='./manage.py migrate'
script:
- python manage.py migrate
# command to install dependencies
install:
- pip install -r requirements.txt
- pip install coveralls
# command to run tests
script:
- coverage run manage.py test wikilegis/ -v 2
after_success:
- coveralls
O código acima é referente a integração contínua do Wikilegis com Travis CI.
Passo 4: Dê um novo commit e confira se a build passa com sucesso.
Marcos
[editar | editar código-fonte]Marcos do Projeto
[editar | editar código-fonte]Marcos | Atividade | Data Final |
---|---|---|
Marco 0 | Integração Contínua Utilizando a Ferramenta TRAVIS CI* | 11/05/2016 |
Marco 1 | Definição da Gerência de Mudanças | 11/05/2016 |
Marco 2 | Configurar ambiente de desenvolvimento com o Vagrant | 25/05/2016 |
Marco 3 | Empacotar o Wikilegis para ambiente de produção | 15/06/2016 |
Datas da disciplina
[editar | editar código-fonte]Atividade | Data |
---|---|
Entrega do Plano de Gerência de Configuração | 27/04/2016 |
Apresentação de andamento do projeto | 08/06/2016 |
Apresentação final do projeto | 11/07/2016 |
Andamento do Projeto | Status |
---|---|
Definição dos paramentos para Gerencia de Mudancas | Feito |
Configurar o Ambiente de Desenvolvimento utilizando a Ferramenta Vagrant | Feito |
Empacotar o Projeto Wikilegis para o Ambiente de Produção | Feito |
* A configuração da ferramenta TRAVIS CI para auxiliar na integração contínua foi feita no contexto da disciplina de Desenvolvimento Avançado de Software, e foi reaproveitada nessa disciplina.
Treinamento e Recursos
[editar | editar código-fonte]Os conhecimentos necessários serão desenvolvidos tanto em classe quanto extra classe. A disciplina de Gerência de Configuração de Software irá guiar alguns aspectos de GSC e a disciplina de Desenvolvimento Avançado de Software irá auxiliar no domínio do projeto como um todo, da linguagem, etc. E, também o desenvolvimento fora dessas duas disciplinas.
Referências
[editar | editar código-fonte][1] Site Official Wikilegis. Disponível em: <http://wikilegis.labhackercd.net/about/>. Acesso em: 26/04/2016
[2] Referência para criação do Plano. Disponível em: <http://www.teleco.com.br/tutoriais/tutorialgermud/pagina_2.asp>. Acesso em: 26/04/2016
[3] Tutorial de Instalação do Ambiente Virtual. Disponível em: <http://sourabhbajaj.com/mac-setup/Python/virtualenv.html>. Acesso em: 07/06/2016
[4] Empacotamento - RPM. Disponível em: <Empacotamento - RPM> e <https://fedoraproject.org/wiki/How_to_create_an_RPM_package/pt>. Acesso em: 27/06/2016
[5] Tutorial do Travis CI. Disponível em: <https://docs.travis-ci.com/user/for-beginners>. Acesso em: 27/06/2016