ci-metrics

Par pytorch · pytorch

Interroge les métriques CI PyTorch, GitHub Actions, HUD, Grafana et d'infrastructure. À utiliser lorsque les utilisateurs posent des questions sur la durée du CI, les échecs de jobs, les temps de file d'attente, les tendances de workflow, l'état des runners, les données de dashboard ou les métriques d'infrastructure PyTorch.

npx skills add https://github.com/pytorch/pytorch --skill ci-metrics

Métriques CI PyTorch

Les métriques CI et d'infrastructure de PyTorch sont exposées via Grafana. Utilisez .claude/skills/ci-metrics/gcx-wrapper.sh pour tout accès à Grafana ; il configure le serveur Grafana PyTorch, le contexte et l'authentification. Seuls les utilisateurs ayant des permissions d'écriture sur le repo ont accès à Grafana. L'authentification ne fournit qu'un accès en lecture seule.

Prérequis

Le wrapper a besoin de ces outils dans PATH :

  • gh - récupère le token Grafana et doit être authentifié ; sinon, exécutez gh auth login --hostname github.com --git-protocol ssh --web.
  • curl - télécharge gcx et récupère le token depuis HUD.

À la première utilisation, le wrapper télécharge un binaire gcx épinglé et vérifié par checksum dans un cache privé (~/.cache/pytorch-ci-metrics/) et s'authentifie automatiquement. Rien n'est installé dans votre PATH. Si un outil est manquant ou que gh n'est pas authentifié, il s'arrête avec une erreur décrivant ce qu'il faut corriger.

Sources de données

Obtenez la liste des sources de données disponibles :

.claude/skills/ci-metrics/gcx-wrapper.sh datasources list

Les données contiennent des métriques pour de nombreux repos appartenant au repo PyTorch. Si possible, limitez les requêtes au seul repo pytorch/pytorch.

Données CI et exécution de tests

Les données CI et d'exécution de tests sont stockées dans grafana-clickhouse-datasource. Listez toutes les tables disponibles :

.claude/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse list-tables

Ensemble de données important :

  • Données webhook GitHub
  • Tests
    • Base de données : tests
    • tests.all_test_runs - contient chaque exécution de test. C'est une table extrêmement volumineuse, soyez prudent avec le filtrage et les délais.
    • N'utilisez pas tests.test_run_s3 car elle contient uniquement des données partielles.

Pour obtenir des conseils supplémentaires sur les requêtes courantes, clonez https://github.com/pytorch/test-infra dans un répertoire temporaire et lisez le dossier torchci.

Exemples de requêtes

Dans le repo pytorch/pytorch sur main, listez les 10 emplois de workflow les plus défaillants des 2 dernières semaines :

.claude/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse query "
  SELECT name, count(DISTINCT id) AS failures
  FROM default.workflow_job
  WHERE conclusion = 'failure'
    AND completed_at >= now() - INTERVAL 2 WEEK
    AND repository_full_name = 'pytorch/pytorch'
    AND head_branch = 'main'
  GROUP BY name ORDER BY failures DESC LIMIT 10"

Pour un fichier de test, combien de fois a-t-il été exécuté la semaine dernière ? Combien de fois a-t-il réussi ou échoué ?

.claude/skills/ci-metrics/gcx-wrapper.sh datasources clickhouse query "
  SELECT
    file,
    classname,
    name,
    count() AS runs,
    countIf(failure_count = 0 AND error_count = 0 AND skipped_count = 0) AS successful,
    countIf(failure_count > 0 OR error_count > 0) AS fails,
    countIf(skipped_count > 0) AS skipped
  FROM tests.all_test_runs
  WHERE time_inserted >= now() - INTERVAL 7 DAY
    AND file = 'lazy/test_ts_opinfo.py'
  GROUP BY file, classname, name
  ORDER BY runs DESC"

Infrastructure CI

Les métriques d'infrastructure CI sont stockées dans grafanacloud-pytorchci-prom. Pour mieux comprendre les données, clonez ces repos dans un répertoire temporaire :

Exemples de requêtes

Quels types de runner ont la queue la plus profonde en ce moment (emplois assignés mais pas encore en cours d'exécution) ?

.claude/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'topk(10, clamp_min(sum by (name) (gha_assigned_jobs) - sum by (name) (gha_running_jobs), 0))'

Combien d'emplois étaient en cours d'exécution par cluster au cours des 6 dernières heures, échantillonnés toutes les 30 minutes ? Utilisez --since/--step (ou --from/--to) pour une requête de plage :

.claude/skills/ci-metrics/gcx-wrapper.sh datasources prometheus query -d grafanacloud-prom 'sum by (cluster) (gha_running_jobs)' --since 6h --step 30m

Skills similaires