Atendimento

Fonte: Wikiversidade
Saltar para a navegação Saltar para a pesquisa

Documento criado por Fillipe Feitosa e Luciano Almeida

Introdução[editar | editar código-fonte]

Propósito[editar | editar código-fonte]

Esse 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[editar | editar código-fonte]

O 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[editar | editar código-fonte]

Termo 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[editar | editar código-fonte]

Link do projeto - https://github.com/interlegis/atendimento

Gerenciamento de Configuração de Software[editar | editar código-fonte]

Objetivos[editar | editar código-fonte]

Com 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[editar | editar código-fonte]

A 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[editar | editar código-fonte]

Para 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[editar | editar código-fonte]

Para 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[editar | editar código-fonte]

Responsá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[editar | editar código-fonte]

Ferramenta 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[editar | editar código-fonte]

Para 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.

 1 language: python 
 2 sudo: required
 3 
 4 python:
 5   - "3.4.3"
 6 
 7 services:
 8   - postgresql
 9 
10 addons:
11   postgresql: "9.3"

A instalação das dependências vem em seguida:

13 install:
14   - 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
15   - sudo ln -s /usr/bin/node
16   - pip install -r requirements/dev-requirements.txt
17   - 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:

19 before_script:
20   - sudo /etc/init.d/postgresql stop
21   - sudo cp /etc/postgresql/9.2/main/pg_hba.conf ./
22   - sudo apt-get remove postgresql postgresql-9.2 -qq --purge
23   - source /etc/lsb-release
24   - echo "deb http://apt.postgresql.org/pub/repos/apt/ $DISTRIB_CODENAME-pgdg main" > pgdg.list
25   - sudo mv pgdg.list /etc/apt/sources.list.d/
26   - wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
27   - sudo apt-get update
28   - sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" install postgresql-9.3 postgresql-contrib-9.3 -qq
29   - sudo /etc/init.d/postgresql stop
30   - sudo cp ./pg_hba.conf /etc/postgresql/9.3/main
31   - sudo /etc/init.d/postgresql start
32   - npm install -g bower
33   - cp .env_dev .env
34   - sed -i -e 's/getpass.getuser()/"postgres"/g' atendimento/settings.py
35   - 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.

37 script:
38   - ./manage.py migrate
39   - ./manage.py bower install
40   - ./test_and_check_qa.sh

Configuração Vagrant/Puppet[editar | editar código-fonte]

Vagrant[editar | editar código-fonte]

Para 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 | editar código-fonte]

  • Crie as seguintes pastas na pasta puppet do HOST
    • files
    • manifests
    • modules

Cronograma[editar | editar código-fonte]

Data 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