Introdução editar

O intuito desta página é trazer informações sobre o que será feito a respeito do sistema de gerenciamento e configuração do EmerGO, com as motivações e definições do projeto.

Visão Geral do Projeto editar

O EmerGO é um aplicativo que visa agilizar o processo de se buscar ajuda ou encontrar o hospital mais próximo, com o objetivo de auxiliar usuários em situação de emergência. Este aplicativo liga automaticamente para o SAMU se o caso for de extrema urgência.

O aplicativo também organiza todas as Unidades de Saúde do DF para que o usuário possa pesquisar as informações que deseja em um só aplicativo, otimizando seu tempo de pesquisa. É um dispositivo em linguagem de programação Android.

As ferramentas utilizadas no desenvolvimento do produto foram:

  • Android Studio
  • Firebase

A url do repositório oficial do EmerGO: https://github.com/fga-gpp-mds/2016.1-Emergo

Gerenciamento de Configuração de Software editar

Escopo editar

Os objetivos que definem o escopo são:

  • Integração Contínua
  • Levantamento automatizado de ambiente

Integração Contínua editar

A integração contínua é um termo originado na metodologia ágil XP e utilizado em diversas metodologias, consistindo em algo simples: o desenvolvedor integra o código alterado e/ou desenvolvido ao projeto principal na mesma frequência com que as funcionalidades são desenvolvidas, sendo feito muitas vezes ao dia ao invés de apenas uma vez. O objetivo principal de utilizar a integração contínua é verificar se as alterações ou novas funcionalidades não criaram novos defeitos no projeto já existente. A prática da integração contínua pode ser feita através de processos manuais ou automatizados.

Ferramenta utilizada: Travis CI

Levantamento automatizado de ambiente editar

Com a criação de um arquivo que se executado baixa todas as as dependências e ferramentas necessárias a se rodar o projeto EmerGo, se facilita aos desenvolvedores que queiram contribuir com o projeto.

Ferramenta utilizada: Arquivo Shell Script

Ferramentas e Infraestrutura editar

Cronograma / Marcos do Projeto editar

Ferramenta Objetivo Disponível em
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.com/
Data Atividade
26/09 Criação do plano
27/09 - 03/10 Configuração do ambiente para projeto
04/10 - 10/10 Realizar integração contínua com Travis CI
11/10 - 17/10 Iniciar configurações do ambiente
18/10 - 24/10 Ambiente automatizado
25/10 - 31/10 Iniciar Apresentação do projeto
1/11 - 20/11 Revisar estrutura do plano e entregáveis
05/12 Apresentação final

Resultados editar

Integração Contínua editar

A integração continua foi realizada com a combinação entre o GitHub e o Travis CI de maneira simples e prática. Os passos necessários para a realização se dão somente com a criação um arquivo .yml, feito na própria página do GitHub a partir das configurações necessárias. A partir de um commit a integração contínua se implementa.

O arquivo  .travis.yml ficou configurado da seguinte forma:

before_script:
 
language: android
jdk: oraclejdk8
sudo: require

env:
  global:
    # wait up to 20 minutes for adb to connect to emulator
    - ADB_INSTALL_TIMEOUT=20

android:
  components:
    - platform-tools		
    - tools
    - build-tools-23.0.3
    - android-22
    - android-23
    - sys-img-armeabi-v7a-android-23
    - extra-android-m2repository
    - compile 'com.google.android.gms:play-services:8.4.0'
    - compile 'com.firebase:firebase-client-android:2.5.2'

before_script:
  # Create and start emulator
  - echo no | android create avd --force -n test -t android-23 --abi armeabi-v7a 
  - emulator -avd test -no-skin -no-audio -no-window &
  - travis_wait 20 chmod +x ./gradlew
  - chmod 777 .buildscript/launchInstrumentationTests.sh
  - android-wait-for-emulator
  - adb shell input keyevent 82 &



script:
  - ./gradlew assembleDebug -PdisablePreDex
  - ./gradlew assembleAndroidTest -PdisablePreDex
  - ./gradlew build connectedCheck
  - adb devices
  - adb install -r app/build/outputs/apk/app-debug.apk
  - adb install -r app/build/outputs/apk/app-debug-androidTest-unaligned.apk
  - ./gradlew check -PdisablePreDex --continue --stacktrace

after_success:
  - ./gradlew jacocoFullReport
  - pip install --user codecov
  - codecov
  - bash <(curl -s https://codecov.io/bash)


after_failure:
  - wget http://imgur.com/tools/imgurbash.sh
  - chmod a+x imgurbash.sh
  - adb shell screencap -p | sed 's/\r$//' &gt; screen.png
  - ./imgurbash.sh screen.png
  - pandoc builder/build/reports/tests/index.html -t plain | sed -n '/^Failed tests/,/default-package/p'
Contact GitHub API Training Shop Blog About

Levantamento de Ambiente Automatizado editar

Como dito anteriomente, o levantamento automatizado de ambiente foi feito a partir de um arquivo shell script com todas as configurações necessárias para que o ambiente do EmerGo fosse instalado. Desta forma, o arquivo contem todas as dependências, e pacotes necessários com encaminhamentos aos respectivos repositórios. São eles: Java 8, Android e Android Studio.

O arquivo  .setup-env-ubuntu-16.sh ficou configurado da seguinte forma:

#!/bin/bash

echo "Ubuntu 16.04"
echo "Setting up the development environment"
sleep 1

echo "Enter your password"
sudo apt-get update
echo "Checking if java is installed"
pacote=$(dpkg --get-selections | grep oracle-java8-set-default)
sleep 2
if [ -n "$pacote" ] ;
then echo
     echo "Package already installed"
else echo
     sudo add-apt-repository ppa:webupd8team/java
     echo "Setting up the J environment"
     sudo apt install oracle-java8-installer
     sudo update-alternatives --config java
     echo "export JAVA_HOME=\"/usr/lib/jvm/java-8-oracle\"" >> ~/.bashrc
     source ~/.bashrc
     echo "JAVA_HOME: $JAVA_HOME"
fi

echo "Checking if android studio is installed"
pacote=$(dpkg --get-selections | grep android-studio)
sleep 2
if [ -n "$pacote" ] ;
then echo
     echo "Package already installed"
else echo
     
	echo "Downloading Android Studio"
	echo "Setting up android environment"
	sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
	sudo add-apt-repository ppa:paolorotolo/android-studio
	sudo apt-get update
	sudo apt-get install oracle-java8-installer 
	sudo apt-get install android-studio
	echo "Creating shortcut to desktop"
	echo -e "[Desktop Entry]\nVersion=1.0\nType=Application\nName=Android Studio\nExec='/opt/android-studio/bin/studio.sh' %f\nIcon=/opt/android-studio/bin/studio.png\nCategories=Development;IDE;\nTerminal=false\nStartupNotify=true\nStartupWMClass=android-studio" >> ~/.local/share/applications/androidstudio.desktop

fi