Open durvalcarvalho opened 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)
No repositório do service
tem uma collection com as requisições (link)
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.
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/
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/
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
}
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
eCi Feedback Time
Critérios de aceitação
Team Throughput
serão coletadasCi Feedback Time
serão coletadasCi Feedback Time
Team Throughput
Ci Feedback Time
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
service