GestorPsi
Histórico de Versão
editarData | 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
editarO 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
editarO 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
editarO 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
editarResponsável | Atividade |
---|---|
Levi Moraes | Implementar empacotamento da instalação utilizando .deb |
Nicolas Boarin | Configurar o Travis |
Ferramentas, Ambiente e Infra-Estrutura
editarFerramenta | 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
editarControle de Configuração e Mudança
editarO 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
editarData | 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)
editarPara 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)
editarUtilizando 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
editarAo tentar instalar obteve-se a seguinte mensagem mostrada na imagem ao lado
Repositórios
editarEmpacotamento .deb - https://gitlab.com/levimoraes/gestorpsi-chef
Integração continua utilizando o Travis e o Jenkins - https://github.com/niets/gestorpsi