mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 02:54:26 +00:00
The compose and host deploy jobs tee the whole deploy stdout into the file ANSIBLE_LOG_PATH names, and both downstream steps parse that stream. Only stdout carries the host-side "matrix-deploy: round N/M ... PASS n" markers, so it is the sole source the per-variant runtime tables can come from. dedicated.sh's cleanup then copied the container-side ansible log onto that same path. docker cp unlinks and recreates the destination, so tee kept writing into an orphaned inode and the visible file became ansible's own log_path output — whose "<ts> p= u= n= LEVEL| " line prefix defeats the anchored recap matchers in logparse.py while the unanchored has_sections substring test still fires. in_roles_recap never flips, every role-time line is skipped, and the step dies with "no profile_roles entries found" although the deploy succeeded. Run 30578244959: 14 of 14 compose+host jobs. Why it looked like a flake: docker cp cannot read a /tmp that is a tmpfs mounted inside the container, and the Debian image enables systemd's tmp.mount while CentOS Stream 10 does not. The copy silently failed on debian (host file survived, jobs green) and landed on centos (host file destroyed). feature/swarm-nfs never had the block; it returned here through merge drift from main, where the copy is still load-bearing because those workflows do not tee. The copy is dropped: stdout is a strict superset of what it provided, and the in-container verifier reads the log inside the container. Alongside it: the swarm workflow's file-exists guard is adopted so an aborted deploy does not paint the summary step red on top; the log_path prefix moves to utils/ansible_log.py and is applied in logparse.py, so an ansible run log parses instead of yielding an empty summary; a lint pins that nothing writes onto ANSIBLE_LOG_PATH again; and the parser regression test now covers the recap headers, not just the role rows. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Roles ⏱️
Per-role views over CI deploy runs, turning Ansible profiling output into comparable, downloadable role-timing metrics.