Skip to content

ci: bound every self-contained job at 120 minutes - #6006

Merged
renecannao merged 2 commits into
v3.0from
ci/job-timeouts-v30
Aug 9, 2026
Merged

ci: bound every self-contained job at 120 minutes#6006
renecannao merged 2 commits into
v3.0from
ci/job-timeouts-v30

Conversation

@renecannao

@renecannao renecannao commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Companion to #6005 (which bounds the reusable ci-*.yml jobs on GH-Actions). This covers workflows that define their jobs directly on v3.0 — the package matrix, macOS builds, CI-cluster-simulator, CI-lint-groups-json, CI-push-ci-base-image — which the callee-side change cannot reach.

No job had a timeout, so a hang ran to GitHub's 6-hour ceiling. GitHub marks such a run cancelled rather than failure, which also skips every archive step guarded by failure() && !cancelled() — so the run that most needs its logs uploads none.

358 jobs across 181 files. Files already setting timeout-minutes are left alone, as are pure caller workflows (timeout-minutes is not a valid key on a uses:-only job).

All 181 files re-parse as valid YAML.

Summary by CodeRabbit

  • Chores
    • Added 120-minute execution limits across build, packaging, release, testing, linting, review, and container-image automation.
    • Applied consistent timeouts across supported macOS, Linux distributions, architectures, and package variants.
    • Added 90-minute limits to selected simulation build and test steps.
    • Existing workflow behavior remains unchanged apart from the updated execution limits.

Companion to the GH-Actions change that bounds the reusable ci-*.yml jobs.
This covers the workflows that define their jobs directly on v3.0 -- the
package matrix, the macOS builds, CI-cluster-simulator, CI-lint-groups-json,
CI-push-ci-base-image -- which the callee-side change cannot reach.

No job had a timeout, so a hang ran to GitHub's 6-hour ceiling. GitHub marks
such a run 'cancelled' rather than 'failure', which also skips every archive
step guarded by `failure() && !cancelled()`, so the run that most needs its
logs uploads none.

358 jobs across 181 files. Files that already set timeout-minutes are left
alone, as are pure caller workflows: `timeout-minutes` is not a valid key on
a job that only has `uses:`.

All 181 files re-parse as valid YAML.
@coderabbitai

coderabbitai Bot commented Aug 9, 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 Plus

Run ID: 91dcff7e-262a-41eb-be2d-2408c1c6bcaf

📥 Commits

Reviewing files that changed from the base of the PR and between e79baeb and 1cbe932.

📒 Files selected for processing (1)
  • .github/workflows/CI-cluster-simulator.yml
📜 Recent review details
🔇 Additional comments (1)
.github/workflows/CI-cluster-simulator.yml (1)

34-34: LGTM!

Also applies to: 61-61, 83-83, 119-119


📝 Walkthrough

Walkthrough

The pull request adds timeout settings to GitHub Actions jobs across macOS, Linux packaging, simulator, lint, container, and Claude workflows.

Changes

CI workflow timeout standardization

Layer / File(s) Summary
Add workflow timeouts
.github/workflows/CI-build-macos-*.yml, .github/workflows/CI-package-*.yml, .github/workflows/CI-cluster-simulator.yml, .github/workflows/CI-lint-groups-json.yml, .github/workflows/CI-push-ci-base-image.yml, .github/workflows/claude*.yml
The workflows set 120-minute timeouts for CI jobs. Simulator build and test steps also set 90-minute timeouts.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

Suggested reviewers: wazir-ahmed

Poem

A rabbit watched the workflows run,
Then gave each job a timeout sun.
Mac and Linux, side by side,
Now stop on time with hops of pride.
CI bounds safely applied.

🚥 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 clearly summarizes the main change: adding 120-minute limits to self-contained CI jobs.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/job-timeouts-v30

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

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

Same reasoning as the GH-Actions side. CI-cluster-simulator is the only
workflow here that runs TAP groups and has an 'Archive failure logs' step
guarded by 'failure() && !cancelled()' (line 127). A job-level timeout alone
terminates the job before that step can run, so a hung simulation group
would produce no logs -- the exact gap this series is meant to close.

Bounding 'Run simulation tests' and 'Build simulation test runtime' at 90
minutes fails just the step, leaving job.status = failure and cancelled()
false, so the archive step runs. The 120-minute job budget stays as the
outer backstop.

The package/macOS workflows keep job-level bounds only: they have no
conditional artifact steps to lose, so there is nothing to preserve past a
termination.
@sonarqubecloud

sonarqubecloud Bot commented Aug 9, 2026

Copy link
Copy Markdown

@renecannao
renecannao merged commit 3c793a3 into v3.0 Aug 9, 2026
11 checks passed
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