TEST-INFRA: [ci-execution-time] Create custom Docker image for CI jobs #2324

Closed
opened 2026-04-03 14:23:34 +00:00 by freemo · 2 comments
Owner

Metadata

  • Branch: chore/m9-ci-custom-docker-image
  • Commit Message: chore(ci): create custom Docker image for CI jobs
  • Milestone: v3.8.0
  • Parent Epic: #1678

Background and Context

Each CI job in .forgejo/workflows/ci.yml currently runs in a generic python:3.13-slim base image and then repeats the same setup steps on every run: installing Node.js, installing uv, installing nox, and configuring the uv package cache. This redundant per-job setup adds unnecessary overhead to every pipeline execution and increases total CI execution time.

By building and publishing a custom Docker image with all common CI dependencies pre-installed, each job can skip these setup steps entirely and begin executing meaningful work immediately.

Expected Behavior

A custom Docker image is available in a container registry that pre-installs Python 3.13, Node.js, uv, nox, and all other shared CI tooling. The CI workflow is updated to use this image, and all redundant per-job setup steps are removed.

Acceptance Criteria

  • A Dockerfile exists that produces a CI image containing Python 3.13, Node.js, uv, nox, and all other common CI dependencies.
  • The custom Docker image is built and pushed to a container registry accessible by the CI runners.
  • .forgejo/workflows/ci.yml is updated to reference the custom Docker image for all applicable jobs.
  • Redundant per-job setup steps (Node.js install, uv install, nox install, cache configuration) are removed from individual job definitions.
  • All CI jobs pass successfully with the new image.
  • The change is documented (README or CI documentation updated as appropriate).

Subtasks

  • Create a Dockerfile for a custom CI image that includes Node.js, uv, nox, and other required dependencies.
  • Build and push the custom Docker image to a container registry.
  • Update the .forgejo/workflows/ci.yml file to use the new custom Docker image.
  • Remove the redundant setup steps from the CI jobs.
  • Verify all CI jobs pass with the new image.
  • Run nox (all default sessions), fix any errors.
  • Verify coverage >= 97% via nox -s coverage_report.

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • A custom Docker image for the CI jobs is created and available in a container registry.
  • The CI workflow is updated to use the custom Docker image.
  • The CI execution time is reduced by removing the redundant setup steps.
  • 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 lines providing relevant 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**: `chore/m9-ci-custom-docker-image` - **Commit Message**: `chore(ci): create custom Docker image for CI jobs` - **Milestone**: v3.8.0 - **Parent Epic**: #1678 ## Background and Context Each CI job in `.forgejo/workflows/ci.yml` currently runs in a generic `python:3.13-slim` base image and then repeats the same setup steps on every run: installing Node.js, installing `uv`, installing `nox`, and configuring the `uv` package cache. This redundant per-job setup adds unnecessary overhead to every pipeline execution and increases total CI execution time. By building and publishing a custom Docker image with all common CI dependencies pre-installed, each job can skip these setup steps entirely and begin executing meaningful work immediately. ## Expected Behavior A custom Docker image is available in a container registry that pre-installs Python 3.13, Node.js, `uv`, `nox`, and all other shared CI tooling. The CI workflow is updated to use this image, and all redundant per-job setup steps are removed. ## Acceptance Criteria - A `Dockerfile` exists that produces a CI image containing Python 3.13, Node.js, `uv`, `nox`, and all other common CI dependencies. - The custom Docker image is built and pushed to a container registry accessible by the CI runners. - `.forgejo/workflows/ci.yml` is updated to reference the custom Docker image for all applicable jobs. - Redundant per-job setup steps (Node.js install, `uv` install, `nox` install, cache configuration) are removed from individual job definitions. - All CI jobs pass successfully with the new image. - The change is documented (README or CI documentation updated as appropriate). ## Subtasks - [ ] Create a `Dockerfile` for a custom CI image that includes Node.js, `uv`, `nox`, and other required dependencies. - [ ] Build and push the custom Docker image to a container registry. - [ ] Update the `.forgejo/workflows/ci.yml` file to use the new custom Docker image. - [ ] Remove the redundant setup steps from the CI jobs. - [ ] Verify all CI jobs pass with the new image. - [ ] Run `nox` (all default sessions), fix any errors. - [ ] Verify coverage >= 97% via `nox -s coverage_report`. ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - A custom Docker image for the CI jobs is created and available in a container registry. - The CI workflow is updated to use the custom Docker image. - The CI execution time is reduced by removing the redundant setup steps. - 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 lines providing relevant 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-03 14:23:40 +00:00
Author
Owner

⚠️ Potential Duplicate Notice

A maintainer should review whether this issue overlaps with #2290 ("TEST-INFRA: [ci-execution-time] Optimize CI setup by using a custom Docker image"), which covers substantially the same scope. If they are duplicates, one should be closed with a reference to the other per the project's duplicate-handling policy.

This issue was created as a distinct tracked item at the request of the Test Infrastructure supervisor agent. If a maintainer determines these are duplicates, please close the lower-priority one and link accordingly.


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

⚠️ **Potential Duplicate Notice** A maintainer should review whether this issue overlaps with #2290 ("TEST-INFRA: [ci-execution-time] Optimize CI setup by using a custom Docker image"), which covers substantially the same scope. If they are duplicates, one should be closed with a reference to the other per the project's duplicate-handling policy. This issue was created as a distinct tracked item at the request of the Test Infrastructure supervisor agent. If a maintainer determines these are duplicates, please close the lower-priority one and link accordingly. --- **Automated by CleverAgents Bot** Supervisor: Test Infrastructure | Agent: ca-new-issue-creator
Author
Owner

Closing as duplicate of #2325.

This issue ("Create custom Docker image for CI jobs") covers the same scope as #2325 ("Create a base CI image with pre-installed dependencies"). Both propose creating a custom Docker image to speed up CI setup. Consolidating to avoid duplicate work.


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

Closing as duplicate of #2325. This issue ("Create custom Docker image for CI jobs") covers the same scope as #2325 ("Create a base CI image with pre-installed dependencies"). Both propose creating a custom Docker image to speed up CI setup. Consolidating to avoid duplicate work. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
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.

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