Skip to content

ci: bound and shrink the Linux desktop dependency install - #3919

Merged
thymikee merged 1 commit into
mainfrom
ci/linux-desktop-deps-install
Oct 23, 2026
Merged

thymikee merged 1 commit into
mainfrom
ci/linux-desktop-deps-install

Conversation

@thymikee

@thymikee thymikee commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Summary

Fixes the recurring "Install Linux desktop dependencies" timeout in Linux Smoke Tests. One file: .github/workflows/linux.yml.

Cause. On 2026-10-22, 10 of 73 executed runs hit the 6-minute limit and 11 more took 135–337 s. Normal is 20–68 s. In run 39858436592 (#3918) the Azure mirror stalled a 2 MB poppler-data download, then crawled. My first push reproduced the stall on the same package. A later probe saw 69 MB/s for the same file. So it is a cold-cache miss on a slow upstream, and re-runs pass once the mirror is warm. Without --no-install-recommends the step also fetched 82 MB / 116 packages.

Fix.

  • --no-install-recommends: 44 new packages, 30.5 MB. The package list is unchanged.
  • Cache the downloaded .debs with actions/cache.
  • Download in a separate --download-only phase: 3 attempts, each under a deadline. dpkg never runs under a deadline.
  • timeout-minutes: 6 stays.

Validation

pnpm check:affected --run --head 7d1b2d0d…: exit 0.

Step duration Result
Before (2026-10-22) 10 × 372 s timeout; 11 × 135–337 s
After, cache miss 36 s
After, cache hit 13 s, 14 s

Earlier heads of this branch also gave 16, 21, 14 s and 14, 13, 13 s. The first push failed with a 60 s deadline during a bad mirror period. That is why the cache exists.

Risk: apt-get update still uses the mirror (3 × 30 s bound).

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Size Report

Metric Base Current Diff
Installed (including dependencies) 5.56 MB 5.56 MB 0 B
Package (unpacked) 5.56 MB 5.56 MB 0 B
Package (download) 1.69 MB 1.69 MB -9 B

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 28.4 ms 27.7 ms -0.7 ms
CLI --help 54.6 ms 52.9 ms -1.7 ms

Comment thread .github/workflows/probe-apt.yml Fixed
@thymikee
thymikee force-pushed the ci/linux-desktop-deps-install branch 3 times, most recently from 98cbf33 to 3eee766 Compare October 22, 2026 22:03
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@thymikee
thymikee force-pushed the ci/linux-desktop-deps-install branch from 3eee766 to 7d1b2d0 Compare October 22, 2026 22:19
@thymikee

Copy link
Copy Markdown
Member Author

The changes in 7d1b2d0 look ready to me. All 16 checks pass or are skipped, and the Linux Smoke Tests legs, which run the changed workflow, passed at this head. There are no conflicts, and nothing else must happen before merge.

Not blocking, and fine to take or leave: the cp of *.deb runs under set -e, so it would fail the step if no .deb is present (for example when a future runner image already has every package); || true or a compgen -G guard would cover that. Also, the fix described in the PR body is --no-install-recommends plus a bound, so would those alone, with the restore/save pair added only if timeouts persist, be simpler than the current setup? Last, the PR body links no issue, and #3918 was auto-linked but is an unrelated iPad fix, so please link the real timeout issue or leave it unlinked.

The CodeQL thread on permissions (#3919 (comment)) does not apply: it was about probe-apt.yml, which is not in this diff, so you can resolve it.

I did not rerun the workflow or measure step timings, so the 36s/13s figures are yours.

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Oct 22, 2026
@thymikee
thymikee merged commit 87f68d2 into main Oct 23, 2026
18 checks passed
@thymikee
thymikee deleted the ci/linux-desktop-deps-install branch October 23, 2026 09:39
@github-actions

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-10-23 09:39 UTC

thymikee added a commit that referenced this pull request Oct 24, 2026
* origin/main:
  fix(android): bound the dumpsys reads behind dialog and foreground checks (#3936)
  feat(android): detect Fire OS devices as Android TV targets and document Fire TV support (#3923)
  docs(macos): document Electron/Chromium app automation through the accessibility tree (#3932)
  test(capture-kit): encode solid test PNGs unfiltered to stay inside the unit budget (#3933)
  fix: guard bounded lifecycle and claim recovery (#3911)
  fix(ios): clear a long text value wherever the caret lands (#3908)
  fix(snapshot): stop iOS 27 floating-bar containers from covering content (#3912)
  ci: cache and bound the Linux desktop dependency install (#3919)
  fix: refuse resource operations in bounded composites (#3910)
  refactor(ios): decide bridge-failure scope and warning once (#3914)
  refactor(capture-kit): encode post-gesture stabilization baseline provenance (#3915)
  perf: expect the persistent session on Android snapshot-raw (#3913)
  test(ios): hold the fill read-count pin to the route it measures (#3909)
  perf(ios): admit tap text-input probes from fresh target evidence (#3881)
  feat(perf): time every Android command against the fixture app (#3902)
  chore: mark 0.21.31 as released
thymikee added a commit that referenced this pull request Oct 24, 2026
* origin/main:
  fix(android): bound the dumpsys reads behind dialog and foreground checks (#3936)
  feat(android): detect Fire OS devices as Android TV targets and document Fire TV support (#3923)
  docs(macos): document Electron/Chromium app automation through the accessibility tree (#3932)
  test(capture-kit): encode solid test PNGs unfiltered to stay inside the unit budget (#3933)
  fix: guard bounded lifecycle and claim recovery (#3911)
  fix(ios): clear a long text value wherever the caret lands (#3908)
  fix(snapshot): stop iOS 27 floating-bar containers from covering content (#3912)
  ci: cache and bound the Linux desktop dependency install (#3919)
thymikee added a commit that referenced this pull request Oct 24, 2026
* origin/main:
  fix(android): bound the dumpsys reads behind dialog and foreground checks (#3936)
  feat(android): detect Fire OS devices as Android TV targets and document Fire TV support (#3923)
  docs(macos): document Electron/Chromium app automation through the accessibility tree (#3932)
  test(capture-kit): encode solid test PNGs unfiltered to stay inside the unit budget (#3933)
  fix: guard bounded lifecycle and claim recovery (#3911)
  fix(ios): clear a long text value wherever the caret lands (#3908)
  fix(snapshot): stop iOS 27 floating-bar containers from covering content (#3912)
  ci: cache and bound the Linux desktop dependency install (#3919)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants