Further development of this project has ended. Thanks for all your contributions!
See https://bugzilla.mozilla.org/show_bug.cgi?id=1379172 for details.
This project is a Pulse listener that connects different parts of Mozilla with Mozilla CI Tools. See the wiki for more details.
worker.pyreads exchange and topic fromrun_time_config.json. It then usesHANDLERS_BY_EXCHANGE, a dictionary defined inconfig.pyto decide what function it will use to handle incoming messages.- The functions to deal with every case are defined in the
handlersmodule. - When multiple topics are passed, we use the
route_functions.pyto decide which function to call
- manual_backfill: listens to
exchange/treeherder/v1/job-actionswith topicbuildbot.#.backfill. It calls mozci'smanual_backfillwith the appropriate input. - backfilling: listens to
exchange/build/normalizedwith topicunittest.mozilla-inbound.#. It automatically backfills failed jobs. Progress in being tracked on bug 1180732 - resulset_actions: listens to
exchange/treeherder/v1/resultset-actions. It calls mozci'strigger_missing_jobsortrigger_all_talos_jobsdepending on the message.
From GitHub:
git clone https://github.com/mozilla/pulse_actions.git cd pulse_actions python setup.py develop
From Pypi:
pip install pulse-actions
You can have re-process sample data from real requests to re-test any new changes:
python pulse_actions/worker.py --replay-file data/sample_queue.json
First you'll have to create a pulse user in https://pulseguardian.mozilla.org . After that, you should set the PULSE_USER and PULSE_PW environment variables accordingly.
If you installed inside a virtualenv (called venv in this example):
venv/bin/run-pulse-actions
If you installed globally (not recommended):
run-pulse-actions
From the base folder of repository, run:
python pulse_actions/worker.py --topic-base MODE
Where MODE is a comma-separated list of the modes you in which you wish to run. You can see some commands in Procfile.
Pulse Actions can be expanded to add more functionality. Here is a step-by-step guide for creating a "Hello World" client with pulse_actions.