TEST-INFRA: [ci-pipeline-design] Create Custom Docker Image to Speed Up CI Pipeline #6059

Open
opened 2026-04-09 14:15:47 +00:00 by HAL9000 · 0 comments
Owner

Metadata

  • Branch: test-infra/ci-pipeline-design/custom-docker-image
  • Commit Message: perf(ci): create custom Docker image with pre-installed dependencies to reduce CI setup overhead
  • Milestone: (backlog — see note below)
  • Parent Epic: #5407

Description

The current CI pipeline, as defined in .forgejo/workflows/ci.yml, has several jobs that repeat the same setup steps: installing Node.js, Python, uv, nox, git, curl, tar, and Helm. This adds significant overhead to each job and increases the overall pipeline execution time.

To optimize this, we should create a custom Docker image that comes pre-installed with all the common dependencies required by the CI jobs. This image would then be used as the container.image for the relevant jobs in the CI workflow.

Subtasks

  • Create a Dockerfile for the custom CI image in a dedicated directory (e.g., docker/ci/)
  • The Dockerfile should include Python 3.13, Node.js, uv, nox, git, curl, tar, and Helm
  • Add a Forgejo Actions workflow (or job) to build and publish the image to a container registry on changes to the Dockerfile
  • Publish the image to a container registry accessible by the CI runners
  • Update .forgejo/workflows/ci.yml to use the new custom Docker image as container.image for the relevant CI jobs
  • Remove the now-redundant per-job setup steps from ci.yml
  • Document the image build and publish process

Definition of Done

  • A Dockerfile exists and produces a working CI image with all required dependencies
  • The image is published to a container registry and accessible by CI runners
  • The CI pipeline jobs use the new image via container.image
  • Redundant per-job setup steps are removed from ci.yml
  • The overall CI pipeline execution time is measurably reduced
  • All nox stages pass (nox -e lint, nox -e typecheck, nox -e unit_tests, nox -e integration_tests)
  • Coverage >= 97% (nox -e coverage_report)

Duplicate Check

  • Searched for open and closed issues with keywords: docker, image, custom image, ci image
  • Found 0 similar issues

Backlog note: This issue was discovered during autonomous operation
on milestone v3.8.0. It does not block milestone completion and has been
placed in the backlog for human review and future milestone assignment.


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

## Metadata - **Branch**: `test-infra/ci-pipeline-design/custom-docker-image` - **Commit Message**: `perf(ci): create custom Docker image with pre-installed dependencies to reduce CI setup overhead` - **Milestone**: *(backlog — see note below)* - **Parent Epic**: #5407 ## Description The current CI pipeline, as defined in `.forgejo/workflows/ci.yml`, has several jobs that repeat the same setup steps: installing Node.js, Python, uv, nox, git, curl, tar, and Helm. This adds significant overhead to each job and increases the overall pipeline execution time. To optimize this, we should create a custom Docker image that comes pre-installed with all the common dependencies required by the CI jobs. This image would then be used as the `container.image` for the relevant jobs in the CI workflow. ## Subtasks - [ ] Create a `Dockerfile` for the custom CI image in a dedicated directory (e.g., `docker/ci/`) - [ ] The Dockerfile should include Python 3.13, Node.js, uv, nox, git, curl, tar, and Helm - [ ] Add a Forgejo Actions workflow (or job) to build and publish the image to a container registry on changes to the Dockerfile - [ ] Publish the image to a container registry accessible by the CI runners - [ ] Update `.forgejo/workflows/ci.yml` to use the new custom Docker image as `container.image` for the relevant CI jobs - [ ] Remove the now-redundant per-job setup steps from `ci.yml` - [ ] Document the image build and publish process ## Definition of Done - [ ] A `Dockerfile` exists and produces a working CI image with all required dependencies - [ ] The image is published to a container registry and accessible by CI runners - [ ] The CI pipeline jobs use the new image via `container.image` - [ ] Redundant per-job setup steps are removed from `ci.yml` - [ ] The overall CI pipeline execution time is measurably reduced - [ ] All nox stages pass (`nox -e lint`, `nox -e typecheck`, `nox -e unit_tests`, `nox -e integration_tests`) - [ ] Coverage >= 97% (`nox -e coverage_report`) ## Duplicate Check - Searched for open and closed issues with keywords: `docker`, `image`, `custom image`, `ci image` - Found 0 similar issues > **Backlog note:** This issue was discovered during autonomous operation > on milestone v3.8.0. It does not block milestone completion and has been > placed in the backlog for human review and future milestone assignment. --- **Automated by CleverAgents Bot** Supervisor: Test Infrastructure | 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.

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