Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 32 additions & 1 deletion .github/workflows/scripts-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,38 @@ jobs:
# fork n'atteint le runner. Retour arriere = revert de la PR.
runs-on: [self-hosted, coursia-ephemeral, coursia-linux]
if: github.event.pull_request.head.repo.full_name == null || github.event.pull_request.head.repo.full_name == github.repository
timeout-minutes: 20
# Plafond 20 -> 30 (#15853). Grandeur mesuree : le mur du JOB
# (started_at -> completed_at du job nomme exactement "Scripts Tests
# (CPU)"), celle sur laquelle timeout-minutes agit -- jamais la duree
# du run (file d'attente comprise, et pour un rerun les deux
# tentatives : c'etait la faute de grandeur de la v1).
#
# Requete a rejouer telle quelle avant de citer ou de retirer ce
# tableau (photographie datee, pas une verite) : runs du workflow
# 296034456, branch=main, status=completed, run_started_at >
# 2026-09-13T23:08:18Z (merge de xdist #15833) ; dans chaque run, job
# de nom EXACT "Scripts Tests (CPU)".
#
# Mesure du 2026-09-15T07:00Z, rejouee a 07:22Z sans derive :
# 70 runs conclus
# - 25 sans job : jobs: [], jamais demarres (supplantation de
# file) -- hors de toute discussion de plafond ;
# - 45 porteurs d'un job, max par conclusion :
# success 30 max 17,4 min
# failure 11 max 14,3 min
# cancelled 4 20,32-20,43 min
# Les 4 cancelled ont bien ete termines au mur de 20 min, mais les
# logs montrent des workers xdist morts puis 14-15 min de silence : ce
# sont des hangs que relever le plafond ne repare pas (suivi #16288),
# pas quatre cas de queue lente. Le relevement repose sur la marge
# preventive : le succes max a 17,4 min ne laisse que 2,6 min sous 20;
# 30 laisse ~12,6 min tout en restant sous les bornes 45/52 ci-dessous.
# (Retraction de la v1 run-level -- 26 runs, mediane 17,5 min, max
# 19,8 min, 16 annulations -- ecrite en tete du body de #16087.)
# 30 reste sous les deux plafonds qui l'englobent : l'agregateur
# pr_gate.py (--timeout-min 45) et le job pr-gate.yml
# (timeout-minutes: 52).
timeout-minutes: 30

steps:
# ------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion scripts/tests/test_pr_gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -1991,7 +1991,7 @@ def _decide_with_walls(checks, walls):
def test_declared_wall_is_read_from_the_real_workflows():
"""Le cas fondateur, lu sur le depot et non sur une fixture."""
walls = pr_gate.derive_declared_timeouts()
assert walls.get("Scripts Tests (CPU)") == 20
assert walls.get("Scripts Tests (CPU)") == 30


def test_declared_timeouts_tolerate_an_unreadable_state(tmp_path):
Expand Down
Loading