Add missing job dependencies in CI pipeline #10067

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

Metadata

  • Commit message: fix: add missing job dependencies to coverage and docker CI jobs
  • Branch name: bugfix/m1-fix-ci-job-dependencies

Background and Context

The CI pipeline in .forgejo/workflows/ci.yml has incomplete job dependency chains that could allow downstream jobs to pass even when earlier test jobs fail. This creates a false sense of security and undermines the reliability of the merge gate.

Current Issues:

  1. The coverage job depends on [lint, typecheck, security, quality] but NOT on unit_tests or integration_tests — coverage can pass even if tests fail
  2. The docker job depends on [lint, typecheck, security, quality, unit_tests] but NOT on integration_tests or e2e_tests — Docker image builds can proceed before the full test suite passes
  3. The status-check job correctly depends on all jobs, but intermediate jobs have gaps that allow partial success states

Expected Behavior

The CI pipeline should enforce a strict dependency order:

  • All test jobs (unit_tests, integration_tests, e2e_tests) must pass before coverage runs
  • All test jobs must pass before docker builds proceed
  • No downstream job should be able to succeed if any upstream test job fails

Acceptance Criteria

  • The coverage job needs list includes: [lint, typecheck, security, quality, unit_tests, integration_tests, e2e_tests]
  • The docker job needs list includes: [lint, typecheck, security, quality, unit_tests, integration_tests, e2e_tests]
  • A CI run where unit_tests fails causes coverage and docker to be skipped/failed
  • A CI run where integration_tests fails causes coverage and docker to be skipped/failed
  • The status-check job still correctly aggregates all job results
  • All existing CI jobs continue to function correctly after the dependency update
  • Test coverage >= 97% maintained

Subtasks

  • Audit .forgejo/workflows/ci.yml for all job needs declarations
  • Update coverage job needs to include unit_tests, integration_tests, and e2e_tests
  • Update docker job needs to include integration_tests and e2e_tests
  • Verify the updated dependency graph does not create circular dependencies
  • Test the fix by triggering a CI run with a deliberate test failure to confirm downstream jobs are blocked
  • Review all other jobs in the pipeline for similar dependency gaps
  • Update CONTRIBUTING.md CI/CD section if the pipeline documentation needs updating

Definition of Done

This issue should be closed when:

  • The coverage and docker jobs correctly depend on all test jobs
  • A failing test job provably blocks downstream jobs
  • The fix is merged to the main branch via a PR that passes all required CI checks
  • The CI pipeline documentation reflects the corrected dependency graph

Automated by CleverAgents Bot
Agent: new-issue-creator

## Metadata - **Commit message:** `fix: add missing job dependencies to coverage and docker CI jobs` - **Branch name:** `bugfix/m1-fix-ci-job-dependencies` ## Background and Context The CI pipeline in `.forgejo/workflows/ci.yml` has incomplete job dependency chains that could allow downstream jobs to pass even when earlier test jobs fail. This creates a false sense of security and undermines the reliability of the merge gate. **Current Issues:** 1. The `coverage` job depends on `[lint, typecheck, security, quality]` but **NOT** on `unit_tests` or `integration_tests` — coverage can pass even if tests fail 2. The `docker` job depends on `[lint, typecheck, security, quality, unit_tests]` but **NOT** on `integration_tests` or `e2e_tests` — Docker image builds can proceed before the full test suite passes 3. The `status-check` job correctly depends on all jobs, but intermediate jobs have gaps that allow partial success states ## Expected Behavior The CI pipeline should enforce a strict dependency order: - All test jobs (`unit_tests`, `integration_tests`, `e2e_tests`) must pass before `coverage` runs - All test jobs must pass before `docker` builds proceed - No downstream job should be able to succeed if any upstream test job fails ## Acceptance Criteria - [ ] The `coverage` job `needs` list includes: `[lint, typecheck, security, quality, unit_tests, integration_tests, e2e_tests]` - [ ] The `docker` job `needs` list includes: `[lint, typecheck, security, quality, unit_tests, integration_tests, e2e_tests]` - [ ] A CI run where `unit_tests` fails causes `coverage` and `docker` to be skipped/failed - [ ] A CI run where `integration_tests` fails causes `coverage` and `docker` to be skipped/failed - [ ] The `status-check` job still correctly aggregates all job results - [ ] All existing CI jobs continue to function correctly after the dependency update - [ ] Test coverage >= 97% maintained ## Subtasks - [ ] Audit `.forgejo/workflows/ci.yml` for all job `needs` declarations - [ ] Update `coverage` job `needs` to include `unit_tests`, `integration_tests`, and `e2e_tests` - [ ] Update `docker` job `needs` to include `integration_tests` and `e2e_tests` - [ ] Verify the updated dependency graph does not create circular dependencies - [ ] Test the fix by triggering a CI run with a deliberate test failure to confirm downstream jobs are blocked - [ ] Review all other jobs in the pipeline for similar dependency gaps - [ ] Update `CONTRIBUTING.md` CI/CD section if the pipeline documentation needs updating ## Definition of Done This issue should be closed when: - The `coverage` and `docker` jobs correctly depend on all test jobs - A failing test job provably blocks downstream jobs - The fix is merged to the main branch via a PR that passes all required CI checks - The CI pipeline documentation reflects the corrected dependency graph --- **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#10067
No description provided.