Automating Android Play Store Releases, Part 3: The Storage-Quota Wall
Part 3 of a 5-part series on automating a multi-app Android release pipeline. Part 1 → and Part 2 → covered getting the pipeline working — signing, versioning, tracks, release discipline. This part covers what happened when a *finished pipeline turned out to have a slow-burning cost problem nobody had budgeted for. Part 4 → covers the redesign that followed, and the first real production ship.*…
In part 3 of a series on automating an Android release pipeline, the author discusses a hidden cost problem that arose after the pipeline was working and stable. The issue surfaced when releases began failing due to an artifact storage quota being hit. GitHub's free-tier Actions storage quota is only 500MB, which was quickly exceeded by the pipeline's activities.
The main culprits were duplicate copies of the same Gradle cache, a cache key that had become useless, and 30-day retention on release files that were not being kept around long enough. The cleanup helped, but the real fix was to ensure the pipeline did not depend on GitHub's shared storage. The author explains how to check storage usage properly and finds that nearly two gigabytes were consumed by artifacts and caches.
The dominant cause was ten copies of the same cache, accounting for most of the quota. This was due to GitHub scoping caches per-branch by default, resulting in ten full copies of the same dependency set on ten active branches. Additionally, the cache key itself was broken, leading to repeated full re-downloads of Gradle dependencies.
The signed release AABs, which took up the majority of the artifact storage, had a 30-day retention period, which was a waste of space since they were only used for debugging. The author concludes by highlighting the importance of understanding and addressing hidden storage costs in automated pipelines.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.