Mapas Observatório LGBT
Introdução
editarVisão Geral
editarO 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]
Propósito
editarO 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.
Escopo
editarO 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
editarGerência de Configuração de Software
editarOrganização e Responsabilidades
editarPapel | 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
editarFerramenta | 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 |
Cronograma
editarData | 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
editarIntegração Contínua
editarPara 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
editarVagrant é 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
editarO 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