SisGP
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]- Registre-se no Travis CI sincronizando a conta do GitHub e o Travis receberá as informações dos seus repositórios.
- Acesse a página https://travis-ci.org/profile/;
- Selecione o seu repositório;
- 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/
- Instale o Heroku
$ wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
- Faça Login
$ heroku login
Enter your Heroku credentials.
Email: adam@example.com
Password (typing will be hidden):
Authentication successful.
- 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
- 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.
- Instale o TravisCI na sua máquina
$ gem install travis
- Rode o comando para gerar a chave de segurança do git:
$ travis encrypt $(heroku auth:token) --add deploy.api_key
- 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=