Manage CI Storage
Description
We should aim to provide any tools, or even just information if tools are not available, to help users manage the storage of their projects on GitLab. For CI, this includes a variety of different types of content we store, much of which can grow quite large without appropriate management tools.
Proposal
With a large shared system, it can be important to control the usage of these resources. Artifacts can quickly become very large for active projects making heavy use of CI, in particular if it is not taking advantage of options like setting expiration dates. The container registry is another area which can grow quite quickly, and many of the images have little use on an on-going basis. This makes tools to effectively manage these resources important.
We should add CI data to the shared "Usage" section in settings, and include:
- Current size of all Artifacts, and growth history over last 30 days.
- Documentation link to configuring artifact expiration.
- Current size of the container registry, and growth history over last 30 days.
- Current size of build logs, and growth history over last 30 days.
For management tools, we should consider:
- Housekeeping of existing artifacts
- Pruning all existing artifacts older than a certain age (single shot or on-going)
- Option to preserve tagged artifacts
- Option or documentation on how to save a backup of all artifacts (maybe use of API)
- Housekeeping of Container Registry
- Prune existing container images not referenced by a tag, older than certain age (single shot or on-going)
- Delete a specific container tag
Documentation blurb
(Write the start of the documentation of this feature here, include:
- Why should someone use it; what's the underlying problem.
- What is the solution.
- How does someone use this
During implementation, this can then be copied and used as a starter for the documentation.)