Skip to content

Commit

Permalink
Merge pull request #225 from fga-gpp-mds/dev
Browse files Browse the repository at this point in the history
Dev into Master
  • Loading branch information
guibaldissera authored Apr 19, 2018
2 parents 16eee9c + 2a1ea3c commit 671adef
Show file tree
Hide file tree
Showing 179 changed files with 8,090 additions and 1,036 deletions.
99 changes: 97 additions & 2 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,59 @@ As issues que já foram criadas, elas tem labels que representam sua complexibil

### Commits
para commitar neste projeto você deve seguir o seguinte template:

```bash
$ git commit -m "Titúlo princpal do commit
>
> * Frase de uma alteração que foi feita
> * Frase que descreve outra alteração feita"
```

### Docker e CI

Neste projeto foi utilizado o Gitlab CI junto ao docker para gerenciar o controle de versão e qualidade. Desta forma, nosso processo de CI pode ser divido em etapas:

1. Análise Estática: Fase que o CI a partir do docker executa a análise estática do código. Utiliza-se do Docker para realizar essa tarefa, nesta fase é provida um relatório com duração de 48 horas

Caso deseje executar apenas a análise estática:

```bash
docker run -v $(pwd)/project:/application -v $(pwd)/docker/local.properties:/application/local.properties baldissera/android-container /bin/bash "/static_analysis.sh"
```

2. Testes: Fase que o CI executa os testes unitários. Utiliza-se do Docker para realizar essa tarefa.

Caso deseje executar apenas os testes:

```bash
docker run -v $(pwd)/project:/application -v $(pwd)/docker/local.properties:/application/local.properties baldissera/android-container /bin/bash "/test.sh"
```

3. Build: Fase em que é criado uma build, .apk. Utiliza-se do Docker para realizar essa tarefa.

Caso deseje executar uma build:

```bash
docker run -v $(pwd)/project:/application -v $(pwd)/docker/local.properties:/application/local.properties baldissera/android-container /bin/bash "/build.sh"
```

4. *Deploy*: Cria uma *build* pronta para ser disponibilizada como *beta* na *Google Play*. Esta interação do CI apenas ocorre nas branches master e dev. GitlabCI faz uso do *Fastlane*, e é necessário a criação de uma TAG para o app estar disponibilizado na loja.

Ressalta-se que as fases 1, 2 e 3 são realizadas por todas as *branches*.

A imagem a seguir apresenta estrutura do nosso processo de integração contínua:

[![Group_2.png](https://s17.postimg.cc/yru8x54m7/Group_2.png)](https://postimg.cc/image/sqwk02hzv/)

5. Para integração com o servidor, basta rodá-lo utilizando o docker para o mesmo ficar disponível em seu ambiente de desenvolvimento. O Servidor ficará disponível na porta 3000.

O comando para isso é:
```bash
docker run -d -p 3000:3000 registry.gitlab.com/nexte/bepid/nexte-server:0.1.0
```
OU
```
docker-compose up -d
```

### Pull request

Expand All @@ -34,4 +81,52 @@ Para realizar o pull request deve ser observado o template criado e o padrão j
Qual o comportamento que o aplicativo terá depois do pull request aceito

Quais as issues o Pull Request finaliza?
Issue que é finalizada por este pull request: ex #100
Issue que é finalizada por este pull request: ex #100

**Observação**: Os *pull requests* só serão avaliados quando o *pipeline* não estiver falho.

### Análise de código

Neste projeto é utilizada a ferramenta **Detekt** para análise estática de código, para executá-la é necessário estar dentro da pasta _project_ e no terminal executar o comando :

./gradlew detektCheck

**Métricas de código a serem analisadas:**

* Quantidade de linhas por método
* Quantidade de métodos por classe
* Adequação à folha de estilo
* Complexidade ciclomática
* Quantidade de Code smells
Coisas que não são um problema atualmente, mas no futuro pode vir a ser um bug no projeto

**Parametros**

* Quantidade de linhas por método
* máximo 30 linhas
* Quantidade de métodos por classe
* 20 métodos por classe
* Adequação à folha de estilo
* ser totalmente condizente com a [folha de estilo](/docs/MDS/DocFolhaEstilo.md)

* Complexidade ciclomática
De acordo com o [artigo publicado](http://www.mccabe.com/pdf/MeasuringSoftwareComplexityUAV.pdf) pelo criador da métrica de complexidade ciclomática os padrões por método são descritos na tabela abaixo
| Complexidade | Avaliação |
| ---- | ---- |
| 1-10 | Método simples. Baixo risco |
| 11-20 | Método razoavelmente complexo. Moderado risco. |
| 21-50 | Método muito complexo. Elevado risco. |
| 51-N | Método de altíssimo risco e bastante instável. |

* Quantidade de Code smells
* máximo 5 Code Smells

**Cobertura de código**

A cobertura de código é feita pelo Jacoco, para averiguar a cobertura é necessário gerar o relatório de cobertura de testes e olha-lo na pasta _build/reports/coverage/debug_ o arquivo gerado é um index.html.

O comando para gerar o relatório de cobertura de código é:

./gradlew createDebugCoverageReport

Ela deve ser de no minimo 40% para a primeira Release e de 90% para a segunda Release
18 changes: 17 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,20 @@ google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
freeline_project_description.json


project/.idea/*


# fastlane specific
fastlane/report.xml

# deliver temporary files
fastlane/Preview.html

# snapshot generated screenshots
fastlane/screenshots

# scan temporary files
fastlane/test_output
83 changes: 83 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Baldissera image of android container.
image: baldissera/android-container:1.0

variables:
DOCKER_DRIVER: overlay2
LC_ALL: "en_US.UTF-8"
LANG: "en_US.UTF-8"

before_script:
- export ANDROID_HOME="/usr/local/android-sdk"
- cd project

stages:
- test
- build
- deploy

static_analysis:
stage: test
script:
- mv ../docker/static_analysis.sh ./static_analysis.sh
- chmod +x ./static_analysis.sh
- ./static_analysis.sh

unit_test:
stage: test
script:
- mv ../docker/test.sh ./test.sh
- chmod +x ./test.sh
- ./test.sh
artifacts:
name: "reports_${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}_unit_test"
when: always
expire_in: 2 days
paths:
- project/app/build/reports/jacocoTestReport/html

# instrumentation_tests:
# stage: test

build:
stage: build
before_script:
- export ANDROID_HOME="/usr/local/android-sdk"
- cd project
- git clone $KEY_STORE_REPO ./key
- mv ./key/$STORE_FILE ./app/
- rm -Rf ./key
script:
- mv ../docker/build.sh ./build.sh
- chmod +x ./build.sh
- ./build.sh
after_script:
- rm -Rf ./app/.git/
- rm ./app/$STORE_FILE
artifacts:
paths:
- project/app/build/outputs/apk
only:
- dev
- master

deploy_beta:
stage: deploy
before_script:
- cd project
- echo $DEPLOY_KEY_FILE >> key.json
script:
- fastlane beta
after_script:
- rm key.json
dependencies:
- build
artifacts:
paths:
- fastlane/logs
only:
- tags

cache:
key: ${CI_PROJECT_ID}
paths:
- .gradle/
37 changes: 0 additions & 37 deletions Dockerfile

This file was deleted.

78 changes: 76 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

[![Icon-_App-1024x1024.png](https://s14.postimg.org/6zkzknic1/Icon-_App-1024x1024.png)](https://postimg.org/image/gww0dppxp/)

[![pipeline status](https://gitlab.com/Baldissera/2018.1_Nexte/badges/dev/pipeline.svg)](https://gitlab.com/Baldissera/2018.1_Nexte/commits/dev)

O Nexte tem como objetivo promover a integração entre tenistas a partir da realização de desafios entre os membros desta comunidade. Não obstante, Nexte é desenvolvido com tecnologias modernas como: Docker, Kotlin, Node, e muitas outras.

For english support, read out [README](https://github.com/fga-gpp-mds/2018.1_Nexte/blob/dev/Docs/EPS/READMEen.MD) provided in english.
Expand All @@ -15,24 +17,95 @@ For english support, read out [README](https://github.com/fga-gpp-mds/2018.1_Nex
Neste momento, é necessário instalar o Android Studio com a SDK 22. Se ainda não fez isso, por favor siga os passos disponibilizados na
[Documentação Oficial do Android.](https://developer.android.com/studio/index.html)

### CI e Docker

O processo de integração continua utilizada no Nexte é provida pelo GitlabCI.

Assim, o *CI* pode ser dividido em 4 etapas:

1. Análise Estática: Fase que o CI a partir do docker executa a análise estática do código. Utiliza-se do Docker para realizar essa tarefa

Caso deseje executar apenas a análise estática:

```bash
docker run -v $(pwd)/project:/application -v $(pwd)/docker/local.properties:/application/local.properties baldissera/android-container /bin/bash "/static_analysis.sh"
```

2. Testes: Fase que o CI executa os testes unitários. Utiliza-se do Docker para realizar essa tarefa.

Caso deseje executar apenas os testes:

```bash
docker run -v $(pwd)/project:/application -v $(pwd)/docker/local.properties:/application/local.properties baldissera/android-container /bin/bash "/test.sh"
```

3. Build: Fase em que é criado uma build, .apk. Utiliza-se do Docker para realizar essa tarefa.

Caso deseje executar uma build:

```bash
docker run -v $(pwd)/project:/application -v $(pwd)/docker/local.properties:/application/local.properties baldissera/android-container /bin/bash "/build.sh"
```

4. *Deploy*: Cria uma *build* pronta para ser disponibilizada como *beta* na *Google Play*. Esta interação do CI apenas ocorre nas branches master e dev. GitlabCI faz uso do *Fastlane*.


Para mais informações sobre CI e seu funcionamento acesse nosso [CONTRIBUTING](https://github.com/fga-gpp-mds/2018.1_Nexte/blob/dev/.github/CONTRIBUTING.md)

5. Para integração com o servidor, basta rodá-lo utilizando o docker para o mesmo ficar disponível em seu ambiente de desenvolvimento. O Servidor ficará disponível na porta 3000.

O comando para isso é:

```bash
docker run -d -p 3000:3000 registry.gitlab.com/nexte/bepid/nexte-server:0.1.0
```
OU
```bash
docker-compose up -d
```

### **Observações**

1. Os pull request só poderão ser aceitos caso o *pipeline* não tenha falhado, desta forma, é recomendado sempre a utilização do comando:
```bash
docker composer up
```
2. Todos os comandos do docker deverão ser executados na raiz do programa

## *Deployment*

Versões oficiais de *deployment* são disponibilizadas pelos mantedores do respositório. Mas, você pode entrar em contato com eles por [issues](https://github.com/fga-gpp-mds/2018.1_Nexte/issues) e solicitar uma nova versão de *deployment*.

Ressalta-se que a partir do *fastlane* integrado com nosso CI, quando as branches dev/master são submetidas ao comando:

```bash
docker composer up
```

É criado uma nova versão de *deploy* pronta para ser disponibilizada como beta no *Google Play*, entretanto é necessária a criação de uma *TAG* no Github.


## Construído com

* [Kotlin](https://kotlinlang.org/) e XML - *Frontend* da aplicação
* [Docker](https://www.docker.com/) - Ferramenta usada para gerenciar dependências e versões
* [Node](https://nodejs.org/en/) - *Web Service*
* [Neo4J](https://neo4j.com) - *Database*
* [Account Kit](https://developers.facebook.com/docs/accountkit/android?locale=pt_BR) - Autenticação
* [Fastlane](https://docs.fastlane.tools) - *Deploy*

## Contribuindo

Por favor, leia [CONTRIBUTING](CONTRIBUTING.md) para detalhes do nosso código de conduta e submição de pull request.
Por favor, leia [CONTRIBUTING](https://github.com/fga-gpp-mds/2018.1_Nexte/blob/dev/.github/CONTRIBUTING.md) para detalhes do nosso código de conduta e submição de pull request.

# Versões

Neste momento, ainda não há nenhuma versão de *deployment* para Android.

# Documentação

Para saber mais sobre o projeto acesse a [documentação do projeto](https://fga-gpp-mds.github.io/2018.1_Nexte/)

# Autores

* **Guilherme Baldissera** - *Trabalho inicial* - [Github](https://github.com/guibaldissera)
Expand All @@ -42,7 +115,7 @@ Veja também a lista de [contribuidores](https://github.com/fga-gpp-mds/2018.1_

## Licença

Este projeto está sob a licença MIT - veja o arquivo [LICENSE](LICENSE.md) para mais detalhes.
Este projeto está sob a licença MIT - veja o arquivo [LICENSE](https://github.com/fga-gpp-mds/2018.1_Nexte/blob/dev/LICENSE) para mais detalhes.

## Conhecimentos

Expand All @@ -51,3 +124,4 @@ Este projeto está sob a licença MIT - veja o arquivo [LICENSE](LICENSE.md) par
* Alto suporte dos mantedores



Loading

0 comments on commit 671adef

Please sign in to comment.