Management of Project Storage

Description

As GitLab becomes more popular, in particular CI/CD, it is possible to consume significant amounts of storage space without necessarily realizing it. This is especially true when the server's default setting is to not expire any build artifacts or registry containers.

To help support users understanding how much storage they are consuming, and what that data is, we should offer a method to cleanly display this information.

Proposal

A new tab can be added within the Settings menu, where storage information can be displayed and potentially managed. Based on https://gitlab.com/gitlab-org/gitlab-ce/issues/30300, we are most likely going to go with a single storage calculation and limit. All storage and files are treated equally when contributing to the size of the project/group.

Because we will also be metering CI Build Minutes, we could consider naming this tab on the settings menu "Usage".

Current and future project files should be included in this calculation, for example:

  • Git Repository
    • Git Repository
    • LFS
  • Discussion
    • Uploads
  • CI
    • Artifacts
    • Container Registry
    • Job Logs

When displaying the current storage used by a project, we should provide a simply summary level view as well as more detailed information. The details will be important in helping customers understand what is consuming their storage, and what areas to target for cleanup.

I think we should have a simple graphic at the top, indicating usage with major categories being broken out.

One simple representation is what Apple has done in iTunes with phone storage: Screen_Shot_2017-03-31_at_3.24.52_PM

On mouse over of each section of the chart (bar, pie, etc.) we should show additional information on each subgroup mentioned in the above list. For example on CI mouseover you may see:

  • 2.8GB
    • Artifacts 1.3GB
    • Registry 1.4GB
    • Job Logs 0.1 GB

Beneath this informational section, we should then include additional sections devoted to managing that type of storage.

Documentation blurb

(Write the start of the documentation of this feature here, include:

  1. Why should someone use it; what's the underlying problem.
  2. What is the solution.
  3. How does someone use this

During implementation, this can then be copied and used as a starter for the documentation.)