Thomas Goirand: Real-Time OpenStack Packaging Status with Event-Driven Automation
tl;dr: https://osbpo.debian.net/deb-status is now real-time updated and much better than it used to, helping the OpenStack packaging team be a way more efficient.How it used to be For years, the Debian OpenStack team has relied on automated tools to track the status of OpenStack packages across Debian releases. Our goal has always been simple: transparency, efficiency, accuracy. We used to use a tool called
os-version-checker, written by Michal Arbet, which generated a static status page at https://osbpo.debian.net/deb-status. It was functional and served us well but it had limitations:
- It ran on a cron job, not on demand
- It processed all OpenStack releases at once, making it slow
- The rsync from Jenkins hosts to osbpo.debian.net was also cron-driven
- No immediate feedback after a package build
salsa (the Debian GitLab instance) in the team s repository, the following would happen:
- Jenkins would build the backport
- Store it in a local repository
- Wait up to 30 minutes (or more) for the cron job to run rsync + status update
- Only then would the status page reflect the new version
- Developer git push triggers Jenkins
- Jenkins builds the package publishes to local repo
- Jenkins immediately triggers a webhook on osbpo.debian.net
- rsyncs the new package to the central Debian repo
- Pulls the latest OpenStack releases from git and use its YAML data (instead of parsing the release HTML pages)
- Regenerates the status page, comparing what upstream released and what s in Debian
How it works The central
osbpo.debian.net server runs:
webhookto receive secure, HMAC-verified triggers that it processes in an async wayApacheto serve the status pages and the Debian OpenStack repositories- Custom scripts to
rsyncpackages, validate, and generate reports
curl the webhook on successful build. The status page is generated by openstack-debian-release-manager, a new tool I ve packaged and deployed. The dashboard uses AJAX to load content dynamically (like when browsing from one release to another), with sorting, metadata, and real-time auto-refresh every 10 seconds.
openstack-debian-release-manager is easy to deploy and configure, and will do most (if not all) of the needed configuration. Uploading it to Debian is probably not needed, and a bit over-kill, so I believe I ll just keep it in Salsa for the moment, unless there s a way to make it more generic so it can help someone else (another team?) in Debian.Room for improvement There s still things I want to add. Namely:
- Add status for Debian stable (ie: without the osbpo.debian.net add-on repository), which we used to have with os-version-checker.
- Add a per-release config file option to be able to mask not packaged project on a per OpenStack release granularity