fix(lint): run on the ephemeral runner without sudo or system pip #10

Merged
jfraeys merged 1 commit from fix/lint-runner-no-sudo into main 2026-10-02 20:22:58 -04:00
Owner

The lint job on PR #9 ran the full 15-minute timeout and was cancelled ('context deadline exceeded'). Two things in lint.yml could not work on the ephemeral runner regardless: the jobs run as forgejo-runner, which has no sudo (only the ansible user does), and Debian 12's system Python is externally managed (PEP 668).

Now: a venv built from requirements.txt, shellcheck from PyPI (shellcheck-py) instead of apt, and a per-step timeout-minutes (3 to 8) so a hang fails fast and names the step instead of consuming the whole job budget.

Tested: replayed the steps locally in a fresh Python 3.11 venv: shellcheck, yamllint and ansible-lint all pass (ansible-lint 17s). Not yet run on the runner. The original hang's exact step is still unconfirmed (logs aren't readable via the API), so if this run also stalls, the per-step timeout will show which step.

🤖 Generated with Claude Code

The lint job on PR #9 ran the full 15-minute timeout and was cancelled ('context deadline exceeded'). Two things in lint.yml could not work on the ephemeral runner regardless: the jobs run as forgejo-runner, which has no sudo (only the ansible user does), and Debian 12's system Python is externally managed (PEP 668). Now: a venv built from requirements.txt, shellcheck from PyPI (shellcheck-py) instead of apt, and a per-step timeout-minutes (3 to 8) so a hang fails fast and names the step instead of consuming the whole job budget. Tested: replayed the steps locally in a fresh Python 3.11 venv: shellcheck, yamllint and ansible-lint all pass (ansible-lint 17s). Not yet run on the runner. The original hang's exact step is still unconfirmed (logs aren't readable via the API), so if this run also stalls, the per-step timeout will show which step. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(lint): run on the ephemeral runner without sudo or system pip; add step timeouts
All checks were successful
Lint / lint (pull_request) Successful in 1m33s
9cc8402f71
The runner user has no sudo (only 'ansible' does) and Debian 12's system Python is
externally managed, so the apt shellcheck install and bare pip install could not work.
Use a venv from requirements.txt, with shellcheck from PyPI (shellcheck-py), and
per-step timeouts so a hang fails fast and names the step.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jfraeys/infra!10
No description provided.