block / block/buzz

CI: unbounded apt steps consume the whole job budget and report as opaque job timeouts

Open Beginner friendly
#6,238 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

## Summary

Two CI steps run `apt` with no step-level time bound. When a package mirror is slow, the step consumes the entire job budget and the job dies at `timeout-minutes`. The failure surfaces as a generic job timeout, which is indistinguishable from a slow build or a hung test — no test ever runs.

This has burned at least **five jobs across four runs in ~13 hours**, including three on `main`.

## The two steps

- `.github/workflows/ci.yml:271-272` — `Install Playwright system dependencies` → `pnpm exec playwright install-deps chromium` (apt under the hood). Job `timeout-minutes: 30`.
- `.github/workflows/ci.yml:159-183` — `Install Tauri dependencies (Linux)` → `apt-get update` + `apt-get install`. Job `timeout-minutes: 45`.

Both already pass `Acquire::Retries=3` and `Acquire::http::Timeout=30`. Those bound an individual *request*; neither bounds the step, so a mirror that is slow-but-not-dead is retried until the job budget is gone.

## Observed occurrences

| run | branch | head | job | step | duration |
|---|---|---|---|---|---|
| 32155633872 | PR #5946 | `17d455a9b` | Desktop Smoke E2E (4) | `Install Playwright system dependencies` | 29m47s → cancelled @30m |
| 32155633872 | PR #5946 | `17d455a9b` | Desktop Core | `Install Tauri dependencies (Linux)` | 43m35s → cancelled @45m |
| 32095368993 | main | `ee992ff08` | Desktop Smoke E2E (3) | `Install Playwright system dependencies` | ~29m50s → cancelled @30m |
| 32156485001 | main | `3fdf289b7` | Desktop Smoke E2E (3) and (1) | `Install Playwright system dependencies` | ~29m50s → cancelled @30m |
| 32158297977 | main | `5694e78de` | Desktop Smoke E2E (2) and (3) | `Install Playwright system dependencies` | observed running >20m |

In every case each preceding step succeeded and every following step is `skipped`. Annotation is always `The job has exceeded the maximum execution time of 30m0s` / `45m0s` — nothing names apt, which is what makes this expensive to diagnose. The PR that surfaced it (#5946) changes only six files under `docs/`.

## Why it's worth fixing rather than re-running

The failure is silent about its own cause. A reviewer sees "Desktop Core timed out at 45m" and reasonably suspects a build regression; the actual event is a package mirror being slow during a ~4-minute apt install. Re-running works often enough that the underlying tax stays invisible.

## Suggested fix

Bound the step so it fails fast and says what happened:

```yaml
- name: Install Playwright system dependencies
timeout-minutes: 10
run: cd desktop && pnpm exec playwright install-deps chromium
```

and likewise for the Tauri deps step. A step-level `timeout-minutes` turns a 30-minute silent budget burn into a fast, correctly-attributed failure. Optionally add `-o Acquire::http::Dl-Limit` / an overall `timeout` wrapper, but the step bound is the part that makes the diagnosis obvious.

Contributor guide

Open the contributing guide

Research direction

Start with .github/workflows/ci.yml lines 159-183 and 271-272, reading the two apt-related workflow steps and their existing job timeouts. Add bounded step-level handling for both installation steps, then validate the workflow syntax and confirm that an installation failure is reported at the step rather than only as a job timeout.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, linux
Domain
ci-cd, devops
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
86/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.