[V3dot10] Prototyping an autobuild system
keith_hodges at yahoo.co.uk
Wed Jan 17 02:20:02 UTC 2007
this is quite a challenge and lots of ideas have been running around in
my head. This is what I have come up with so far. Any further ideas or
feedback would be most useful. Is this anything close to what we are
a. A script runs periodically to check an rss feed to see if any pages
have changed. It only looks at the first 150 lines or so to obtain the
most recent changes rather than wasting time parsing the whole lot.
(alternatives, check a mailbox file, or run a smail script on receipt of
email - I think that the rss solution is the most generic)
b. the script picks and logs the first page whose change date is more
modern than the last page the script processed. It records the change
date in a file.
[ for a far too clever possibility, the change date file can easily be
on an ftp server common to lots of these scripts running on several
machines, a build farm! For an even more interesting possibility the log
file can also be on a shared ftp server (performance?) ]
c. at this point we have a page to process...
We look for a page <pageName__build_script>
In a directory of the same name as the page, we run the script embedded
in the page using markers <code build> ... </code build>.
d. To run this script we will need a secure chroot jail on the server.
If there is no jail available then default to a known script on our
server. I will attempt the "known script" version first. Given that the
security risk is still there, it would be better to get the jail set up
and use this method.
e. the script runs, it requests a starting image, then it runs squeak,
generating files as the main output. - when squeak is launched we need
to record the pid, and to be able to know if it has completed or failed.
f. when the script completes the resulting files, and images are moved
to suitable destinations to be of use to users. For example after a test
run, the resulting test image will have the TestRunner open displaying
all errors and failures ready for debugging.
There you go, that's the concept.
I have begun my prototype in ruby, there is a utility in ruby called
rio, which can treat local files similarly to remote files. Hence my
comments about the farm possibilities earlier.
any thoughts, cos my brain hurts
All New Yahoo! Mail Tired of Vi at gr@! come-ons? Let our SpamGuard protect you. http://uk.docs.yahoo.com/nowyoucan.html
More information about the V3dot10