ci: the macOS test job is cancelled at about 15 minutes with no logs, on main and on PRs

Abierto Apto para principiantes
#366 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
77/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
github-actions, python
Área
ci-cd, testing

Línea de trabajo

Empieza con el trabajo test en .github/workflows/ci.yml y [tool.pytest.ini_options] en pyproject.toml. Añade el tiempo de espera solicitado para los tracebacks y el informe de duración, establece el tiempo de espera del trabajo de test y añade un elemento a la lista de CHANGELOG. Se habrá completado cuando se hayan fusionado esos cambios y se haya publicado y corregido un traceback de un bloqueo, o hayan pasado diez ejecuciones consecutivas de macOS en main.

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

Descripción

bug roadmap
What happens

The Test (macos-latest, py3.12) job ends as cancelled after about 15 minutes on some runs, with no failed step and no logs left to read. A good run of the same job takes about 7 minutes.

Run Event Job window (UTC) Result
41865260937 (main, #312 merge) push 16:14 to 16:29 cancelled
41678324707 (main) push 16:50 to 17:05 cancelled
41696079936 (main) push 18:40 to 18:47 success
41886493147 (PR #321) pull_request 18:22 to 18:37 cancelled, re-run

It is not the workflow's own doing. ci.yml sets no timeout-minutes, so the job limit is GitHub's 6 hours, and the concurrency group only cancels pull_request runs, never pushes to main. gh api .../actions/jobs/<id> returns an empty steps list for these jobs, and the log endpoint answers BlobNotFound, so there is nothing to read after the fact. Every other job in the same runs passes.

Why it matters

Each occurrence turns main red and blocks PR merges until someone re-runs the job. JOSS reviewers will see the history, and this is the one leg that exists because reviewers install on macOS.

What to do
  1. Make a hang print something before it dies. Add faulthandler_timeout = 300 under [tool.pytest.ini_options] in pyproject.toml. It's a built-in pytest option with no new dependency, and it dumps every thread's traceback when one test runs longer than 5 minutes. Also add --durations=15 to the macOS leg's pytest call.
  2. Give the test job an explicit timeout-minutes: 25, so a hang fails with a timeout message instead of an unexplained cancel.
  3. On the next occurrence, download the job log right away (gh run view <run> --log-failed) and post the traceback here.
  4. Fix the test the traceback names. Do not skip it on macOS unless the cause is genuinely macOS-only, and if so, say so in the skip reason.
Acceptance criteria
  • Steps 1 and 2 merged, with a CHANGELOG bullet.
  • Either a traceback from a hang is posted here and fixed, or ten consecutive main runs pass on macOS.
Where to start
  • .github/workflows/ci.yml, the test job
  • pyproject.toml, [tool.pytest.ini_options]
Lenguaje dominante
Python
Estrellas
11
Forks
23
Merge medio
1 d 11 h
PR fusionados (30 d)
30

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 PhilanthroPy-Project/PhilanthroPy

Todos los issues de PhilanthroPy-Project/PhilanthroPy

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.