Skip to content

ci: add job timeout caps + commitlint concurrency - #442

Merged
norrietaylor merged 2 commits into
mainfrom
ci/job-timeouts-and-commitlint-concurrency
Jun 17, 2026
Merged

ci: add job timeout caps + commitlint concurrency#442
norrietaylor merged 2 commits into
mainfrom
ci/job-timeouts-and-commitlint-concurrency

Conversation

@norrietaylor

@norrietaylor norrietaylor commented Jun 17, 2026

Copy link
Copy Markdown
Member

Root cause

No job in ci.yml set timeout-minutes — a hung job inherits GitHub's 6h ceiling. One June run already burned 191 min. minimal is the org's 2nd-largest runner-minute consumer (~18.5k min/mo MTD), and CI is the bulk of it.

commitlint.yml had no concurrency — stacked PR-push runs all ran to completion.

Fix

Per-job caps on all 10 ci.yml jobs (sized above observed p95):

Job Cap
fmt / dogfood / cargo-deny / minimal-check / ci-success 10
clippy 30
test 40
build-release-amd64 / build-release-arm64 45
release 30

commitlint: cancel-in-progress concurrency + 5-min cap.

Unchanged

ci.yml already has correct concurrency (cancel-in-progress on non-main refs).

Acceptance

  • Each job shows its cap in the run UI.
  • A second push to a PR cancels the prior commitlint run.

Source: org-wide Actions-minute audit.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Enhanced CI/CD pipeline reliability with execution timeout limits across multiple jobs.
    • Improved workflow concurrency management for commit linting processes to optimize resource usage.

No job in ci.yml set timeout-minutes, so a hung job inherits GitHub's 6h
ceiling — one June run already burned 191 min. Add per-job caps sized
above observed p95:
  fmt/dogfood/cargo-deny/minimal-check/ci-success 10, clippy 30,
  test 40, build-release-amd64/arm64 45, release 30

commitlint had no concurrency: stacked PR-push runs all ran to completion.
Add cancel-in-progress + a 5-min cap.

ci.yml already has correct concurrency (cancel non-main refs); unchanged.

Source: org-wide Actions-minute audit (minimal = 2nd runner-minute consumer).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5a3fdd96-f85c-4a37-ae29-e7dcdaf1afeb

📥 Commits

Reviewing files that changed from the base of the PR and between b3f42b0 and cf47b44.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • .github/workflows/commitlint.yml

📝 Walkthrough

Walkthrough

timeout-minutes values are added to all ten jobs in .github/workflows/ci.yml (fmt, clippy, test, dogfood, build-release-amd64, build-release-arm64, cargo-deny, release, minimal-check, ci-success). In .github/workflows/commitlint.yml, a workflow-level concurrency block (group keyed to the current ref, cancel-in-progress: true) and a timeout-minutes: 5 job setting are added.

Changes

CI Workflow Timeout and Concurrency Controls

Layer / File(s) Summary
timeout-minutes added to all ci.yml jobs
.github/workflows/ci.yml
Adds timeout-minutes to fmt, clippy, test, dogfood, build-release-amd64, build-release-arm64, cargo-deny, release, minimal-check, and ci-success jobs. No other job configuration is modified.
commitlint workflow concurrency and timeout
.github/workflows/commitlint.yml
Adds a workflow-level concurrency block scoped to commitlint-${{ github.ref }} with cancel-in-progress: true, and sets timeout-minutes: 5 on the commitlint job.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • gominimal/minimal#353: Reshaped the same CI jobs in .github/workflows/ci.yml that now receive timeout-minutes in this PR.
  • gominimal/webapp#285: Introduced per-job timeout-minutes in a CI workflow using the same pattern applied here.

Poem

🐇 Tick-tock, the rabbit set a clock,
Each job now watches the hand go round,
No runaway build shall run aground,
Commitlint too gets cancelled in-flight,
Timeouts keep the pipeline tight! ⏱️

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: adding job timeout caps to ci.yml and concurrency controls to commitlint.yml, matching the core objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

dogfood (uncached build-smoke compile) normally runs 10-12.6 min; the
10-min cap killed healthy runs. Size above observed max with headroom.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@norrietaylor
norrietaylor enabled auto-merge (squash) June 17, 2026 18:52
@norrietaylor
norrietaylor merged commit 85bf1f4 into main Jun 17, 2026
18 checks passed
@norrietaylor
norrietaylor deleted the ci/job-timeouts-and-commitlint-concurrency branch June 17, 2026 19:02
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.

2 participants