You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci: fit weekly test-durations refresh inside the 6h limit and alert on failure (#13586)
* ci: fit weekly test-durations refresh inside the 6h limit and alert on failure
The serial full-suite run no longer fits the 6h job limit; every weekly
run since mid-2025 was cancelled at exactly 6h, so .test_durations
silently froze and the 5 CI test groups drifted out of balance (the
recurring "Group 3 times out at 99%" nightly failures).
- Measure durations as a 5-group matrix (same pytest-split groups,
same xdist and test selection as make unit_tests), ~45-60 min per
group instead of >6h serial. Each group stores only its own tests'
durations (clean-durations); a merge job unions the disjoint group
files and sanity-checks coverage before committing anything.
- Add job-level timeouts everywhere and a Slack alert job
(LANGFLOW_ENG_SLACK_WEBHOOK_URL, same channel as nightly_build) so a
silent freeze cannot recur unnoticed.
- Label the auto-PR skip-nightly-check: the required CI Success check
previously failed on these PRs whenever the nightly was red, which is
why none of them (#6225..#8669) ever merged.
- Dispatch ci.yml on the PR branch after creation: PRs created with the
default GITHUB_TOKEN never trigger pull_request workflows, so the
required checks otherwise never run. workflow_dispatch is exempt from
that restriction and from the nightly gate. Optionally supports a
DURATIONS_PR_TOKEN PAT for fully native triggering.
- Request review/assign so the PR gets attention instead of rotting.
- Commit only .test_durations (add-paths) and drop the unused
ASTRA/OPENAI api_key_required test env (CI never runs those tests).
* ci: paginate the stale-durations-PR close step
pulls.list returns one page (30) and the repo has hundreds of open PRs,
so months-old stale durations PRs never appeared in the results — that
is how #6225..#8669 accumulated unclosed even while the workflow still
ran. Paginate and additionally match on the update-test-durations head
branch prefix.
* chore: update test durations (#13587)
Co-authored-by: erichare <700235+erichare@users.noreply.github.com>
* ci: fail the Slack alert step on webhook HTTP errors
Without --fail-with-body, curl exits 0 on a Slack 4xx/5xx (e.g. a
rotated webhook), leaving the alert job green while no alert was sent.
* ci: address durations workflow review questions
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: erichare <700235+erichare@users.noreply.github.com>
echo "LANGFLOW_ENG_SLACK_WEBHOOK_URL not set; skipping Slack alert"
238
+
exit 0
239
+
fi
240
+
# --fail-with-body: a Slack 4xx (e.g. rotated/revoked webhook) must
241
+
# fail this job, or a broken alert path stays green unnoticed.
242
+
curl --fail-with-body -X POST -H 'Content-type: application/json' \
243
+
--data "{
244
+
\"blocks\": [
245
+
{
246
+
\"type\": \"section\",
247
+
\"text\": {
248
+
\"type\": \"mrkdwn\",
249
+
\"text\": \":warning: *Store pytest durations failed.* The test-duration file used to balance backend CI groups was NOT refreshed this week. Stale durations cause unbalanced CI groups and group timeouts.\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|View run>\"
0 commit comments