Skip to content

ci(e2e): raise behaviour job timeout to 45m - #5519

Closed
ifireball wants to merge 1 commit into
mainfrom
ci/behaviour-timeout-45m
Closed

ci(e2e): raise behaviour job timeout to 45m#5519
ifireball wants to merge 1 commit into
mainfrom
ci/behaviour-timeout-45m

Conversation

@ifireball

Copy link
Copy Markdown
Member

Summary

  • Bump E2E Tests behaviour job timeout-minutes from 30 → 45.
  • Align make behaviour-test Go -timeout to 45m.

Why

pull_request_target workflows load YAML from base/main, so a timeout bump inside PR #5498 cannot take effect until it lands on main. Behaviour on #5498 was cancelled at exactly ~30m15s (timeout-minutes: 30 on main) while still running triage scenarios. Healthy suites already take ~24–29m; headroom is needed after dispatch-window increases (#5506).

Related

Test plan

Made with Cursor

URL-sourced harness behaviour scenarios push the suite past the 30m
pull_request_target job ceiling. PRs cannot raise this themselves because
pull_request_target uses the workflow from main.

Signed-off-by: Barak Korren <bkorren@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@ifireball
ifireball requested a review from a team as a code owner July 23, 2026 09:06
@ifireball ifireball added the ok-to-test Allow e2e CI to run after maintainer review (must be re-applied after each push) label Jul 23, 2026
@ifireball

Copy link
Copy Markdown
Member Author

Context for reviewers

This lands on main so pull_request_target CI can actually use the new budget.

Evidence from #5498: behaviour job cancelled at exactly ~30m15s (timeout-minutes: 30 from base/main). The same timeout bump already exists on #5498's branch but cannot take effect until this (or that) change is on main.

Required checks are test / e2e / commit-lint — behaviour is not required for merge. Please approve the protected-path workflow change when convenient so #5498 babysit can proceed.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

CI: increase behaviour E2E timeouts to 45 minutes

⚙️ Configuration changes 🐞 Bug fix 🕐 Less than 10 minutes

Grey Divider

AI Description

• Raise GitHub Actions behaviour job timeout from 30 to 45 minutes.
• Align make behaviour-test Go test timeout to 45 minutes.
• Prevent pull_request_target E2E cancellations when suites run near 30 minutes.
Diagram

graph TD
  PR["Pull request / main"] --> WF["e2e.yml workflow"] --> JOB["behaviour job (45m)"] --> RUN["GitHub runner"] --> GOT["go test -timeout 45m"] --> SUITE["Behaviour E2E suite"]
  DEV((Developer)) --> MK["Makefile: behaviour-test"] --> GOT
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Shard behaviour E2E into multiple jobs
  • ➕ Reduces wall-clock time per job and lowers timeout pressure
  • ➕ Improves signal isolation when a subset is slow/flaky
  • ➖ More CI complexity (matrix, reporting, aggregation)
  • ➖ Potentially higher total runner minutes
2. Split slow triage scenarios into a separate scheduled/nightly suite
  • ➕ Keeps PR gating fast while still covering long-running scenarios
  • ➕ Allows different timeouts and retry policies per suite
  • ➖ Reduces immediate PR feedback on triage scenarios
  • ➖ Requires defining and maintaining suite boundaries

Recommendation: Proceed with the timeout increase as a pragmatic, low-risk fix (especially because pull_request_target workflows must be updated on main to take effect). Revisit sharding or suite-splitting if runtimes continue trending upward or start approaching 45 minutes.

Files changed (2) +2 / -2

Other (2) +2 / -2
e2e.ymlIncrease behaviour job timeout-minutes to 45 +1/-1

Increase behaviour job timeout-minutes to 45

• Raises the GitHub Actions 'behaviour' E2E job timeout from 30 to 45 minutes to avoid cancellations for longer-running suites under 'pull_request_target'.

.github/workflows/e2e.yml

MakefileAlign behaviour-test Go timeout to 45m +1/-1

Align behaviour-test Go timeout to 45m

• Updates the 'behaviour-test' target to run 'go test' with '-timeout 45m', matching the CI runtime ceiling for consistency between local and CI execution.

Makefile

@fullsend-ai-review

fullsend-ai-review Bot commented Jul 23, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 9:07 AM UTC · Completed 9:16 AM UTC
Commit: 46db852 · View workflow run →

@github-actions

Copy link
Copy Markdown

Site preview

Preview: https://04b70578-site.fullsend-ai.workers.dev

Commit: 46db8527895a1d0a9b8f421ada835a65461be627

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 54 rules

Grey Divider


Remediation recommended

1. No timeout headroom 🐞 Bug ☼ Reliability
Description
The behaviour job sets timeout-minutes: 45 while make behaviour-test runs `go test -timeout
45m`, so checkout/setup/auth time can consume part of the 45m budget and GitHub may cancel the job
before Go’s timeout triggers. This can reduce diagnosability (no Go timeout dump) and may prevent
failure-only artifact upload from completing if the job is cancelled near the limit.
Code

.github/workflows/e2e.yml[185]

+    timeout-minutes: 45
Relevance

⭐⭐⭐ High

Team often accepts CI reliability hardening; adding timeout-minutes headroom avoids GitHub cancel
before Go timeout/artifacts.

PR-#2106
PR-#2617
PR-#5457

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The workflow runs multiple steps before make behaviour-test and performs a failure-only artifact
upload after; all of this counts toward timeout-minutes, so a 45m go test started after setup
can exceed the remaining job budget and be cancelled by GitHub first.

.github/workflows/e2e.yml[178-277]
Makefile[155-160]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The behaviour workflow job timeout equals the Go test timeout, but the job includes several non-test steps (changes detection, checkout, setup-go, GCP auth) and a failure-only artifact upload. If the test run is long or hangs, GitHub’s job-level timeout can fire before `go test -timeout` does, which reduces useful timeout diagnostics and can interrupt/skip artifact uploading.

### Issue Context
This PR raises both the job timeout and `go test -timeout` to 45m, but keeping them equal still leaves zero headroom.

### Fix Focus Areas
- .github/workflows/e2e.yml[178-277]
- Makefile[155-160]

### Suggested fix
- Increase the **job** timeout above the **test** timeout (e.g., job `timeout-minutes: 55` while keeping `go test -timeout 45m`).
- Optionally also set a **step-level** timeout for `Run behaviour tests` (e.g., `timeout-minutes: 45`) so the test command is bounded, while the extra job headroom covers setup + artifact upload.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread .github/workflows/e2e.yml
(github.event_name != 'pull_request_target' || needs.gate.outputs.authorized == 'true')
runs-on: ubuntu-24.04
timeout-minutes: 30
timeout-minutes: 45

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

1. No timeout headroom 🐞 Bug ☼ Reliability

The behaviour job sets timeout-minutes: 45 while make behaviour-test runs `go test -timeout
45m`, so checkout/setup/auth time can consume part of the 45m budget and GitHub may cancel the job
before Go’s timeout triggers. This can reduce diagnosability (no Go timeout dump) and may prevent
failure-only artifact upload from completing if the job is cancelled near the limit.
Agent Prompt
### Issue description
The behaviour workflow job timeout equals the Go test timeout, but the job includes several non-test steps (changes detection, checkout, setup-go, GCP auth) and a failure-only artifact upload. If the test run is long or hangs, GitHub’s job-level timeout can fire before `go test -timeout` does, which reduces useful timeout diagnostics and can interrupt/skip artifact uploading.

### Issue Context
This PR raises both the job timeout and `go test -timeout` to 45m, but keeping them equal still leaves zero headroom.

### Fix Focus Areas
- .github/workflows/e2e.yml[178-277]
- Makefile[155-160]

### Suggested fix
- Increase the **job** timeout above the **test** timeout (e.g., job `timeout-minutes: 55` while keeping `go test -timeout 45m`).
- Optionally also set a **step-level** timeout for `Run behaviour tests` (e.g., `timeout-minutes: 45`) so the test command is bounded, while the extra job headroom covers setup + artifact upload.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@fullsend-ai-review

Copy link
Copy Markdown

Review

Findings

High

  • [protected-path] .github/workflows/e2e.yml — This PR modifies a file under the .github/ protected path. The PR has no linked issue providing formal authorization for modifying governance/infrastructure files. While the PR description clearly explains the rationale (behaviour tests on test(#5493): fold PR-to-issue negative into PR-label positive scenario #5498 cancelled at ~30m15s with healthy suites at ~24–29m, headroom needed after dispatch-window increases in ci(#5503): increase dispatch detection window to 4 minutes #5506), human approval is always required for protected-path changes.
    Remediation: Link a tracking issue authorizing the CI timeout change, or obtain explicit human reviewer approval for modifying .github/ files.

Labels: PR modifies e2e CI workflow and Makefile test targets

@fullsend-ai-review fullsend-ai-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the review comment for full details.

Comment thread .github/workflows/e2e.yml
(github.event_name != 'pull_request_target' || needs.gate.outputs.authorized == 'true')
runs-on: ubuntu-24.04
timeout-minutes: 30
timeout-minutes: 45

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[high] protected-path

This PR modifies .github/workflows/e2e.yml, which is under the .github/ protected path. The PR has no linked issue providing formal authorization for modifying governance/infrastructure files. While the PR description clearly explains the rationale (behaviour tests on #5498 cancelled at ~30m15s with healthy suites at ~24-29m, headroom needed after dispatch-window increases in #5506), human approval is always required for protected-path changes.

Suggested fix: Link a tracking issue authorizing the CI timeout change, or obtain explicit human reviewer approval for modifying .github/ files.

@fullsend-ai-review fullsend-ai-review Bot added component/ci CI pipelines and checks component/e2e End-to-end tests labels Jul 23, 2026
@ifireball

Copy link
Copy Markdown
Member Author

Superseded by #5498, which merged the same behaviour timeout-minutes 30→45 + Makefile -timeout 45m bump to main (4ef60e77). Closing as duplicate.

@ifireball ifireball closed this Jul 23, 2026
@fullsend-ai-retro

fullsend-ai-retro Bot commented Jul 23, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 10:18 AM UTC · Completed 10:28 AM UTC
Commit: 46db852 · View workflow run →

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #5519 — ci(e2e): raise behaviour job timeout to 45m

Workflow: Human-authored, 2-line CI config change (timeout 30→45m in e2e.yml and Makefile). Review agent (run 29993923766) classified the PR as trivial/value-only, dispatched 3 sub-agents (correctness, style-conventions, intent-coherence), and submitted CHANGES_REQUESTED with a single High [protected-path] finding. Human reviewer rh-hemartin approved immediately (4 minutes later). PR was closed without merge — superseded by PR #5498 which landed the same change.

Review quality: The review agent's only finding was governance-related (no linked issue for a protected-path change), not a code quality issue. The Qodo bot caught a real functional concern the review agent missed: the Go test timeout (45m) equals the job timeout (45m), leaving zero headroom for checkout/setup/auth/artifact-upload steps. This is a legitimate CI correctness gap.

No new proposals filed — all improvement opportunities are covered by existing open issues:

Agents repo: fullsend-ai/agents at ca518d9. Cost: $1.69, duration ~6.5 minutes. Token efficiency was good — the agent correctly scoped to 3 sub-agents for a trivial PR (skipping security, docs-currency, cross-repo-contracts).

@github-actions
github-actions Bot deleted the ci/behaviour-timeout-45m branch August 23, 2026 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/ci CI pipelines and checks component/e2e End-to-end tests ok-to-test Allow e2e CI to run after maintainer review (must be re-applied after each push)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants