Emergo
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:
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$//' > 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 | 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:
#!/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