TEST-INFRA: [ci-pipeline-design] Implement dependency caching for uv #1652

Closed
opened 2026-04-02 23:23:47 +00:00 by freemo · 3 comments
Owner

Metadata

  • Branch: task/ci-implement-uv-dependency-caching
  • Commit Message: chore(ci): implement uv cache directory caching between CI runs
  • Milestone: v3.8.0
  • Parent Epic: (to be linked — no TEST-INFRA ci-pipeline-design Epic currently exists; see orphan note below)

Background and Context

The CI pipeline re-installs all Python dependencies on every run because the uv cache directory is not persisted between jobs. As the project's dependency tree grows, this results in increasingly long setup times on every CI execution, wasting runner resources and slowing developer feedback loops.

Caching the uv cache directory between runs allows subsequent CI jobs to skip redundant package downloads, significantly reducing overall CI execution time.

Area: CI/CD

Expected Behavior

The uv cache directory is cached between CI runs. Subsequent runs that use the same dependency set (i.e., pyproject.toml / uv.lock unchanged) restore the cache and skip re-downloading packages, resulting in measurably faster CI builds.

Subtasks

  • Identify the correct uv cache directory path (typically ~/.cache/uv or $(uv cache dir))
  • Configure the CI workflow to cache the uv cache directory using the appropriate cache key (e.g., uv-${{ hashFiles('uv.lock') }})
  • Add a restore-keys fallback so partial cache hits are still useful
  • Verify that the cache is correctly saved after a successful dependency installation step
  • Verify that the cache is correctly restored on subsequent runs
  • Confirm CI pipeline execution time is reduced after caching is enabled
  • Run nox (all default sessions), fix any errors
  • Verify coverage >= 97% via nox -s coverage_report

Definition of Done

  • All subtasks above are completed and checked off
  • The uv cache directory is persisted and restored between CI runs
  • The CI pipeline execution time is measurably faster due to dependency caching
  • A Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional details about the implementation
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done
  • All nox stages pass
  • Coverage >= 97%

Automated by CleverAgents Bot
Supervisor: Test Infrastructure | Agent: ca-new-issue-creator

## Metadata - **Branch**: `task/ci-implement-uv-dependency-caching` - **Commit Message**: `chore(ci): implement uv cache directory caching between CI runs` - **Milestone**: v3.8.0 - **Parent Epic**: *(to be linked — no TEST-INFRA ci-pipeline-design Epic currently exists; see orphan note below)* ## Background and Context The CI pipeline re-installs all Python dependencies on every run because the `uv` cache directory is not persisted between jobs. As the project's dependency tree grows, this results in increasingly long setup times on every CI execution, wasting runner resources and slowing developer feedback loops. Caching the `uv` cache directory between runs allows subsequent CI jobs to skip redundant package downloads, significantly reducing overall CI execution time. **Area**: CI/CD ## Expected Behavior The `uv` cache directory is cached between CI runs. Subsequent runs that use the same dependency set (i.e., `pyproject.toml` / `uv.lock` unchanged) restore the cache and skip re-downloading packages, resulting in measurably faster CI builds. ## Subtasks - [ ] Identify the correct `uv` cache directory path (typically `~/.cache/uv` or `$(uv cache dir)`) - [ ] Configure the CI workflow to cache the `uv` cache directory using the appropriate cache key (e.g., `uv-${{ hashFiles('uv.lock') }}`) - [ ] Add a restore-keys fallback so partial cache hits are still useful - [ ] Verify that the cache is correctly saved after a successful dependency installation step - [ ] Verify that the cache is correctly restored on subsequent runs - [ ] Confirm CI pipeline execution time is reduced after caching is enabled - [ ] Run `nox` (all default sessions), fix any errors - [ ] Verify coverage >= 97% via `nox -s coverage_report` ## Definition of Done - [ ] All subtasks above are completed and checked off - [ ] The `uv` cache directory is persisted and restored between CI runs - [ ] The CI pipeline execution time is measurably faster due to dependency caching - [ ] A Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional details about the implementation - [ ] The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly - [ ] The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done - [ ] All nox stages pass - [ ] Coverage >= 97% --- **Automated by CleverAgents Bot** Supervisor: Test Infrastructure | Agent: ca-new-issue-creator
freemo added this to the v3.8.0 milestone 2026-04-02 23:24:08 +00:00
Author
Owner

⚠️ Orphan Issue — Manual Linking Required

This issue could not be automatically linked to a parent Epic because no Type/Epic issue exists for the TEST-INFRA / ci-pipeline-design workstream.

Per CONTRIBUTING.md, orphan issues are not permitted. A project owner must either:

  1. Create a new TEST-INFRA: [ci-pipeline-design] Epic and then link this issue as a child (this issue should block the parent Epic), or
  2. Identify an existing Epic that covers CI pipeline improvements and link this issue to it.

Once the parent Epic is identified or created, set the dependency using Forgejo's dependency system so that this issue blocks the parent Epic.


Automated by CleverAgents Bot
Supervisor: Test Infrastructure | Agent: ca-new-issue-creator

⚠️ **Orphan Issue — Manual Linking Required** This issue could not be automatically linked to a parent Epic because **no `Type/Epic` issue exists for the `TEST-INFRA` / `ci-pipeline-design` workstream**. Per `CONTRIBUTING.md`, orphan issues are not permitted. A project owner must either: 1. **Create a new `TEST-INFRA: [ci-pipeline-design]` Epic** and then link this issue as a child (this issue should **block** the parent Epic), or 2. **Identify an existing Epic** that covers CI pipeline improvements and link this issue to it. Once the parent Epic is identified or created, set the dependency using Forgejo's dependency system so that this issue **blocks** the parent Epic. --- **Automated by CleverAgents Bot** Supervisor: Test Infrastructure | Agent: ca-new-issue-creator
Author
Owner

Closing as duplicate of #1589 (dependency caching improvement). This CI caching improvement is already tracked.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: ca-project-owner

Closing as duplicate of #1589 (dependency caching improvement). This CI caching improvement is already tracked. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
freemo 2026-04-02 23:31:07 +00:00
Author
Owner

Closing as duplicate (marked State/Duplicate). This CI dependency caching issue duplicates existing issues tracking the same work.


Automated by CleverAgents Bot
Supervisor: Backlog Grooming | Agent: ca-backlog-groomer

Closing as duplicate (marked `State/Duplicate`). This CI dependency caching issue duplicates existing issues tracking the same work. --- **Automated by CleverAgents Bot** Supervisor: Backlog Grooming | Agent: ca-backlog-groomer
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#1652
No description provided.