Emergo

Fonte: Wikiversidade
Saltar para a navegação Saltar para a pesquisa

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

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 | editar código-fonte]

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 | editar código-fonte]

Escopo[editar | editar código-fonte]

Os objetivos que definem o escopo são:

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

Integração Contínua[editar | editar código-fonte]

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 | editar código-fonte]

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 | editar código-fonte]

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

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 | editar código-fonte]

Integração Contínua[editar | editar código-fonte]

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:

 1 before_script:
 2  
 3 language: android
 4 jdk: oraclejdk8
 5 sudo: require
 6 
 7 env:
 8   global:
 9     # wait up to 20 minutes for adb to connect to emulator
10     - ADB_INSTALL_TIMEOUT=20
11 
12 android:
13   components:
14     - platform-tools		
15     - tools
16     - build-tools-23.0.3
17     - android-22
18     - android-23
19     - sys-img-armeabi-v7a-android-23
20     - extra-android-m2repository
21     - compile 'com.google.android.gms:play-services:8.4.0'
22     - compile 'com.firebase:firebase-client-android:2.5.2'
23 
24 before_script:
25   # Create and start emulator
26   - echo no | android create avd --force -n test -t android-23 --abi armeabi-v7a 
27   - emulator -avd test -no-skin -no-audio -no-window &
28   - travis_wait 20 chmod +x ./gradlew
29   - chmod 777 .buildscript/launchInstrumentationTests.sh
30   - android-wait-for-emulator
31   - adb shell input keyevent 82 &
32 
33 
34 
35 script:
36   - ./gradlew assembleDebug -PdisablePreDex
37   - ./gradlew assembleAndroidTest -PdisablePreDex
38   - ./gradlew build connectedCheck
39   - adb devices
40   - adb install -r app/build/outputs/apk/app-debug.apk
41   - adb install -r app/build/outputs/apk/app-debug-androidTest-unaligned.apk
42   - ./gradlew check -PdisablePreDex --continue --stacktrace
43 
44 after_success:
45   - ./gradlew jacocoFullReport
46   - pip install --user codecov
47   - codecov
48   - bash <(curl -s https://codecov.io/bash)
49 
50 
51 after_failure:
52   - wget http://imgur.com/tools/imgurbash.sh
53   - chmod a+x imgurbash.sh
54   - adb shell screencap -p | sed 's/\r$//' &gt; screen.png
55   - ./imgurbash.sh screen.png
56   - pandoc builder/build/reports/tests/index.html -t plain | sed -n '/^Failed tests/,/default-package/p'
57 Contact GitHub API Training Shop Blog About

Levantamento de Ambiente Automatizado[editar | editar código-fonte]

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:

 1 #!/bin/bash
 2 
 3 echo "Ubuntu 16.04"
 4 echo "Setting up the development environment"
 5 sleep 1
 6 
 7 echo "Enter your password"
 8 sudo apt-get update
 9 echo "Checking if java is installed"
10 pacote=$(dpkg --get-selections | grep oracle-java8-set-default)
11 sleep 2
12 if [ -n "$pacote" ] ;
13 then echo
14      echo "Package already installed"
15 else echo
16      sudo add-apt-repository ppa:webupd8team/java
17      echo "Setting up the J environment"
18      sudo apt install oracle-java8-installer
19      sudo update-alternatives --config java
20      echo "export JAVA_HOME=\"/usr/lib/jvm/java-8-oracle\"" >> ~/.bashrc
21      source ~/.bashrc
22      echo "JAVA_HOME: $JAVA_HOME"
23 fi
24 
25 echo "Checking if android studio is installed"
26 pacote=$(dpkg --get-selections | grep android-studio)
27 sleep 2
28 if [ -n "$pacote" ] ;
29 then echo
30      echo "Package already installed"
31 else echo
32      
33 	echo "Downloading Android Studio"
34 	echo "Setting up android environment"
35 	sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
36 	sudo add-apt-repository ppa:paolorotolo/android-studio
37 	sudo apt-get update
38 	sudo apt-get install oracle-java8-installer 
39 	sudo apt-get install android-studio
40 	echo "Creating shortcut to desktop"
41 	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
42 
43 fi