SisGP

Fonte: Wikiversidade

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

Este documento provê a visão geral do Gerenciamento e configuração, com finalidades, escopos e definições do projeto SisGP - Sistema Gerenciador de Processos, executado na disciplina de Gerência de Configuração de Software.

Finalidade[editar | editar código-fonte]

A finalidade deste documento é criar um gerênciamento e configuração para o Software denomidado SisGP, o qual possui a licença AGPL v3, e portanto, facilitar a vida de todos os outros usuários que venham a usufruir da ferramenta, ou que até mesmo desejam colaborar com a mesma.

Visão Geral do Projeto[editar | editar código-fonte]

SisGP: Sistema gerenciador de Processos no qual o usuário poderá administrar todos os seus processos, delimitar atividades e responsáveis, colocar o processo em um projeto e alocar vários projetos à um portfólio. É possivel também, adicionar vários donos ao seu projeto, fazendo assim um sub-time, ou seja, é uma aplicação de gerenciamento de afazeres com suas relações principais, como data limite, dono de atividade, etc.

A url do repositório oficial do SisGP: https://github.com/DesenhoDeSofwareUNB/SisGP

A URL que está sendo aplicada o GCS é o próprio repositório oficial, pois possuímos total acesso.

Planejamento de GCS[editar | editar código-fonte]

Papeis e responsabilidades[editar | editar código-fonte]

Papel Nome Responsabilidade
Gerente de Configuração Rafael Akiyoshi Assegurar todos as competências em escopo, previstas neste plano, sejam realizadas, Garantir o cumprimento das atividades previstas para a realização da gerência de configuração.

Escopo[editar | editar código-fonte]

Como objetivos deste trabalho, foram definidas as seguintes contribuições:

  • Realização de integração contínua
  • Realização de deploy contínuo
  • dockerfile para conteinirização
  • Empacotamento .deb


Ferramentas e Infraestrutura[editar | editar código-fonte]

Ferramenta Objetivo Disponível em
Heroku Ferramenta na qual é possível fazer o deploy automatizado. https://www.heroku.com/
GitHub Sistema para realização do controle de versão https://github.com/
Travis CI Serviço gratuito de integração contínua que será integrado ao GitHub https://travis-ci.org/
Docker Servico de conteinirização de aplicações https://docker.com

Cronograma / Marcos do Projeto[editar | editar código-fonte]

Data Atividade
26/09 Plano de GCS
27/09 - 03/10 Configuração do ambiente para projeto
04/10 - 10/10 Realizar integração contínua com travis Primeira Baseline
11/10 - 17/10 Iniciar configurações de Deploy
18/10 - 24/10 Realizar deploy automatizado com Heroku e docker Segunda Baseline
25/10 - 31/10 Iniciar Apresentação do projeto
1/11 - 15/11 Realizar empacotamento .deb Terceira Baseline
16/11 - 20/11 Revisar estrutura do plano de GCS e entregáveis (integração contínua, deploy automatizado, empacotamento)
21/11 Apresentação final do Projeto


Gerência de Configuração[editar | editar código-fonte]

Gerando e rodando o Container com Docker[editar | editar código-fonte]

Para gerar o container do projeto, basta acessar o repositório em: https://github.com/DaniloBarros/SisGP e baixá-lo. Irá conter o arquivo Dockerfile.


FROM ruby:2.3

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
            postgresql-client \
                && rm -rf /var/lib/apt/lists/*

RUN mkdir /sisgp
WORKDIR /sisgp
COPY Gemfile /sisgp/Gemfile
COPY Gemfile.lock /sisgp/Gemfile.lock
RUN bundle install
ADD . /sisgp

Agora, deve-se rodar o container com o comando abaixo: PS: é necessario ter permissão (root)

$ docker build -t my-rails-app .

Após bem sucedido, aparecerá o seguinte:

ending build context to Docker daemon 23.17 MB
Step 1 : FROM ruby:2.3
 ---> d0f948bdaa95
Step 2 : RUN apt-get update     && apt-get install -y --no-install-recommends             postgresql-client                 && rm -rf /var/lib/apt/lists/*
 ---> Using cache
 ---> e87136d26c0f
Step 3 : RUN mkdir /sisgp
 ---> Using cache
 ---> 191f2ca3bbbd
Step 4 : WORKDIR /sisgp
 ---> Using cache
 ---> cf89aa4de4f2
Step 5 : COPY Gemfile /sisgp/Gemfile
 ---> Using cache
 ---> eb9187ed2905
Step 6 : COPY Gemfile.lock /sisgp/Gemfile.lock
 ---> Using cache
 ---> de7cda5d0002
Step 7 : RUN bundle install
 ---> Using cache
 ---> ec4704647fee
Step 8 : ADD . /sisgp
 ---> 3e99d74db0b5
Removing intermediate container 86ee83d68a60
Successfully built 3e99d74db0b5

Agora, é necessário rodar o comando abaixo:

$ docker run --name some-rails-app -d my-rails-app

Tratando outras dependencias da aplicação com Docker[editar | editar código-fonte]

Após isso, caso seja necessário gerenciar outras dependencias, como por exemplo postgres, basta gerar o arquivo docker-compose.yml

version: '2'
services:
  db:
    image: postgres:9.4.1
    ports:
      - "5432:5432"

  web:
    build: .
    command: bin/rails server --port 3000 --binding 0.0.0.0
    ports:
      - "3000:3000"
    links:
      - db
    volumes:
      - .:/myapp

e para rodar, use o comando:

$ docker-compose build

Travis[editar | editar código-fonte]

O travis CI é uma aplicação web que possibilida geral builds estáveis do seu software, mantendo o sua build o mais estável possivel. É possível alterar o comportamente esperado do travis através do arquivo denominado "travis.yml" que se encontra no repositório do projeto.

Passo-a-passo[editar | editar código-fonte]

  1. Registre-se no Travis CI sincronizando a conta do GitHub e o Travis receberá as informações dos seus repositórios.
  2. Acesse a página https://travis-ci.org/profile/;
  3. Selecione o seu repositório;
  4. Adicione um arquivo .travis.yml ao repositório. Este arquivo contém as informações sobre como realizar a build. É preciso commitar e dar push para que o Travis CI realize o build;

Travis.yml do Projeto[editar | editar código-fonte]

language: ruby
services:
- postgresql
before_install:
- psql -c 'create database travis_ci_test;' -U postgres
script:
- bundle exec spring binstub --all
- bundle install
- bundle exec rake spec
rvm:
- 2.2.3
notifications:
  email:
    recipients:
    - dan.b412@gmail.com
    - rafael.akiyoshi@gmail.com
branches:
  only:
  - master
after_success:
- coveralls
deploy:
  provider: heroku
  api_key:
    secure: GfbjMSOBWQNfW35sJW7XM/SR/98SXmlV6jHKipGgKvcE4LBe0ODLa8C7emm/URdxMPC3YFm341M+dddcz3P6/6GGG/6/Ispxt5G8PmKjQyrDgsLG/nNl+fDLsFgQI7r4L55xHm6mBdf4sf58rylaCLh+l26R2uD1/npcaRPRnp8UjjE8wykbqWT7dpZlcHIqDdG2c5PeLxjPgNgdibeWkJFtKY6dSqLczGENwkqwIDYstNoGgKtMOojRLnD3PMC/g5pHeKhSPSShX3IqF+fLBAvSV+CTGGrPG793yk35Dwb6hHaBplEdfyNXig2NzLhluss1b89KJ5ZR0LfLsDA5zT/EudpXuWJSGdxWYfWdKHONuTDlOV6PNPnAKUZoxqhmvLfb+bqz9Y2VSXU3aNvMDtt+m/N1Xv1v/oTcLX4F9XuK6AKfRuOthmWb3XmlhcU5uuiFI5MBBpvK3UxwarOd22q+N/gksmo8lT0cOIJ8clA4qDqa/rZu1052guqkvRkrJDRXDd8011Hkoo3RyNcd2gonEOtcZE/QqAmwWmYVDZLCAd/YNKqagj8MBMvsTDhJrieJetBl4eNMkuE4SKHVEYzoh0S9eLYiakrrVzGLnQJ15bCOnkAI77B4MLjCW6+ZIMSiwMYv8DUXnMz2hdENJoO75eoBSDNYkgctoYX42xk=
  app: sisgp2
  on:
repo: DaniloBarros/SisGP

Deploy com Heroku[editar | editar código-fonte]

Heroku é uma plataforma em nuvem baseada em containers, com serviço de implantação e execução de aplicações web.

O deploy do projeto se encontra no endereço: https://sisgp2.herokuapp.com/

  1. Instale o Heroku
 $ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
  1. Faça Login
$  heroku login
Enter your Heroku credentials.
Email: adam@example.com
Password (typing will be hidden):
Authentication successful.
  1. Crie o aplicativo
$  heroku create
Creating app... done,  sleepy-meadow-81798
https://sleepy-meadow-81798.herokuapp.com/ | https://git.heroku.com/sleepy-meadow-81798.git
  1. Deploy
$ git push heroku master
Initializing repository, done.
updating 'refs/heads/master'
...

Deploy Contínuo Travis + Heroku[editar | editar código-fonte]

O Travis CI pode ser sincronizado com o Heroku, podendo resultar em um deploy a cada build sucedida.

para realizar tal procedimento, é necessário configurar o travis.yml para reconhecer o Heroku.

  1. Instale o TravisCI na sua máquina
$ gem install travis
  1. Rode o comando para gerar a chave de segurança do git:
$ travis encrypt $(heroku auth:token) --add deploy.api_key
  1. No travis.yml serão geradas automaticamente as linhas ao final do arquivo, como as mostradas acima, referentes ao projeto:
deploy:
  api_key:
    secure: K53yiEGH+8BXGTA1J8hZzb7U1fhinTiVt3Pi+ebRTHHq2nwzKd3/c1fB6szC64xTmRW3kFDjndWIBhTUopyl+lB+jowp3QA7GngTZDAQxT0wByMiXNd4yB4b0YKMuCzqVV/dz+UgONtV2Udq2F8if2HSAtHxn2VSFitBcDk2hLuWy3KpXF1x3+5sqgYGOVcVtjB5o5B8qKDa+hGzy0ncjFRgYygMkRd32tzSieHWJcyCAeQutfyZTa5wZqXhIRXn3T4EduJi1gJA1eS6BzycjduyagXOzK7bh0/Zx6XlsUkfvoqG/u71esQSk4TwGOsR35EFU/UxIVKUI+Teqqveo8A6qxOmtj2qcfg7VK/34maRUOzK+mTVTmlpQqPmhjgXpdYA9maTIx1wXm33r4WFybR1BC7DtnSoSus19MATiLxMX/hqpLlk5Ik1eMHc1RM+sTV7BFfUh6vcetjuFlUmaweb2oJG8510en7ajXBECp6t+lpWmXTSY8YsdEbmDeNaKzGdqEFW2iwlc17KSBs2XGkyoSRMBwu164JgI0Pw6qG68dhnmo6RRi7cuzUzsEAG2EF7kW8tS3rISigMbEcwEXyZ3s3fb26aD3YGhj9H/IkuW/X/0OCDIwAUePftzAxhNNW3R5RHZnKTz7I8tFgRp/C4dkeGOQVHoAfi+3v4TLk=