Atendimento
Documento criado por Fillipe Feitosa e Luciano Almeida
Introdução
editarPropósito
editarEsse documento descreverá como será feita a Gerência da Configuração e Mudança do projeto Sistema de Atendimento a Usuários Externos (SAUE) do Interlegis. Atualmente no Interlegis existe um software de criação de tickets de suporte à informação, mas este não está sendo mantido e está ficando obsoleto, pois são pouco usados. O Sistema de Atendimento a Usuário Externo propõe substituir algumas funcionalidades mais simples e necessárias, mantendo uma interface amigável para usuários leigos e substituindo esse sistema antigo.
Escopo
editarO plano descrito neste documento será aplicado no SAUE e tem como objetivo elaborar uma proposta de implementação e utilização da integração contínua para a equipe técnica responsável, que atualmente praticamente não existe. A necessidade de criação de um ambiente de desenvolvimento também se faz necessária para minimizar problemas de dependências, testes e pequenos bugs de ambiente.
Atualmente o projeto utiliza o git como controle de versão e está hospedado no site github.com.
Definições, Abreviações e Acrônimos
editarTermo | Significado |
---|---|
SAUE | Sistema de Atendimento a Usuários Externos |
Build | Versão Estável de Software |
Commit | Contribuição atômica num projeto de software |
Links importantes
editarLink do projeto - https://github.com/interlegis/atendimento
Gerenciamento de Configuração de Software
editarObjetivos
editarCom o intuito de facilitar a vida e o trabalho da equipe técnica responsável pelo SAUE, a equipe deste projeto estabeleceu três atividades principais como escopo para a disciplina de Gerência de Configuração de Software:
Integração Contínua - TravisCI
editarA primeira abordagem do grupo será implementar uma rotina de integração contínua para a criação de builds automatizadas. O objetivo principal desta atividade é reduzir o risco de disponibilizar uma versão de software com problemas de integração para o usuário final. Em termos técnicos, cada commit será verificado quando à consistência de suas dependências, bibliotecas e possivelmente testes.
Gerência de Configuração do Ambiente de Desenvolvimento - Vagrant/Puppet
editarPara diminuir o impacto dos problemas de configuração nas máquinas para a equipe técnica, tanto de novos quanto de antigos membros, será criado um ambiente de gerência de configuração do ambiente de desenvolvimento e do sistema operacional, com o objetivo de consolidar as ferramentas de trabalho e estabelecer um processo de desenvolvimento mais estável.
Elaboração de bateria de testes - Pytest
editarPara a ultima abordagem, o grupo pretende elaborar uma pequena rotina de testes usando a ferramenta pytest, para incluir nos testes de integração realizados pela ferramenta TravisCI. A aplicação dessa proposta dependerá da viabilidade de sua aplicação.
Papeis e Responsabilidades
editarResponsáveis pelo Plano de Gerência e Configuração e sua aplicação:
- Fillipe Feitosa - Configuração do ambiente de desenvolvimento.
- Luciano Almeida - Configuração dos serviços de integração contínua.
Ferramentas e Ambiente
editarFerramenta | Descrição |
---|---|
Puppet | Ferramenta para gerenciar a configuração de sistemas operacionais e dependências |
Vagrant | Ferramenta para configurar ambiente de trabalho virtual |
Travis CI | Ferramenta para integração contínua |
pytest | Ferramenta criação de testes em linguagem python |
Configuração Travis CI
editarPara começar a configurar o Travis CI, o arquivo .travis.yml foi criado na raíz do aplicativo. Nele foram definidos inicialmente: Linguagem do software e sua versão; sudo obrigatório para instalação de dependências e demais operações que necessitam de super usuário; e o processo do banco de dados, juntamente com sua versão.
language: python
sudo: required
python:
- "3.4.3"
services:
- postgresql
addons:
postgresql: "9.3"
A instalação das dependências vem em seguida:
install:
- sudo apt-get install git nginx python3-dev libpq-dev graphviz-dev graphviz pkg-config python-psycopg2 libz-dev libxft-dev libjpeg62 libjpeg-dev libfreetype6-dev python-dev python-psycopg2 nodejs npm
- sudo ln -s /usr/bin/node
- pip install -r requirements/dev-requirements.txt
- pip install --upgrade setuptools
Para a execução do banco de dados, foi necessário utilizar o seguinte código que é executado antes da migração e dos scripts de teste e de checagem de qualidade de código:
before_script:
- sudo /etc/init.d/postgresql stop
- sudo cp /etc/postgresql/9.2/main/pg_hba.conf ./
- sudo apt-get remove postgresql postgresql-9.2 -qq --purge
- source /etc/lsb-release
- echo "deb http://apt.postgresql.org/pub/repos/apt/ $DISTRIB_CODENAME-pgdg main" > pgdg.list
- sudo mv pgdg.list /etc/apt/sources.list.d/
- wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
- sudo apt-get update
- sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" install postgresql-9.3 postgresql-contrib-9.3 -qq
- sudo /etc/init.d/postgresql stop
- sudo cp ./pg_hba.conf /etc/postgresql/9.3/main
- sudo /etc/init.d/postgresql start
- npm install -g bower
- cp .env_dev .env
- sed -i -e 's/getpass.getuser()/"postgres"/g' atendimento/settings.py
- psql -c 'create database atendimento;' -U postgres
O código acima foi retirado do site: https://dockyard.com/blog/ruby/2013/03/29/running-postgresql-9-2-on-travis-ci
Em seguida, os scripts de migração e de teste são executados.
script:
- ./manage.py migrate
- ./manage.py bower install
- ./test_and_check_qa.sh
Configuração Vagrant/Puppet
editarVagrant
editarPara instalar e configurar o Vagrant siga os passos a seguir.
- Cria uma pasta puppet
- Garanta que você possui o dpkg e o virtualbox:
sudo apt-get install dpkg-dev virtualbox-dkms
- Faça o download da última versão do Vagrant no site oficial
sudo dpkg -i vagrant_<versão>.deb
- Para criar snapshots com o vagrant:
- vagrant plugin install vagrant-vbox-snapshot
- Crie uma pasta chamada puppet
- Crie um arquivo nessa pasta Vagrantfile
- Adicione esse trecho de código no arquivo:
Vagrant::Config.run do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.forward_port 80, 8080
end
- Para executar o Vagrant:
vagrant up
Puppet
editar- Crie as seguintes pastas na pasta puppet do HOST
- files
- manifests
- modules
Cronograma
editarData | Atividade |
---|---|
18/06 | Início da Elaboração do Projeto - Plano de GCS |
25/06 | Definição da Abordagem, tencologias |
08/06 | Configuração das ferramentas |
15/06 | Finalização do Travis - CI - Vagrant/Puppet. Análise de Viabilidade de Testes |
22/06 | Finalização da proposta de testes, integração com TravisCI |