Saltar para o conteúdo

Mapas Observatório LGBT

Fonte: Wikiversidade

O Observatório da Política Nacional de Saúde Integral LGBT (Observatório da Saúde LGBT) tem por finalidade gerar informações e conhecimento sobre as principais características que constituem a realidade da Política Nacional de Saúde Integral da População LGBT no âmbito do SUS, constituindo um banco de dados que é ampliado e qualificado gradativamente.[1]

O mapa das redes foi desenvolvido pela equipe do Observatório da Saúde LGBT no intuito de mapear as redes de ativismo, ação, pesquisa, publicação, acesso e acolhimento da população LGBT no serviço de saúde. A metodologia proposta é de que a rede seja auto referenciada, e que as pessoas e instituições apoiem a sua construção com questões referentes aos diversos temas pertinentes a garantia e a expansão de direitos. [2]

O Plano de Gerenciamento de Configuração de Software tem como finalidade descrever as atividades que serão executadas durante o projeto no que tange o controle de configuração e mudanças do Mapa das Redes do Observatório da Saúde LGBT. O plano apresenta o cronograma de atividades, as responsabilidades dos membros do projeto e os recursos necessários para a execução do mesmo.

O projeto foi desenvolvido em Ruby on Rails e, atualmente, está disponível em um repositório no GitHub com licença GPL3. As melhorias propostas para serem desenvolvidas no projeto são:

  • Integração Contínua com GitLab CI
  • Ambiente de Desenvolvimento com Vagrant
  • Empacotamento .deb

Repositório Git

[editar | editar código-fonte]

Mapa das Redes

Gerência de Configuração de Software

[editar | editar código-fonte]

Organização e Responsabilidades

[editar | editar código-fonte]
Papel Responsabilidade Responsável
Gestor de configuração do projeto Acompanha as alterações dos itens de configuração. Alex Alves, Vanessa Soares
Gestor de ferramentas de gerência de configuração de software Mantém a infraestrutura necessária para a gerência de configuração. Alex Alves, Vanessa Soares
Gestor de configuração de software Aprova e gerencia as atividades. Alex Alves, Vanessa Soares
Auditor de configuração de software Realiza as auditorias. Alex Alves, Vanessa Soares
Desenvolvedores Desenvolvem os itens de configuração que serão gerenciados. Alex Alves, Vanessa Soares


Ferramentas, Ambiente e Infraestrutura

[editar | editar código-fonte]
Ferramenta Função
Vagrant Criar e configurar ambientes de desenvolvimento leves, reprodutíveis e portateis
VirtualBox Criação de máquinas virtuais
Gitlab CI Serviço de integração contínua
Data Atividade
30/09 Planejamento do Projeto
04/10 Pesquisa e Estudo Integração Contínua
11/10 Configurar Integração Contínua
14/10 Pesquisa e estudo Vangrant
21/10 Configurar Ambiente de Desenvolvimento (Vagrant)
31/10 Andamento do Projeto
30/10 Pesquisa e estudo Empacotamento .deb
16/11 Empacotamento .deb
21/11 Apresentação Final

Relatório do Projeto

[editar | editar código-fonte]

Integração Contínua

[editar | editar código-fonte]

Para implementação da integração contínua optou-se pela adoção do Gitlab CI, serviço de integração contínua oferecido pelo próprio Gitlab, gerenciador de repositório onde o código do proejto está hospedado.

A configuração do serviço é simples e exige apenas a adição do arquivo .gitlab-ci.yml no diretório raiz do repositório então cada solicitação de merge ou push dispara seu pipeline CI. O arquivo .gitlab-ci.yml informa ao GitLab runner o que fazer. Por padrão, ele executa um pipeline com três etapas: create, test e deploy. Você não precisa usar todos os três estágios já que as etapas não implementadas são ignoradas [3].

Para o este projeto o arquivo foi configurao .gitlab-ci.yml da seguinte forma:

image: "ruby:2.3"

services:
  - postgres:latest

before_script:
  - gem install bundler  --no-ri --no-rdoc 
  - bundle install -j $(nproc) --path vendor
  - cp config/database.gitlab-ci.yml config/database.yml
 
rspec:
  script:
    - bundle exec rake db:setup RAILS_ENV=test
    - bundle exec rspec

Vagrant é uma ferramenta para construção de ambientes de desenvolvimento completos, com um fluxo de trabalho de fácil utilização e foco na automatização o Vagrant reduz o tempo de configuração do ambiente de desenvolvimento e resolve problemas de diferença de ambientes e máquinas para os desenvolvedores.

A instalação, configuração e o uso do Vagrant são simples.

Para instalação do Vagrant no Ubuntu, basta executar o comando:

  • $ sudo apt-get install vagrant
    

Após a instalação da ferramenta, deve-se navegar até o diretório do projeto e executar o comando:

$ vagrant init

Esse comando irá inicializar o Vagrant para o projeto, criando o arquivo de configuração Vagrantfile. É nesse arquivo onde se define detalhes da configuração da máquina virtual que será criada. O Vagrantfile criado para o projeto ficou com a seguinte estrutura:

Vagrant.configure("2") do |config|

  config.vm.box = "ubuntu/trusty64"
 
  config.vm.network "forwarded_port", guest: 3000, host: 3000
  
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
  end
  
  config.vm.provision :shell, path: "install-rvm.sh", args: "stable", privileged: false
  config.vm.provision :shell, path: "install-ruby.sh", args: "2.3.1", privileged: false
  config.vm.provision :shell, path: "install-ruby.sh", args: "2.3.1 rails haml", privileged: false
  config.vm.provision :shell, path: "install-postgresql.sh", args: "9.5.4", privileged: false

  config.vm.provision "shell", inline: <<-SHELL, privileged: false
    sudo apt-get update
    sudo apt-get install -y nodejs nodejs-legacy postgresql-common postgresql-9.5
    sudo apt-get install -y git curl automake build-essential bison
    sudo apt-get install -y libpq-dev libssl-dev libtool libcurl4-openssl-dev
    sudo apt-get install -y libyaml-dev libreadline-dev libxml2-dev libxslt1-dev
    sudo apt-get install -y libffi-dev libffi-dev libgdbm-dev libncurses5-dev
    sudo apt-get install -y libsqlite3-dev sqlite3 zlib1g-dev
    sudo apt-get install -y python-software-properties
    rvm default ruby-2.3.1
    gem install bundler
    gem install nokogiri -v '1.6.8'
    gem install rails
    sudo apt-get autoremove
    sudo apt-get autoclean
    sudo apt-get update
    cd /vagrant/
    bundle install
  SHELL
end

Nesse arquivo estão sendo feitas as seguintes definições:

  • Linha 3 define que o sistema a ser instalado na máquina virtual é o Ubuntu (Trusty) de 64 bits. O próprio Vagrant se encarrega de baixar a imagem e instalar o sistema definido.
  • Linha 16 define o tipo de provisionamento. Neste caso o provisionamento irá utilizar o SHELL.
  • Nas linhas 11 - 14 são os arquivos responsáveis pelos comando shell de instalação do ruby, rvm e do postgresql. Os scripts são apresentados em seguida

install-rvm.sh

#!/usr/bin/env bash
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s $1

install-ruby.sh

#!/usr/bin/env bash

source $HOME/.rvm/scripts/rvm

rvm use --default --install $1

shift

if (( $# ))
then gem install $@
fi

rvm cleanup all

install-postgresql.sh

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

Após definias essas configurações, o Vagrant está pronto para ser executado. Ao rodar o comando:

$ vagrant up

Esse comando irá criar toda a máquina virtual. Caso seja sua primeira execução, ele irá, inclusive, baixar a imagem do sistema. E também irá rodar o provisionamento, deixando o sistema totalmente configurado. Após a finalização do Vagrant Up, a máquina virtual já está inicializada, então deve-se rodar o comando:

$ vagrant ssh

Esse comando irá iniciar o shell da máquina virtual, e todos os comandos executados a partir desse momento serão feitos diretamente na máquina virtual.

Para o projeto, a pasta /vagrant da máquina virtual é uma pasta compartilhada com o sistema original, no caso, é a pasta raiz do projeto.

Empacotamento .deb

[editar | editar código-fonte]

O empacotamento .deb e a assinatura de pacote são atividades simples de serem executadas. Utilizando os pacotes rng-tools, dh-make, build-essential e devscripts.

Antes de começar o processo do empacotamento, foi criada uma chave para assinatura do pacote utilizando o rng-tools:

$ sudo apt-get install rng-tools

Após a instalação do programa, deve ser executado o comando:

$ sudo rngd -r /dev/urandom

E então, para gerar a chave:

$ gpg --gen-key

Nesse passo serão solicitadas ações para criação e configuração da chave.

Após a chave criada, deve-se começar o processo de empacotamento .deb.

O primeiro passo é criar um tarball da pasta do projeto, com o nome formatado no padrão <NOME DO PROJETO>_<VERSÃO>.orig.tar.gz. No momento da criação do pacote, o dh-make irá buscar por esse padrão de nomeclatura na pasta superior à pasta do projeto:

$ tar zcf mapa-observatorio-lgbt_1.0.orig.tar.gz mapa-observatorio-lgbt/

Então, deve-se entrar dentro da pasta do projeto e executar:

$ dh-make

Esse comando irá criar a pasta debian dentro do diretório do projeto. Neste passo, todos os arquivos dentro dessa pasta com a extensão .ex podem ser apagados pois são apenas de exemplo.

$ rm debian/*.{ex,EX}

O arquivo debian/control deve ser editado para preenchimento dos dados do projeto, lembrando de preencher as dependências do mesmo. E o arquivo debian/changelog deve ser preenchido com o nome e email exatamente iguais aos configurados no momento da criação da chave de assinatura:

mapa-observatorio-lgbt (1.0-1) unstable; urgency=medium

  * Initial release

 -- Alex Cortes Alves <alex.co.alves@gmail.com>  Thu, 24 Nov 2016 10:49:34 -0200

Antes da criação do pacote .deb, deve certificar que os pacotes de dependência do projeto estão instalados:

$ sudo apt install -y libmagick++-dev libsqlite3-dev libcurl3 libcurl3-gnutls libcurl4-openssl-dev

E, para finalizar, basta executar o seguinte comando, que irá ler os arquivos de configuração e gerar o .deb:

$ debuild
  1. http://observalgbt.unb.br/?page_id=55
  2. http://observalgbt.unb.br/?page_id=12
  3. https://docs.gitlab.com/ee/ci/quick_start/README.html