Skip to content

feat: add EOL package archival and pruning tooling#191

Open
abtreece wants to merge 2 commits intofullstaq-ruby:mainfrom
abtreece:feat/eol-archive-repos
Open

feat: add EOL package archival and pruning tooling#191
abtreece wants to merge 2 commits intofullstaq-ruby:mainfrom
abtreece:feat/eol-archive-repos

Conversation

@abtreece
Copy link
Copy Markdown

Summary

  • Add incremental APT/YUM archive migration scripts that move EOL distro packages to archive buckets
  • Add APT/YUM pruning scripts that remove EOL Ruby version packages from still-supported distro repos
  • Remove centos-8 from active build (EOL since Dec 2021); regenerate CI/CD workflows
  • Add comprehensive dev-handbook runbook for the archival process
  • Update dev-handbook docs with accurate bucket names and archive architecture

Context

Addresses #190 — CI disk space exhaustion caused by the ever-growing Aptly state.tar.zst.

Two-axis cleanup:

  1. Distro archival — Move entire EOL distro repos (centos-7, centos-8, debian-9, debian-10, ubuntu-18.04, ubuntu-20.04) to separate archive GCS buckets
  2. Package pruning — Remove EOL Ruby version packages (2.5-3.1) from still-supported distro repos

Migration scripts are incremental — safe to re-run when future distros reach EOL. Each run fetches the existing archive state, merges new content, and uploads as version N+1.

Companion PR: fullstaq-ruby/infra#47 (GCS buckets, DNS, Caddy config)
Implementation plan: context/plans/EOL-ARCHIVE-MIGRATION.md (Tasks 4-9)

New scripts

Script Purpose
archive/migrate-apt-to-archive.rb Move EOL distro APT repos to archive bucket
archive/migrate-yum-to-archive.rb Move EOL distro YUM repos to archive bucket
archive/prune-apt-packages.rb Remove EOL Ruby packages from APT state
archive/prune-yum-packages.rb Remove EOL Ruby packages from YUM state

All scripts support --dry-run and auto-detect EOL content by comparing repo state against config.yml.

Test plan

  • eclint check passes
  • CI/CD workflow YAML is up-to-date with generated output (centos-8 removed from matrix)
  • Migration scripts: --dry-run correctly identifies EOL distros/packages
  • Migration scripts: incremental archive works (second run merges, doesn't overwrite)
  • Pruning scripts: only fullstaq-ruby-X.Y* packages for non-active minor versions are removed
  • Runbook procedures in dev-handbook/archiving-eol-packages.md match actual script behavior

Add incremental APT/YUM archive migration scripts that move EOL distro
packages to archive buckets, and pruning scripts that remove EOL Ruby
version packages from still-supported distro repos.

Scripts auto-detect EOL content by comparing repo state against
config.yml and support --dry-run. Migration scripts are incremental —
safe to re-run when future distros reach EOL.

Includes dev-handbook runbook and updated architecture docs.
@abtreece abtreece force-pushed the feat/eol-archive-repos branch from 7786b8f to e523f8a Compare April 25, 2026 03:12
- Wire up GCloudStorageLock in all four archive scripts so migrations
  and prunes mutually exclude with the publish workflow's pointer
  updates. The lock library was already imported but never used.
- Wrap all four scripts in begin/ensure cleanup so a failure mid-run
  no longer leaves the imported GPG signing key on disk.
- migrate-apt-to-archive: stop swallowing pool-merge errors via
  '|| true'. Real I/O/permission failures must surface; only
  no-clobber skips were ever benign.
- migrate-apt-to-archive / migrate-yum-to-archive: comments claimed
  EOL detection compared against environments/, but the code compares
  against config.yml. Align the comments with the code.
- archiving-eol-packages.md: APT explicit-distros example listed
  centos-8, which is RPM-only and would fail in the APT script.
  Replace with debian-10,ubuntu-20.04.
@abtreece abtreece force-pushed the feat/eol-archive-repos branch from 6c19add to 68b8e37 Compare April 28, 2026 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant