Skip to content

Reduce Actions storage churn: image artifact retention and Renovate cadence - #5604

Merged
obenland merged 2 commits into
mainfrom
reduce-actions-artifact-storage
Aug 25, 2026
Merged

obenland merged 2 commits into
mainfrom
reduce-actions-artifact-storage

Conversation

@obenland

@obenland obenland commented Aug 25, 2026 •

Copy link
Copy Markdown
Member

Description

This PR reduces GitHub Actions storage and compute churn in two ways.

Image artifact retention

The build-images job uploads each service's Docker image as a .tar artifact (frontend alone is ~175 MB) with the repository's default 90-day retention. Every consumer of these artifacts — the test jobs and the ghcr.io publish job, all via the load-img action — downloads them using run_id: ${{ github.run_id }}, i.e. within the same workflow run. Deployments pull from ghcr.io, never from these artifacts. So the tarballs are useful for about an hour but stored for 90 days.

This month that added up: openverse has accrued ~215 GB-months of Actions storage so far (August 2026), out of ~511 GB-months for the whole WordPress Foundation enterprise, whose plan includes 50 GB — the frontend artifact alone projects to ~47 GB of standing storage at steady state. This PR sets retention-days: 2 on the image uploads, which still allows re-running failed jobs of a recent run the next day. (renovate.yml already uses retention-days: 1 for the same reason.)

Renovate cadence

The scheduled Renovate workflow moves from every 30 minutes to every 6 hours. Each run uploads a cache artifact (~48/day), and every PR it rebases triggers a full CI + CD run including Docker image builds — constant churn on a mostly idle repository. Renovate still runs 4× daily, plenty for dependency updates, and can always be dispatched manually.

Testing Instructions

CI on this PR exercises the changed upload step directly; the load-img-based jobs downloading the images within the run are unaffected by retention. After merge, image artifacts on new runs will show a 2-day expiry on the run's summary page, and the Renovate workflow's schedule shows the new cadence on its workflow page.

🤖 Generated with Claude Code

Copilot AI lite review requested due to automatic review settings August 25, 2026 19:30
@obenland
obenland requested a review from a team as a code owner August 25, 2026 19:30
@obenland
obenland requested review from krysal and obulat and removed request for a team August 25, 2026 19:30

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@openverse-bot openverse-bot added 🧱 stack: mgmt Related to repo management and automations 🚦 status: awaiting triage Has not been triaged & therefore, not ready for work labels Aug 25, 2026
@openverse-bot openverse-bot moved this to 👀 Needs Review in Openverse PRs Aug 25, 2026
@obenland obenland added 🤖 aspect: dx Concerns developers' experience with the codebase 🧰 goal: internal improvement Improvement that benefits maintainers, not users 🟨 priority: medium Not blocking but should be addressed soon labels Aug 25, 2026
@obenland
obenland force-pushed the reduce-actions-artifact-storage branch 2 times, most recently from 18e8af1 to 690b268 Compare August 25, 2026 20:19
@obenland obenland changed the title Limit Docker image artifact retention to 2 days Reduce Actions storage churn: image artifact retention and Renovate cadence Aug 25, 2026
@github-actions

github-actions Bot commented Aug 25, 2026 •

Copy link
Copy Markdown

Latest k6 run output1

     ✓ status was 200

     checks.........................: 100.00% ✓ 414      ✗ 0   
     data_received..................: 97 MB   403 kB/s
     data_sent......................: 132 kB  546 B/s
     http_req_blocked...............: avg=102.72µs min=2.23µs   med=4.97µs   max=2ms      p(90)=202.67µs p(95)=803.12µs
     http_req_connecting............: avg=87.86µs  min=0s       med=0s       max=1.93ms   p(90)=147.09µs p(95)=759.68µs
     http_req_duration..............: avg=165.09ms min=19.7ms   med=103.37ms max=1s       p(90)=386.39ms p(95)=487.64ms
       { expected_response:true }...: avg=165.09ms min=19.7ms   med=103.37ms max=1s       p(90)=386.39ms p(95)=487.64ms
   ✓ http_req_failed................: 0.00%   ✓ 0        ✗ 414 
     http_req_receiving.............: avg=195.32µs min=46.82µs  med=162.59µs max=3.1ms    p(90)=274.92µs p(95)=327.88µs
     http_req_sending...............: avg=27.47µs  min=6.3µs    med=23.65µs  max=348.72µs p(90)=43.7µs   p(95)=53.61µs 
     http_req_tls_handshaking.......: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
     http_req_waiting...............: avg=164.86ms min=19.56ms  med=103.17ms max=1s       p(90)=386.1ms  p(95)=487.25ms
     http_reqs......................: 414     1.717405/s
     iteration_duration.............: avg=895.09ms min=316.94ms med=927.28ms max=1.96s    p(90)=1.19s    p(95)=1.27s   
     iterations.....................: 77      0.319421/s
     vus............................: 3       min=0      max=6 
     vus_max........................: 60      min=60     max=60

Footnotes

  1. This comment will automatically update with new output each time k6 runs for this PR ↩

obenland and others added 2 commits August 25, 2026 15:55
The image tarballs uploaded by the build-images job are only consumed
by later jobs in the same workflow run (via the load-img action), but
were kept for the default 90 days. At ~175 MB per frontend image and
several uploads per day, these artifacts alone accounted for the
majority of the WordPress Foundation's GitHub Actions storage allowance.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Each Renovate run uploads a cache artifact (~48/day) and any PR it
rebases triggers a full CI + CD run including Docker image builds, so
the 30-minute cadence produced constant Actions storage and compute
churn on a mostly idle repository.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@obenland
obenland force-pushed the reduce-actions-artifact-storage branch from 690b268 to b9ce58a Compare August 25, 2026 20:55
@obenland
obenland merged commit bad1499 into main Aug 25, 2026
53 checks passed
@obenland
obenland deleted the reduce-actions-artifact-storage branch August 25, 2026 21:16
@github-project-automation github-project-automation Bot moved this from 👀 Needs Review to 🤝 Merged in Openverse PRs Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🤖 aspect: dx Concerns developers' experience with the codebase 🧰 goal: internal improvement Improvement that benefits maintainers, not users 🟨 priority: medium Not blocking but should be addressed soon 🧱 stack: mgmt Related to repo management and automations 🚦 status: awaiting triage Has not been triaged & therefore, not ready for work

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants