the mechanics of pushing updates

Bill Nottingham notting at redhat.com
Thu May 24 05:02:35 UTC 2007


Mmm, plumbing. bodhi is heading for production soon. To push updates, what
bodhi currently does is, for any update:

- sign the package
- copy the package to a 'staging' tree of the entirety of updates
- read a static list of packages that should be multilib, act on that
- run createrepo
- check deps on the repo
- rsync the whole repo out

Older updates are cleaned by a cron script later.

Advantages of this approach:
- it's simple
- it's easy to clean upthings that Go Wrong (just manually remove them
  from the repo and re-sync)

Disadvantages:
- multilib. In a world where we continually add new packages, this
  *will not scale*.

So, we need at least *some* sort of better workflow.

One alternative - using mash (what we're using to build rawhide.) It
would go something like this:

- sign the package
- tag the package (for updates-testing, or updates)
- run mash to create a repo of updates/updates-testing, solve it for
  multilib
- rsync it out

Advantages:
- solves multilib
- doesn't require continually keeping a staging tree around
- depcheck is built in when solving multilib
- builds on koji tags to let anyone easily query what updates are
  released

Disadvantages:
- by rebuilding the repo each time, it's going to be slow once
  the repo gets large
- harder to clear out other strangeness
- will only have one version of each updated package

The last of these isn't as *big* of a concern now, as all builds
will be available through the koji web site, space permitting.

Other ideas for better workflow? What do the extras push scripts do?
Do we want to add a modified version of mash's multilib solver into
bodhi?

(This is ignoring the process of rsyncing to the mirror master, which
will be gross.)

Bill




More information about the Fedora-infrastructure-list mailing list