Wikilegis

Fonte: Wikiversidade

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

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