fga-eps-mds / 2022-1-MeasureSoftGram-Doc

Repositório destinado à documentação do projeto MeasureSoftGram para a disciplinas de EPS durante o semestre 01/2022
https://fga-eps-mds.github.io/2022-1-MeasureSoftGram-Doc/
GNU General Public License v3.0
0 stars 1 forks source link

Criar parser para coletar métricas do GitHub #132

Open durvalcarvalho opened 2 years ago

durvalcarvalho commented 2 years ago

História de Usuário

Como Valéria Gostaria que o sistema fosse capaz de coletar métricas do GitHub para que assim seja possível obter as métricas necessárias para calcular as medidas Team Throughput e Ci Feedback Time

Critérios de aceitação

Observações

Uma vez que será implementado métricas que precisam de medidas que a API do GitHub disponibiliza, é necessário criar um script que obtém tais medidas e envia para a API do service.

Tarefas

durvalcarvalho commented 2 years ago

O service em ambiende de desenvolvimento (link) já possui os dois endpoints necessários para realizar essa issue:

Para registrar o valor coletado de uma determinada métrica é preciso:

import requests
import json

url = "https://measuresoftgram-service.herokuapp.com/api/v1/organizations/1/repository/1/create/metrics/"

payload = json.dumps({ "metric_id": 1, "value": 46.12})

response = requests.post(url, json=payload)
durvalcarvalho commented 2 years ago

No repositório do service tem uma collection com as requisições (link)

durvalcarvalho commented 2 years ago

Todos as métricas disponíveis no Sonar já estão salvas na tabela Supported metrics no banco do Heroku. Para cadastrá-las localmente basta rodar o comando python manage.py load_initial_data.

É provável que exista métricas obtidas no GitHub que não existam no banco de dados. Dessa forma é preciso:

Para salvar uma métrica coletada basta usar a tabela Collected metrics. As tuplas dessa tabelas precisam da chave estrangeira da métrica em questão (referência para a tabela Supported metrics) e um valor.

Note: Não esqueça de adicionar tais métricas no script load_initial_data.create_suported_metrics pois caso contrário não será possível coletar valores para tais métricas no ambiente do heroku.

durvalcarvalho commented 2 years ago

Sugestão de roteiro de validação da US

1. Crie ou escolhe um repositório no sistema do MeasureSoftGram

Aqui sugerimos o uso de um repositório já criado, como por exemplo o apresentado abaixo: https://measuresoftgram-service.herokuapp.com/api/v1/organizations/8/products/6/repositories/11/

2. Acesse o endpoint que realiza a coleta de métricas do GitHub.

Para acessar esse endpoint basta adicionar o pós-fixo /colletors/github/ na url do repositório escolhido.

Um exemplo de endpoint de coleta de métricas do GitHub é apresentado abaixo: https://measuresoftgram-service.herokuapp.com/api/v1/organizations/8/products/6/repositories/11/collectors/github/

3. Envie uma requisição do tipo POST passando os dados necessários para a coleta de métricas

campo descrição / explicação
github_token Token de acesso a API do GitHub (somente leitura). Esse token pode ser obtido em: https://github.com/settings/tokens
issues_repository_url URL do repositório do GitHub onde ficam as issues de história de usuário. Por exemplo: https://github.com/fga-eps-mds/2022-1-MeasureSoftGram-Doc
user_story_label Label utilizada para identificar as histórias de usuário no repositório. Por exemplo "US".
issues_metrics_x_days Quantidade de dias que será utilizado para definir o intervalo de coleta. O intervalo é definido por todas as issues criadas/fechadas nos últimos x dias, tendo como referência o dia atual. Por exemplo: 30
pipeline_metrics_x_days Quantidade de dias que será utilizado para definir o intervalo de coleta. O intervalo é definido por todas os pipelines executados nos últimos x dias, tendo como referência o dia atual. Por exemplo: 30
pipelines_repository_url URL do repositório do GitHub onde ficam os pipelines são executados. Por exemplo: https://github.com/fga-eps-mds/2022-1-MeasureSoftGram-Service
build_pipeline_names Nome utilizado para nos pipelines que serão considerados para a coleta das métricas relacionadas a medida Ci Feedback Time. Por exemplo: ["Run Tests", "Linter"]

{
    "github_token": "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",

    "issues_repository_url": "https://github.com/fga-eps-mds/2022-1-MeasureSoftGram-Doc",
    "user_story_label": "US",
    "issues_metrics_x_days": 30,

    "pipelines_repository_url": "https://github.com/fga-eps-mds/2022-1-MeasureSoftGram-Service/",
    "build_pipeline_names": ["Run Tests"],
    "pipeline_metrics_x_days": 30
}