Project artifact repository storage growth from build frequency and artifact size.
Jenkins archives artifacts per build and, without a retention policy, storage grows unbounded at the daily rate of builds × average artifact size. Configuring 'discard old builds' to keep only the artifacts of the N most recent builds caps steady-state storage at that retention count multiplied by average artifact size, regardless of how many builds run per day — though a higher build rate means that fixed retention count covers a shorter calendar window.
storage = retentionBuilds × avgArtifactSize
Only if configured — the 'Discard Old Builds' job property (or `buildDiscarder` in pipeline syntax) can cap retention by build count and/or age; without it, archived artifacts accumulate indefinitely on the Jenkins controller or configured artifact storage.
For any non-trivial scale, external artifact storage (S3, Artifactory, Nexus) is strongly preferred — keeping large binaries on the Jenkins controller's disk risks filling it and slowing down the controller for all jobs, not just the ones producing large artifacts.
Archive only the essential outputs (final binaries/images, not intermediate build directories), compress before archiving, and retain full artifacts only for builds that were actually deployed while keeping lightweight metadata/logs for the rest.