GestorPsi

Fonte: Wikiversidade

Histórico de Versão[editar | editar código-fonte]

Data Versão Descrição Autor
01/05/2015 1.0 Criação do Documento Levi
10/05/2015 1.1 Réplica do Documento na Wiki Levi
16/06/2015 1.2 Inclusão do Documento nos repositórios Nicolas
17/06/2015 1.3 Revisão do Cronograma Nicolas e Levi
01/07/2015 1.4 Metodolgia Levi
01/07/2015 1.5 Inclusão na Metodologia Nicolas

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

O GestorPsi é um sistema desenvolvido desde 2004 pelo Instituto de Psicologia Comportamental de São Carlos. O principal diferencial do GestorPsi em relação a outros sistemas de prontuários eletrônicos é que esse sistema foi criado com base nas práticas e fluxos dos serviços de psicologia em diversas áreas e outros serviços ambulatoriais com objetivos de atender estas práticas profissionais e não se limitando a área da saúde. Esse documento visa formalizar o processo de gerenciamento de configuração para demais consultas. O documento esta dividido em 6 categorias, são elas: a própria Introdução, onde é apresentado uma visão geral do sistema. O gerenciamento de configuração visa descrever o ambiente que será utilizado para o documento. O programa de gerenciamento de configuração serve para descrever o ambiente mercadológico da ferramenta


Finalidade[editar | editar código-fonte]

O GestorPsi é um sistema desenvolvido desde 2004 pelo Instituto de Psicologia Comportamental de São Carlos. O principal diferencial do GestorPsi em relação a outros sistemas de prontuários eletrônicos é que esse sistema foi criado com base nas práticas e fluxos dos serviços de psicologia em diversas áreas e outros serviços ambulatoriais com objetivos de atender estas práticas profissionais e não se limitando a área da saúde. Esse documento visa formalizar o processo de gerenciamento de configuração para demais consultas. O documento esta dividido em 6 categorias, são elas: a própria Introdução, onde é apresentado uma visão geral do sistema. O gerenciamento de configuração visa descrever o ambiente que será utilizado para o documento. O programa de gerenciamento de configuração serve para descrever o ambiente mercadológico da ferramenta


Escopo[editar | editar código-fonte]

O trabalho é limitado pelo tempo, por isso não é possível implementar todas as melhorias que se deseja. Por esse motivo conversou-se com os atuais desenvolvedores do projeto na Faculdade Gama para escolher quais eram as principais necessidades do GestorPsi que estivessem de acordo com o nivel de maturidade da dupla. Definiu-se então que se deveria criar uma receita Chef para automatizar o processo de deploy e caso seja possível, melhorar o sistema de integração contínua

Organização/Responsabilidade[editar | editar código-fonte]

Responsável Atividade
Levi Moraes Implementar empacotamento da instalação utilizando .deb
Nicolas Boarin Configurar o Travis

Ferramentas, Ambiente e Infra-Estrutura[editar | editar código-fonte]

Ferramenta Descrição Versão
Chef Automatização na configuração de Ambientes 0.4.0
Vagrant Ambiente de desenvolvimento 1.7.2
Travis Ferramenta de integração continua X
Sublime Editor de Texto voltado para programação 3

O problema de gerenciamento de configuração[editar | editar código-fonte]

Controle de Configuração e Mudança[editar | editar código-fonte]

O trabalho é limitado pelo tempo, por isso não é possível implementar todas as melhorias que se deseja. Por esse motivo conversou-se com os atuais desenvolvedores do projeto na Faculdade Gama para escolher quais eram as principais necessidades do GestorPsi que estivessem de acordo com o nivel de maturidade da dupla. Definiu-se então que se deveria criar uma receita Chef para automatizar o processo de deploy e caso seja possível, melhorar o sistema de integração contínua

Marcos[editar | editar código-fonte]

Data Atividade Responsável
06/05 Entrega do Plano de GCS Levi
13/05 Instalação das Ferramentas Levi e Nicolas
20/05 Estudo sobre .deb e script de instalação Levi e Nicolas
27/05 Criação do .deb Levi
03/06 chef de deploy implementado Nicolas
10/06 Estudo sobre Travis Levi e Nicolas
17/06 Implementação do Travis com GestorPsi Nicolas
24/06 Gerar relatório / Prova 2 Levi e Nicolas
01/07 Apresentação Levi e Nicolas

Metodologia - Pacote (.deb)[editar | editar código-fonte]

Para criação do pacote debian criou-se um script shell como mostrado no código abaixo

#!/bin/bash
sudo apt-get install git
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
echo 'source `which virtualenvwrapper.sh`'
source $HOME/.bashrc
sudo pip install virtualenvwrapper
mkvirtualenv gestorpsi
pip install ipython flake8
git clone https://github.com/GestorPsi-MES-12015/gestorpsi.git
wget c758482.r82.cf2.rackcdn.com/sublime-text_build-3083_i386.deb
sudo dpkg -i sublime-text_build-3083_i386.deb

Feito o install.sh, utilizou-se o comando dh_make para criar os diretórios

$ dh_make

Com os diretórios criados alterou-se os arquivos Control, Rules, Copyright e Changelog deixando os da seguinte maneira:

Changelog

debinstalation-1.0 (1-1) unstable; urgency=low

  * Initial release (Closes: #nnnn)  <nnnn is the bug number of your ITP>

 -- Levi <levi@unknown>  Wed, 03 Jun 2015 02:28:45 -0300

Control

Source: debinstalation-1.0
Section: tools
Priority: optional
Maintainer: Levi <levi@unknown>
Build-Depends: debhelper (>= 9)
Standards-Version: 3.9.5
Homepage: https://gitlab.com/levimoraes/gestorpsi-chef
#Vcs-Git: git://anonscm.debian.org/collab-maint/debinstalation-1.0.git
#Vcs-Browser: http://anonscm.debian.org/?p=collab-maint/debinstalation-1.0.git;a=summary

Package: debinstalation-1.0
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: This Package server as support the installation of GestorPsi project 

Copyright

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: debinstalation-1.0
Source: <url://example.com>

Files: *
Copyright: <years> <put author's name and email here>
           <years> <likewise for another author>
License: <special license>
 <Put the license of the package here indented by 1 space>
 <This follows the format of Description: lines in control file>
 .
 <Including paragraphs>

# If you want to use GPL v2 or later for the /debian/* files use 
# the following clauses, or change it to suit. Delete these two lines
Files: debian/*
Copyright: 2015 Levi <levi@unknown>
License: GPL-2+
 This package is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
 .
 This package is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <http://www.gnu.org/licenses/>
 .
 On Debian systems, the complete text of the GNU General
 Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
# Please avoid to pick license terms that are more restrictive than the
# packaged work, as it may make Debian's contributions unacceptable upstream.

Rules

 #!/usr/bin/make -f
               %:
                       dh $@

               override_dh_fixperms:
                       dh_fixperms
                       chmod +x install.sh

Ao fim criou-se o .tar.gz do conteúdo com o comando:

$ tar -zcf debinstalation-1.0-1 meus_documentos/

Criou-se o pacote com o comando:

$ debuild -i -us -uc -b

e a instalação é feita com o comando:

$ fakeroot
$ dpkg -i debinstalation-1.0-1.deb

Metodologia - Integração Contínua (Travis)[editar | editar código-fonte]

Utilizando o serviço Travis-CI como ferramenta para o uso da integração contínua o primeiro passo é criar um arquivo ".travis.yml", neste caso podemos usar a linha de comando:

$ vim .travis.yml

Depois salve:

 :wq

O arquivo ".travis.yml" assim como o nome já fala será lido pelo Travis, ele conterá as informações básicas do seu código e informações que mostrem ao Travis e que parte do mesmo ele deverá ser testado para ver se a build realizada está correta ou errada. Assim inicialmente precisamos mostrar qual a linguagem que tal projeto foi feito, no caso do Gestorpsi: "Python".

language: python
python:
   - "2.7"

Agora a linguagem está selecionada, mas como a maioria dos códigos o Gestorpsi possui alguns requerimentos então para baixar essas "dependências" precisamos adicionar a linha "install" que serve justamente para baixar os requerimentos para gerar build do software:

install:
  - pip install -r requirements.txt

No caso o Gestorpsi irá usar 3 plug-ins para verificar o código:

  • Flake8: Um padrão para código em python para estilizar e facilitar o entendimento do código.
  • Coveralls: Um serviço de extensão que tem como base mostrar a quantidade de código coberto pelos testes.
  • UnitTest2: Utilizado para fazer os testes unitários.
  - pip install flake8 coveralls unittest2

Agora já tendo instalado o básico para seu programa funcionar, precisa-se de comandos de criação iniciais para que o sistema rode propriamente, no caso apontado temos a criação do database do sistema:

before_script:
  - mv gestorpsi/settings.py.TRAVIS gestorpsi/settings.py
  - mysqladmin create gpsi -u travis
  - python manage.py syncdb --noinput
  - python manage.py migrate

Nosso sistema já deve ser capaz de rodar, então nesta seção chamada "scripts" assim como o nome diz, iremos usar ela para ativar os testes dos pacotes que nós queremos:

script:
  - python manage.py test
  - python coverage run --source=gestorpsi manage.py test
  - flake8 gestorpsi

Por fim se o teste der certo, ele pode mostrar alguma mensagem, enviar e-mail para certas pessoas entre outras funcionalidades, no caso do GestorPsi ele irá ativar o coveralls para mostrar a cobertura:

after_success:
    - coveralls

Problemas Encontrados[editar | editar código-fonte]

Ao tentar instalar obteve-se a seguinte mensagem mostrada na imagem ao lado

erro ao usar o dpkg -i

Repositórios[editar | editar código-fonte]

Empacotamento .deb - https://gitlab.com/levimoraes/gestorpsi-chef

Integração continua utilizando o Travis e o Jenkins - https://github.com/niets/gestorpsi