Skip to content

ci: use ubuntu-slim for lightweight lint jobs - #117

Merged
robjtede merged 1 commit into
mainfrom
ci/ubuntu-slim-assessment
Nov 3, 2026
Merged

robjtede merged 1 commit into
mainfrom
ci/ubuntu-slim-assessment

Conversation

@robjtede

@robjtede robjtede commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Move only Lint / fmt and Lint / zizmor (GitHub Actions Security), neither with a matrix, to ubuntu-slim. Keep all steps and permissions unchanged.

GitHub documents public/private availability, 1 CPU, 5 GB RAM, 14 GB disk and a 15-minute job limit. The runner is an unprivileged container; privileged mounts and Docker-in-Docker are unsupported. Its Ubuntu 24.04 image includes Bash, Git, curl, Node, Python and pip, but no preinstalled Rust toolchain. The existing Rust setup installs rustfmt. The pinned zizmor action downloads a Python wheel and does not use Docker.

Sources: https://docs.github.com/en/actions/reference/runners/github-hosted-runners and https://github.com/actions/runner-images/blob/main/images/ubuntu-slim/ubuntu-slim-Readme.md

Retained: CI/test, Lint/clippy, Lint/lint-docs, Lint/external-types, Coverage/coverage and Release/release use compilation, dependency analysis or Nix; Benchmark/benchmarks needs its dedicated CodSpeed ARM runner. Release and coverage workflows were not triggered for measurement.

Validation: prettier --check .github/workflows/lint.yml passed (the YAML check from the justfile). Hosted compatibility evidence is pending.

Historical baseline, all successful on ubuntu-latest; execution seconds = completed_at minus started_at, excluding queue time:

Run SHA fmt seconds zizmor seconds
https://github.com/x52dev/httpea/actions/runs/41554862606 fd7ae81 21 17
https://github.com/x52dev/httpea/actions/runs/41554631490 fe13df8 19 10
https://github.com/x52dev/httpea/actions/runs/41375754030 d6e3d71 18 9

Baseline n=3 each; medians: fmt 19s, zizmor 10s. Cache hits were not verified; Rust setup uses its default caching and zizmor has no explicit workflow cache. Historical commits, mutable nightly/tool downloads, cache state and runner-image differences confound comparison. Queue times were not measured or included. Slim n=0; median and percent change 100*(slim/base-1) pending. No compatibility failure or speed claim yet.

First slim result: Lint run https://github.com/x52dev/httpea/actions/runs/41636802863 attempt 1, head 0cf93f3. Both changed jobs passed on ubuntu-slim: fmt 32s (12:34:08–12:34:40 UTC), zizmor 18s (12:34:11–12:34:29 UTC). Slim n=1 medians 32s/18s; historical baseline comparison +68.4%/+80.0%. These are provisional historical comparisons, not same-code causal estimates. All Lint jobs and CI/test passed; the unchanged benchmark is still running. A second Lint-only attempt was requested to increase sample count without invoking release, coverage upload or benchmarks.

Attempt 2 passed: same head and ubuntu-slim labels, fmt 24s (12:37:46–12:38:10 UTC), zizmor 13s (12:37:46–12:37:59 UTC). Attempt 1 fmt had a confirmed cache miss. A third Lint-only attempt is requested for n=3. All PR checks passed before this rerun.

CodSpeed reported chunk_ext_empty changing from 8ns to 7ns, with an explicit software-environment mismatch warning. This result is from the unchanged dedicated benchmark runner and is excluded from the ubuntu-slim timing comparison. It is not evidence that these runner changes improve application performance.

Final measurements: attempt 3 passed, fmt 31s (12:39:51–12:40:22 UTC), zizmor 8s (12:39:51–12:39:59 UTC). All three slim attempts used head 0cf93f3 and no matrix. Attempt URLs: https://github.com/x52dev/httpea/actions/runs/41636802863/attempts/1, https://github.com/x52dev/httpea/actions/runs/41636802863/attempts/2, https://github.com/x52dev/httpea/actions/runs/41636802863/attempts/3.

Job Standard samples (s), n=3 Standard median Slim samples (s), n=3 Slim median Change
Lint/fmt 21, 19, 18 19s 32, 24, 31 31s +63.2%
Lint/zizmor 17, 10, 9 10s 18, 13, 8 13s +30.0%

Change = 100*(slim/base-1). These remain historical comparisons, not controlled same-code comparisons. Formatting attempt 1 missed the Rust cache; attempt 2 restored it. Baseline cache state remains unverified. Queue time is excluded and unmeasured. No pending timing samples. The increased median execution time is 12s for fmt and 3s for zizmor; both remain suitable lightweight tasks under the runner limit.

Failure audit: all three Lint attempts, CI and Benchmark succeeded. No executed failures, timeouts or capacity cancellations were observed, and no earlier failures required fixes. CodeRabbit was skipped, not failed. CI and Benchmark results are from their original executions, not additional measurement attempts. CodSpeed used baseline values for 77 skipped benchmarks; those are not executed samples. No rerun API rejections occurred. An initial PR-create HTTP 502 was resolved by retry and was not a CI failure.

@codspeed

codspeed Bot commented Nov 3, 2026

Copy link
Copy Markdown

Merging this PR will improve performance by 14.29%

1 warning

⚠️ 1 benchmark with a significant change ran in a different software environment

Its base and head results were measured with a different OS or toolchain, such as compiler, runtime or library versions, so the change might come from this difference rather than from the code. Open the benchmark to see what changed.

See affected benchmarks

⚡ 1 improved benchmark
✅ 112 untouched benchmarks
⏩ 77 skipped benchmarks1

Performance Changes

Benchmark BASE HEAD Efficiency
⚡ chunk_ext_empty 8 ns 7 ns +14.29%

Tip

Curious why performance improved? Comment @codspeedbot explain why performance improved on this PR, or directly use the CodSpeed MCP with your agent.


Comparing ci/ubuntu-slim-assessment (0cf93f3) with main (fd7ae81)

Open in CodSpeed

Footnotes

  1. 77 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

@robjtede
robjtede marked this pull request as ready for review November 3, 2026 16:10
@coderabbitai

coderabbitai Bot commented Nov 3, 2026

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Walkthrough

The fmt and zizmor jobs in the lint workflow now run on ubuntu-slim instead of ubuntu-latest. Other workflow jobs and settings are unchanged.

Merge Risk: Minimal · up to 0cf93

The runner changes appear mergeable. Reported runs passed; the modest execution-time increases do not indicate a workflow blocker.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly and concisely describes the main change: moving lightweight lint jobs to ubuntu-slim.
Description check Passed The description directly explains the runner changes, scope, validation, compatibility results, and timing measurements.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 26719d91-b76f-43e5-b126-bc15b230e9fe
Commits

Reviewing files that changed from the base of the PR and between fd7ae81 and 0cf93f3.

Files selected for processing: 1
  • .github/workflows/lint.yml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

@robjtede
robjtede added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 2dedee2 Nov 3, 2026
27 checks passed
@robjtede
robjtede deleted the ci/ubuntu-slim-assessment branch November 3, 2026 16:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant