ci: pr-test-summary job shows red when the GitHub API returns persistent 5xx errors

Abierto Apto para principiantes
#2,256 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
github-actions, python
Área
ci-cd

Línea de trabajo

Empieza por ci/utils/pr_test_summary.py, en especial main() y el wrapper de reintentos para las llamadas a la API de GitHub, y luego lee el paso PR test summary en pr.yaml. Confirma cómo la excepción final de un 5xx persistente llega al código de salida del proceso. Está terminado cuando solo los errores HTTP y de red de la API se degradan a una advertencia registrada con código de salida 0, mientras que los errores de análisis u otros errores del script siguen haciendo fallar el job.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Problem

The PR test summary (non-blocking) job in pr.yaml sometimes fails with a red check on PRs, for example:

Traceback (most recent call last):
  File "/home/runner/work/cuopt/cuopt/ci/utils/pr_test_summary.py", line 325, in <module>
    main()
...
urllib.error.HTTPError: HTTP Error 502: Bad Gateway

This was noticed in the discussion on #2241 (run https://github.com/NVIDIA/cuopt/actions/runs/41135602235). It was first mistaken for leftover RAPIDS CI telemetry, but it comes from this repo's own ci/utils/pr_test_summary.py.

Why it fails

pr_test_summary.py makes several GitHub API calls: it lists the run's jobs, downloads logs of failed jobs, and creates or updates the PR comment.

  • Transient errors (429, 5xx, network errors) are retried up to 4 attempts with 2**attempt second backoff (#2204). That is roughly 14 seconds in total. If the API keeps returning errors for longer, the last exception is re-raised.
  • The script then exits non-zero, and the run: python3 ci/utils/pr_test_summary.py step has no continue-on-error. #1696 removed it and instead excluded the job from the pr-builder merge gate (and checks has ignored_pr_jobs: "pr-test-summary").
  • The job is therefore not a merge gate, but it still shows as a failed check on the PR. That is confusing for contributors and reviewers, who may take it for a real test failure, and the summary comment is not posted.

Proposal

Make the summary best-effort so it cannot show red because of an API error:

  • Catch persistent API errors at the end of main(), print a warning to the job log, and exit 0.
  • Or set continue-on-error: true on the step.

Real script bugs (for example parsing errors) should still fail the job, so only the network and HTTP error classes would be swallowed.

Related: #2204, #1696, #2241.

Lenguaje dominante
Cuda
Estrellas
1.1k
Forks
249
Merge medio
1 d 15 h
PR fusionados (30 d)
124

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de NVIDIA/cuopt

Todos los issues de NVIDIA/cuopt

Issues similares

Más issues de DevOps

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.