This big PR moves most of the pulselistener logic into a submodule pulselistener.lib. The intent is to create in a near-future an indenpendant library with that source code.
Each project now has a dedicated event listener (note the name change...).
Each library module is independant. They can be chained through a MessageBus implementation using async & multiprocessing queues.
modules
bus has the MessageBus implementation, used to communicate across projects. Each part self registers its required queues
mercurial has the Repository tooling (no more Mercurial worker)
phabricator has API access to phabricator instance, helpers, and publication loop
pulse has listening capabilities on any remote queue
taskcluster simply has hook trigger capability
web has the webserver in dedicated process for receiving HTTP notifications
monitoring has the code-coverage dependant logic for mail reports (might be removed or moved to code-coverage repo as it's really specific)
code-coverage
Listen for pulse messages,
Filter those pulse messages and check if they match code coverage criterias
Filtered messages trigger a new TC task creation
New TC tasks are monitored, a report is regularly sent through email
code-review
Runs a webserver in a separate process (Heroku requirements)
Clones configured repos
Phabricator build are received on the webserver route,
Each build is "enriched" with stack patches + related commit messages (when the build is public)
Enriched build is then applied on the local clone
When successful, it's pushed on try
Publication on phabricator is dependant on outcome of previous steps (working, error, treeherder link)
This big PR moves most of the pulselistener logic into a submodule
pulselistener.lib
. The intent is to create in a near-future an indenpendant library with that source code. Each project now has a dedicated event listener (note the name change...). Each library module is independant. They can be chained through aMessageBus
implementation using async & multiprocessing queues.modules
bus
has the MessageBus implementation, used to communicate across projects. Each part self registers its required queuesmercurial
has the Repository tooling (no more Mercurial worker)phabricator
has API access to phabricator instance, helpers, and publication looppulse
has listening capabilities on any remote queuetaskcluster
simply has hook trigger capabilityweb
has the webserver in dedicated process for receiving HTTP notificationsmonitoring
has the code-coverage dependant logic for mail reports (might be removed or moved to code-coverage repo as it's really specific)code-coverage
code-review