include/msg: Add modules for foundry IPC message handling
This commit adds modules providing a convenient interface to
generate and parse any of the message types that are used for
IPC between foundry components.
To make foundry more flexible and scalable, the next release will
implement a messaging-based IPC approach using JSON objects.
This commit adds JSON schemas for all message types that will be
used by foundry.
To make the progress of a build trackable, build ids are necessary.
This commit makes buildbot and distbot handle the build ids that are
assigned by the watchbots, and print them along with log output so
that printed messages can be associated with a specific build.
watchbot: Assign a buildid when a new build job is enqueued
When a repository change is detected, watchbot only places the path
and branch name in the queue. To track a build through the entire
build system, a build id should be assigned as well.
This commit modifies watchbot to also place a build id in the queue.
distbot: Check more thoroughly if the specified repository exists
Distbot assumes that the repository has been initialized if the
directory exists. This means that the repository won't be initialized
if an empty directory was passed to distbot.
This commit makes distbot check the specified repository a little more
thoroughly, to make sure empty directories will be initialized, too.
buildbot: Use dpkg-buildpackage -k instead of --sign-key
Older versions of dpkg-buildpackage don't understand the --sign-key
option. With such versions, the -k option has to be used instead.
This commit changes buildbot to pass the key to dpkg-buildpackage
using the -k option.
{watch,build,dist}bot: Make all bots use similar commandline options
Watchbot, buildbot, and distbot do not use the same options for inputs
and outputs such as queues or directories. This commit changes the
understood commandline arguments so that the same options have the same
meaning.
Further, this commit updates the three bots to use the opt module in a
way thats compatible with toolbox > 0.3.
distbot: Accept packages from a queue instead of a watch directory
Distbot currently monitors a watch directory and adds packages that
have been placed in this directory to the repository. This can be
greatly simplified by using queue instead.
This commit changes distbot to accept new packages from a queue. It
further simplifies the distbot code by using the inst module for
managing running instances.
buildbot: Allow multiple instances to run at a time
Buildbot is implemented as a singleton, even though this is neither
necessary nor desirable. In order to allow parallel builds, migrate
buildbot to use the inst module to manage running instances.
Watchbot currently allows only one instance to run at a time. However,
it might be desirable to have multiple watchbots running simultaneously,
watching one or more repositories at a time.
This commit implements support for multiple instances using the new inst
module.
buildbot,distbot,watchbot: Adapt to latest toolbox version
The latest toolbox implements the --verbose and --shush options inside
the opt module, so it's no longer necessary to implement them explicitly.
This commit removes the --verbose and --shush options from all bots.
buildbot: Pick up tasks from a queue and place built packages in another queue
This commit modifies buildbot to pick up tasks from a queue and place built debian
packages in another queue. This allows for very straightforward parallelization of
builds, once the start/stop mechanism has been changed.