Add timeout configurations and path filters to CI workflows #10068

Open
opened 2026-04-16 21:07:13 +00:00 by HAL9000 · 0 comments
Owner

Metadata

  • Commit message: feat: add timeouts, path filters, and concurrency controls to CI workflows
  • Branch name: feature/m1-ci-timeout-path-filter-concurrency

Background and Context

The CI workflows in .forgejo/workflows/ lack several reliability and efficiency improvements that are standard practice for production CI pipelines. Currently:

  • Only e2e_tests has a timeout-minutes: 45 configuration; all other long-running jobs can run indefinitely if they hang
  • Workflows trigger on all pushes and PRs regardless of which files changed, wasting CI resources on documentation-only changes
  • No concurrency controls exist to cancel stale runs when new commits are pushed to the same branch

These gaps lead to wasted CI resources, slower feedback loops, and potential runaway jobs that consume runner capacity.

Expected Behavior

The CI workflows should:

  1. Have explicit timeout configurations on all long-running jobs to prevent runaway executions
  2. Skip CI runs when only non-code files change (docs, markdown, gitignore, etc.)
  3. Cancel in-progress runs for a branch when a new commit is pushed, preventing resource waste

Acceptance Criteria

  • unit_tests job has timeout-minutes: 30
  • integration_tests job has timeout-minutes: 45
  • security_scan job has timeout-minutes: 20
  • coverage job has timeout-minutes: 30
  • All other long-running jobs have appropriate timeout-minutes values
  • on.push and on.pull_request triggers include paths-ignore filters for: docs/**, **/*.md, .gitignore, LICENSE, *.txt (non-requirements)
  • Concurrency groups are configured: group: ${{ github.workflow }}-${{ github.ref }} with cancel-in-progress: true
  • A doc-only PR does not trigger the full CI pipeline
  • A new push to a branch cancels any in-progress run for that branch
  • Timeout values are documented in CONTRIBUTING.md
  • Test coverage >= 97% maintained

Subtasks

  • Audit all jobs in .forgejo/workflows/ci.yml and identify those lacking timeout-minutes
  • Add timeout-minutes to unit_tests, integration_tests, security_scan, coverage, and any other long-running jobs
  • Add paths-ignore filters to on.push and on.pull_request triggers in ci.yml
  • Add concurrency configuration at the workflow level in ci.yml
  • Review .forgejo/workflows/ for any other workflow files that need the same treatment
  • Test path filter by creating a doc-only PR and verifying CI is skipped
  • Test concurrency by pushing two commits in quick succession and verifying the first run is cancelled
  • Update CONTRIBUTING.md to document timeout values and path filter behavior

Definition of Done

This issue should be closed when:

  • All long-running CI jobs have explicit timeout configurations
  • Path filters prevent unnecessary CI runs on documentation-only changes
  • Concurrency controls cancel stale runs on new pushes
  • The changes are merged to the main branch via a PR that passes all required CI checks
  • CONTRIBUTING.md documents the new CI behavior

Automated by CleverAgents Bot
Agent: new-issue-creator

## Metadata - **Commit message:** `feat: add timeouts, path filters, and concurrency controls to CI workflows` - **Branch name:** `feature/m1-ci-timeout-path-filter-concurrency` ## Background and Context The CI workflows in `.forgejo/workflows/` lack several reliability and efficiency improvements that are standard practice for production CI pipelines. Currently: - Only `e2e_tests` has a `timeout-minutes: 45` configuration; all other long-running jobs can run indefinitely if they hang - Workflows trigger on all pushes and PRs regardless of which files changed, wasting CI resources on documentation-only changes - No concurrency controls exist to cancel stale runs when new commits are pushed to the same branch These gaps lead to wasted CI resources, slower feedback loops, and potential runaway jobs that consume runner capacity. ## Expected Behavior The CI workflows should: 1. Have explicit timeout configurations on all long-running jobs to prevent runaway executions 2. Skip CI runs when only non-code files change (docs, markdown, gitignore, etc.) 3. Cancel in-progress runs for a branch when a new commit is pushed, preventing resource waste ## Acceptance Criteria - [ ] `unit_tests` job has `timeout-minutes: 30` - [ ] `integration_tests` job has `timeout-minutes: 45` - [ ] `security_scan` job has `timeout-minutes: 20` - [ ] `coverage` job has `timeout-minutes: 30` - [ ] All other long-running jobs have appropriate `timeout-minutes` values - [ ] `on.push` and `on.pull_request` triggers include `paths-ignore` filters for: `docs/**`, `**/*.md`, `.gitignore`, `LICENSE`, `*.txt` (non-requirements) - [ ] Concurrency groups are configured: `group: ${{ github.workflow }}-${{ github.ref }}` with `cancel-in-progress: true` - [ ] A doc-only PR does not trigger the full CI pipeline - [ ] A new push to a branch cancels any in-progress run for that branch - [ ] Timeout values are documented in `CONTRIBUTING.md` - [ ] Test coverage >= 97% maintained ## Subtasks - [ ] Audit all jobs in `.forgejo/workflows/ci.yml` and identify those lacking `timeout-minutes` - [ ] Add `timeout-minutes` to `unit_tests`, `integration_tests`, `security_scan`, `coverage`, and any other long-running jobs - [ ] Add `paths-ignore` filters to `on.push` and `on.pull_request` triggers in `ci.yml` - [ ] Add `concurrency` configuration at the workflow level in `ci.yml` - [ ] Review `.forgejo/workflows/` for any other workflow files that need the same treatment - [ ] Test path filter by creating a doc-only PR and verifying CI is skipped - [ ] Test concurrency by pushing two commits in quick succession and verifying the first run is cancelled - [ ] Update `CONTRIBUTING.md` to document timeout values and path filter behavior ## Definition of Done This issue should be closed when: - All long-running CI jobs have explicit timeout configurations - Path filters prevent unnecessary CI runs on documentation-only changes - Concurrency controls cancel stale runs on new pushes - The changes are merged to the main branch via a PR that passes all required CI checks - `CONTRIBUTING.md` documents the new CI behavior --- **Automated by CleverAgents Bot** Agent: new-issue-creator
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core#10068
No description provided.