This repo owns the flat APT repository served at https://apt.l337.org/ (its gh-pages
branch, via GitHub Pages with a custom domain).
.github/workflows/aggregate.yaml runs hourly (and on demand via Run workflow). Each run:
- Reads
repos.yamland, for each listed project, takes the newestkeep_last_nGitHub Releases that carry a.debasset. Release assets on public repos are anonymously downloadable, so no cross-repo credentials exist anywhere in this design - producing projects never push here, and this workflow pushes only to its owngh-pageswith its ownGITHUB_TOKEN. - Downloads missing
.debs, prunes ones that fell out of the window, and copies in the static files fromtemplates/(CNAME,index.html,README.md, the public keyrings). - If nothing changed, stops - hourly runs between releases are no-ops with no commit.
- Otherwise regenerates
Packages/Release, signs them with the APT key (APT_GPG_PRIVATE_KEYsecret), and pushes a signed commit (CI_COMMIT_SIGNING_KEYsecret; thegh-pagesruleset requires verified signatures).
.github/workflows/channel-install.yaml runs daily and installs from the published channel in a
clean Debian container, using exactly the two commands documented below. It checks that the
version apt actually installs is the version the index advertised, which is what would catch the
channel serving something other than what it claims. Upgrade testing lives with each package's
own repository rather than here, since upgrading exercises that package's maintainer scripts.
A failed scheduled run of either workflow, or a failed run of the checks or the code review on a
push to main or a pull request, is posted to Slack by .github/workflows/report-failures.yaml.
- Make the project's release workflow attach its
.debto the GitHub Release. - Add one entry to
repos.yamlhere. - Its packages appear at
https://apt.l337.org/within the hour (or press Run workflow).
Users need only one sources entry for every L337-org package:
curl -fsSL https://apt.l337.org/l337-apt.gpg | sudo tee /usr/share/keyrings/l337-apt.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/l337-apt.gpg] https://apt.l337.org/ ./" | sudo tee /etc/apt/sources.list.d/l337-apt.list
sudo apt update
(send-to-influx.gpg is the same key under its historical name, kept so pre-existing installs
never need to re-fetch.)
- APT package signing:
E46E42647810338BDA88730E97CF6528E790FC9E(public halves published asl337-apt.gpg/send-to-influx.gpg, committed intemplates/). Must be the binary (dearmored) export -signed-by=hands the file straight togpgv, which cannot parse an ASCII-armored key and fails every install withNO_PUBKEY/"not signed". Re-export asgpg --export <fingerprint> > templates/l337-apt.gpg(no--armor), or pipe an armored export throughgpg --dearmor, and copy the identical bytes totemplates/send-to-influx.gpg. - CI commit signing:
EA20403748B47716E87D56E37FECBE1F16617F8B(public half registered to the maintainer's GitHub account; separate trust domain and rotation cycle from the APT key).