Issue: US30 - Eu, como usuário, desejo receber o relatório informativo de um repositório específico do GitLab.
Repositório: 2019.1-ADA

Data: 20/04/2019
Status: Fechado

Closed
4 tasks done
US30 - Eu, como usuário, desejo receber o relatório informativo de um repositório específico do GitLab.
#135
ghost opened this issue on Apr 20, 2019 · 31 comments
Comments
@ghost
ghost commented on Apr 20, 2019 • 
Descrição da Issue
Ao conversar com a Ada, o usuário pode pedir para que ela gere um relatório com as informações {preencher} do repositório cadastrado. Então, a Ada deve buscar essas informações dentro do GitLab por meio de requisições e montar um pequeno relatório em um arquivo com a extensão a definir.

Nesse arquivo, um gráfico com as informações {tal} x {tal} deve ser apresentado.

Tasks:
Todas as atividades a serem realizadas devem estar elencadas em tópicos e ao serem finalizadas devem receber um check.

 fazer requisição à API do GitLab
 montar JSON com os dados do relatório
Critérios de aceitação
Caso os critérios de aceitação já tenham sido claramente definidos pela equipe, sobretudo pelo Product Owner, acrescentá-los na forma a seguir. Caso contrário, estes devem ser adicionados em um comentário pelo PO.

 utils.py e views.py funcionando
 requisição à API da Ada feita corretamente
@ghost ghost added enhancement MDS labels on Apr 20, 2019
@ghost ghost added this to the Sprint 5 milestone on Apr 20, 2019
@ghost ghost assigned ErickGiffoni and ghost on Apr 20, 2019
ErickGiffoni added a commit that referenced this issue on Apr 21, 2019
@ErickGiffoni
#135 - update stories.md and domain.yml …
ae13f1f
@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 21, 2019 • 
Estou pareando com o @lucasfcm9 desde 11:30. Já fizemos muitas coisas, inclusive no repositório ada-gitlab.
Também definimos quais informações iremos apresentar no relatório para o usuário. São elas :

US30 - Informações para o relatório
Project Resources - https://docs.gitlab.com/ee/api/#project-resources

Nome do repo -> projects [ name ]
Branches
    -Name
Commits
    -Quantidade de commits (como ?)
    -Último commit
        -Title
        -Author_name
        -Author_email
        -Authored_date
Jobs
    -Status
    -Stage
    -Name
    -Ref
    -pipeline
        -Ref
        -Status
        -Web_url
Members from project , not from groups
    -Name
    -Username
    -State
Projects
    -Name
    -Path
    -Description
    -web_url

*** Info necessaria para pegar essas info: id do project
@vitorandos
Collaborator
vitorandos commented on Apr 21, 2019
Relatório
Estado atual do pipeline
Descrição do pipeline atual, falando quais jobs estão envolvidos (exemplo da imagem)

Captura de Tela 2019-04-21 às 16 04 10

Informações do último mês
Qual o desempenho dos pipelines?
Total de pipelines
Número de pipelines bem sucedidos
Número de pipelines que falharam
Porcentagem de sucesso
Gráfico de sucesso de pipelines da última semana e último mês (imagem)

Captura de Tela 2019-04-21 às 16 04 29

Por quanto tempo os pipelines estão rodando?
Média de tempo de execução dos pipelines
Menor tempo de execução
Maior tempo de execução
Gráfico de tempo de execução

Como está a cobertura de código?
Porcentagem de cobertura de código atual
O quanto a cobertura de código aumentou ou diminuiu no último mês
Média de tempo que os pipelines ficaram na fila (queue)

Outras informações
Informações disponíveis no Cycle Analytics do repositório. Mais informações em Cycle Analytics | GitLab.

@vitorandos
Collaborator
vitorandos commented on Apr 21, 2019
Essas informações devem ser enviadas através de mensagem. Ainda aguardo a validação pelo resto da equipe de EPS, mas já têm uma ideia do que deve conter.

@fga-eps-mds fga-eps-mds deleted a comment from ErickGiffoni on Apr 21, 2019
@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 21, 2019
@vitorandos , eu e o @lucasfcm9 não sabemos como pegar somente as pipelines do último mês, porque teríamos que lidar com comparação de datas, além de que o método get pipeline da API do GitLab não nos retorna a informação da data daquela pipeline.
Entretanto o método get jobs da API do GitLab nos retorna algumas datas e algumas informações sobre qual a pipeline a que determinado Job está relacionado.

A respeito da cobertura de código, também não sabemos se existe algum método da Api do GitLab que nos informe isso.

Sobre a descrição do pipeline atual, falando quais jobs estão envolvidos, o que conseguimos fazer é dado um determinado Job, falar a qual pipeline ele está relacionado, e algumas outras informações. Mas não conseguimos pegar uma pipeline e saber os jobs dela.

Quem mais puder nos ajudar a tirar essas dúvidas, além do Vitor, agradecemos.

@vitorandos
Collaborator
vitorandos commented on Apr 21, 2019
A US10 - Eu, como usuário, desejo saber quais os passos da build para me manter informado do processo. · Issue #89 · fga-eps-mds/2019.1-ADA · GitHub, terminada na sprint anterior, realiza atividade análoga, apresentando os jobs da última pipeline. Deem uma olhada lá. O interessante para o relatório é pegar ou jobs configurados na última ou os jobs configurados para os próximos pipelines (que, de fato, não devem variar entre si na maioria dos casos).

@vitorandos
Collaborator
vitorandos commented on Apr 21, 2019
Se o get jobs apresenta datas e qual pipeline ele está conectado, então é possível conectar a data e o pipeline.

Sugiro pesquisarem também como o GitLab realiza os gráficos dessa página CI / CD Charts · charts / GitLab · GitLab.

De fato, como o GitLab já gera esses gráficos, vocês podem tentar encontrar se ele disponibiliza-os em algum lugar ou simplesmente fazer com que o bot tire um print do gráfico nessa página e envie-o. Já que, de qualquer forma, o gráfico será enviado como uma imagem.

@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 21, 2019
@vitorandos Sim, já estamos cientes. Foi uma das primeiras coisas que fizemos

@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 22, 2019
Colegas, estou tendo o seguinte erro:

File "/usr/src/app/gitlab/report/utils.py", line 215, in get_current_pipeline
    response = requests.get("https://gitlab.com/api/v4/projects/{project_id}/pipelines/{current_pipeline_id_}/jobs".format(project_id=project_id["id"]), headers=headers)
KeyError: 'current_pipeline_id_'
Alguém pode me ajudar ?
'current_pipeline_id_' está definida no meu código

@vitorandos
Collaborator
vitorandos commented on Apr 22, 2019
Pelo que me parece no format você só colocou o project_id e esqueceu do current_pipeline_id_

@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 23, 2019
Colegas, estou tendo o seguinte erro:

File "/usr/src/app/gitlab/report/utils.py", line 215, in get_current_pipeline
    response = requests.get("https://gitlab.com/api/v4/projects/{project_id}/pipelines/{current_pipeline_id_}/jobs".format(project_id=project_id["id"]), headers=headers)
KeyError: 'current_pipeline_id_'
Alguém pode me ajudar ?
'current_pipeline_id_' está definida no meu código

Resolvido ontem .

ghost pushed a commit that referenced this issue on Apr 23, 2019
#135 - Add stories, intent get_report and update domain.yml
8df6f7f
ghost pushed a commit that referenced this issue on Apr 23, 2019
#135 - WIP, add action_get_report
1033bae
ghost pushed a commit that referenced this issue on Apr 24, 2019
#135 - Fixed errors in file get_report.py
e626fbb
ghost pushed a commit that referenced this issue on Apr 24, 2019
#135 - Update actions and domain
876a7ce
ghost pushed a commit that referenced this issue on Apr 25, 2019
#135 - Update get_report.py and stories.md
c05921d
ErickGiffoni added a commit that referenced this issue on Apr 25, 2019
@ErickGiffoni
#135 - update actions, intents, stories and domain
463fdbb
ErickGiffoni added a commit that referenced this issue on Apr 25, 2019
@ErickGiffoni
#135 - correct domain
824f575
ErickGiffoni added a commit that referenced this issue on Apr 25, 2019
@ErickGiffoni
#135 - update ada
9f8e9f3
@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 25, 2019
Criando arquivos com python:

txt : https://www.guru99.com/reading-and-writing-files-in-python.html
pdf lib : https://pythonhosted.org/PyPDF2/
reportlib :
userguide : https://www.reportlab.com/docs/reportlab-userguide.pdf
overview/instalation : https://bitbucket.org/rptlab/reportlab/
docs : https://www.reportlab.com/documentation/
@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 25, 2019
Alguém sabe como pegar um arquivo do computador e retorná-lo para o usuário via código ? Alguma função da lib OS talvez... ou de qualquer lib
Eu tenho um arquivo pdf no computador. Ai quero, via código, pegar esse pdf e mandar pro usuário no fim do código.

@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 25, 2019
Não estou encontrando suporte em python para gerar imagens(que no caso seriam gráficos).
Alguma sugestão ?
Obs.: Matplotlib, Pandas e Ploty funcionam para Jupyter Notebooks, que não é meu caso.

@vitorandos vitorandos removed the enhancement label on Apr 26, 2019
@ateldyfilho
Collaborator
ateldyfilho commented on Apr 26, 2019
Essa US foi alocada a princípio na Sprint 5, e tornou-se dívida técnica para a Sprint 6.
O pareamento responsável para a Sprint 5 foi @ErickGiffoni e @lucasfcm9
O pareamento responsável para a Sprint 6 mudou para @ErickGiffoni e @sudjoao

4 hidden items
Load more…
@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 30, 2019
@joaovitor3 , @vitorandos , @sudjoao ... nessa parte:

Gráfico de sucesso de pipelines da última semana e último mês
o que é p eixo x e o que é o eixo y desse gráfico ?
#urgente #135

@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 30, 2019
Escrevendo esse novo método :

def check_pipeline_date(self, project_owner, project_name, pipeline_id):
        '''Busca a data da pipeline referida em pipeline_id e verifica se ela \
           é da ultima semana ou do ultimo mes. Retorna true, se a pipeline \
           for do ultimo mes ou da ultima semana false caso contrario'''
@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 30, 2019
Alguém pode me ajudar nessa parte ? Preciso saber até que dia vai a última semana e qual é o último mês, a partir da data atual :

# checar a data da pipeline em pipeline["created_at"] e comparar
            # com a data atual
            # saber a data atual:
            todays_date = date.today()
            formated_date = today.strftime("%Y-%m-%d")
            # saber qual o ultimo mes e qual a ultima semana
@sudjoao
Collaborator
sudjoao commented on Apr 30, 2019
Estou dando uma olhada no código e pesquisando sobre para mais tarde nos reunimos para resolver isso.

@ErickGiffoni
Collaborator
ErickGiffoni commented on Apr 30, 2019
@sudjoao Muito bom

@joaovitor3
Contributor
joaovitor3 commented on Apr 30, 2019
Como conversamos no hangouts, isso aqui pode ser útil na história.

https://stackoverflow.com/questions/151199/how-to-calculate-number-of-days-between-two-given-dates

Como subtrair duas datas e pegar a diferença em dias

@sudjoao
Collaborator
sudjoao commented on Apr 30, 2019 • 
Tudo certo, utilizando a biblioteca datetime e a api do gitlab foi possível conseguir fazer a diferença das datas.

@ErickGiffoni
Collaborator
ErickGiffoni commented on May 1, 2019
A equipe de MDS e de EPS está reunida agora, desde 8:30, em samambaia, todos trabalhando.
Eu e @sudjoao estamos trabalhando nessa issue.

ErickGiffoni added a commit that referenced this issue on May 1, 2019
@ErickGiffoni
#135 - fix get_report name
e01ca1c
sudjoao added a commit that referenced this issue on May 1, 2019
@sudjoao
@ErickGiffoni
#135 Add last week and last month pipeline messages …
ccadd3a
sudjoao added a commit that referenced this issue on May 2, 2019
@sudjoao
#135 Fix some problems
51b857f
@ErickGiffoni
Collaborator
ErickGiffoni commented on May 2, 2019
estou tendo problemas ao subir o docker das actions... e tambem o docker da ada-gitlab .

docker-compose -f docker-compose-dev.yml up actions
e depois o erro :

Removing 20191-grupo-3_actions_1
Recreating 7ed5788291ca_20191-grupo-3_actions_1 ... error

ERROR: for 7ed5788291ca_20191-grupo-3_actions_1  Cannot start service actions: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:58: mounting \\\"/adabot/Makefile\\\" to rootfs \\\"/var/lib/docker/overlay2/3613c4a85a1fa6b6842adc57b8065140212e663ad87f9bee5db1cd295bbadd3a/merged\\\" at \\\"/var/lib/docker/overlay2/3613c4a85a1fa6b6842adc57b8065140212e663ad87f9bee5db1cd295bbadd3a/merged/ada/Makefile\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

ERROR: for actions  Cannot start service actions: OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:58: mounting \\\"/adabot/Makefile\\\" to rootfs \\\"/var/lib/docker/overlay2/3613c4a85a1fa6b6842adc57b8065140212e663ad87f9bee5db1cd295bbadd3a/merged\\\" at \\\"/var/lib/docker/overlay2/3613c4a85a1fa6b6842adc57b8065140212e663ad87f9bee5db1cd295bbadd3a/merged/ada/Makefile\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ERROR: Encountered errors while bringing up the project.
@ErickGiffoni
Collaborator
ErickGiffoni commented on May 2, 2019
erro ao subir o docker da ada-gitlab:

docker-compose -f docker-compose-dev.yml up --build
e o erro:

g=(wait=0),verbose=(recovery_progress),
api_1           | Traceback (most recent call last):
api_1           |   File "manage.py", line 18, in <module>
api_1           |     app = create_app()
o erro é bem ai nesse create_app().

ErickGiffoni added a commit that referenced this issue on May 2, 2019
@ErickGiffoni
#135 add information about last 7 and last 30 days pipelines to the user
b12fcc7
ErickGiffoni added a commit that referenced this issue on May 2, 2019
@ErickGiffoni
#135 change messages emojis
a4aa4ad
@sudjoao
Collaborator
sudjoao commented on May 2, 2019 • 
Estamos com um problema que, após passar a requisição para o telegram, o bot está enviando a mensagem mas faz a requisição novamente e envia novamente e fica esse ciclo até derrubarmos o bot, as vezes até depois de derrubar e subir novamente ele continua mandando.

@ErickGiffoni
Collaborator
ErickGiffoni commented on May 2, 2019
@sudjoao @joaovitor_s se puder nos ajudar

ErickGiffoni added a commit that referenced this issue on May 2, 2019
@ErickGiffoni
@sudjoao
#135 get sender_id and do correct request to ada-gitlab …
08eccac
ErickGiffoni added a commit that referenced this issue on May 2, 2019
@ErickGiffoni
@sudjoao
#135 update set_repositorie.py …
4922104
ErickGiffoni added a commit that referenced this issue on May 2, 2019
@ErickGiffoni
@sudjoao
#135 update set_user.py …
97686f6
sudjoao added a commit that referenced this issue on May 2, 2019
@sudjoao
#135 Refactor data code
ce915cf
sudjoao added a commit that referenced this issue on May 2, 2019
@sudjoao
#135 Fix report problems
d6fb690
@sudjoao
Collaborator
sudjoao commented on May 2, 2019
O problema se dava devido a grande tempo que estava sendo usada para fazer a requisição, após refatorar e rever o que realmente seria necessário nas requisições o problema foi resolvido.

@ghost
Author
ghost commented on May 2, 2019
Os problemas relacionados ao Pipeline e as builds já foram resolvidos. @guilherme-mendes

@joaovitor3
Contributor
joaovitor3 commented on May 2, 2019
Os erros de docker citados acima foram resolvidos no pareamento realizado hoje.

sudjoao added a commit that referenced this issue on May 3, 2019
@sudjoao
#135 Add some texts
f976117
@vitorandos
Collaborator
vitorandos commented on May 3, 2019
Percebemos que a issue poderia ter sido mais modularizada para permitir sua completude em uma sprint. Decidimos retirar a parte de gráficos que será adicionada uma nova história.

@vitorandos vitorandos closed this as completed on May 3, 2019
@sudjoao sudjoao mentioned this issue on May 20, 2019
US28 - Eu, como usuário, desejo receber um relatório informativo de um repositório cadastrado do GitHub #212
Closed
6 tasks
caiovfernandes added a commit that referenced this issue on Jun 5, 2019
@caiovfernandes
#135 Improve conection error message

Contexto de uso: Não entrega do escopo planejado
Categoria: Pendência