[tahoe-dev] buildbot update
Brian Warner
warner-tahoe at allmydata.com
Mon Mar 9 14:47:03 PDT 2009
On Mon, 9 Mar 2009 09:54:00 -0700
Shawn Willden <shawn-tahoe at willden.org> wrote:
> On Monday 09 March 2009 10:24:58 am zooko wrote:
> > The Debian package builder on Shawn's intrepid box is successfully
> > building .debs, but has nowhere to upload them. Brian, Shawn: could
> > we arrange it so that it uploads the .debs to a directory on a Tahoe
> > grid? :-)
>
> There's a Tahoe node that usually, but not always, runs on the intrepid
> box, connected to the test grid. Probably a better choice is the test grid
> node that is running on a neighboring machine (IP 10.0.1.1, port 3456).
For this purpose, we might want to upload them to the allmydata prodgrid
instead.. might be more reliable and less stall-sensitive. I dunno.
For the record, here's our overall plan:
* create a master tahoe directory structure, in the shape of a regular APT
repository
(dists/{gutsy,hardy,intrepid}/tahoe/{source,binary-amd64,binary-i386}/*.deb)
* extract the writecap for dists/intrepid/tahoe/binary-amd64 , give it to
Shawn, he writes it into a file accessible by his buildslave (maybe by doing
'tahoe set-alias tahoe-intrepid-amd64-debs WRITECAP')
* thanks to tahoe's simple capability-based access control, Shawn (and
his buildslave) get the ability to publish intrepid-amd64 debs but not
the ability to tamper with anything else. Magic!
* configure the build process to use 'tahoe put *.deb
tahoe-intrepid-amd64-debs:' as its upload step, then invoke some
as-yet-undefined mechanism to notify the "APT repo manager" to update the
index
* on the server side:
* build an APT repo manager: a daemon that sits around waiting to uploaders
to tell it that a new file has been added to the Tahoe directory
structure. When that happens:
* download the structure to local disk. This could just use "tahoe cp -r
repo: ./repo", but we'd prefer it to have a sort of inverse backupdb:
something that lets us refrain from doing a download when the local file
looks sufficiently up-to-date.
* run the APT index-building scripts to create Packages.gz, Contents, etc
* mirror everything back into tahoe: 'tahoe cp -r ./repo repo:' . Again,
this would be better if 'tahoe cp' used the backupdb, but this is an
easier feature addition than the downloaddb ('restoredb'?) described
above
* mirror everything over to http://allmydata.org/debian
* publish the tahoe readcap for that 'repo:' directory
With that in place, there will be two ways to make your debian box have
bleeding-edge tahoe packages: either point APT at allmydata.org, or point APT
at a tahoe webapi server and the published readcap. The latter is slightly
more self-hosting and cooler, but if the testgrid isn't being reliable, you
might prefer to use a normal HTTP site instead.
The "APT repo manager" notification step might be a tiny Foolscap client..
there's a demo of something similar in the foolscap docs/ directory already.
This week is looking kind of busy, I'm not going to have much time to work on
this project, but maybe next week. I'll let you know when/if I build any of
the pieces listed above. Note that we could set up the buildslave to upload
.debs to a directory independently of me getting the time to change the APT
repo manager scheme around (the debs just wouldn't be APT-gettable for a
while, people could still fetch them manually from the published readcap).
cheers,
-Brian
More information about the tahoe-dev
mailing list