THIS PROJECT IS NOW UNMAINTAINED.
This is kept around for archival purposes only.
Taskotron Trigger listens for fedmsg messages of specific types and triggers Taskotron jobs (currently using Buildbot) as needed.
Project page: https://pagure.io/taskotron/taskotron-trigger
Look into docs/
directory.
Install the rpm dependencies on the system (only works on Fedora for now):
$ sudo dnf install fedmsg-hub git koji
Then install the trigger. Please note that the following installation is suitable just for containers or similar systems, because it copies files directly to your system directories. It is much better to install an RPM version of trigger (available for Fedora). If you want to set up a development environment, look into that particular section (below) instead. If you really intend to install the files into system dirs, do:
$ sudo python3 setup.py install
In /etc/fedmsg.d/logging.py
, add the following handler:
filelog={ "class": "logging.handlers.RotatingFileHandler", "formatter": "bare", "level": "INFO", "filename": "/var/log/fedmsg/taskotron-trigger.log", "mode": "a", }
Then replace the console handler with the filelog handler for the fedmsg logger so that log messages are sent to a separate file instead of to the console:
fedmsg={ "level": "INFO", "propagate": False, - "handlers": ["console"], + "handlers": ["filelog"], },
Once the fedmsg component has been installed, run the following command in the working directory with triggerjob.py:
$ fedmsg-hub-3
Install the RPM dependencies mentioned in the Installation in Production section. Then also install the following:
$ sudo dnf install python3-virtualenv python3-pip
Create a virtualenv for the trigger, including system site-packages:
$ virtualenv --system-site-packages env_trigger/ $ source env_trigger/bin/activate
Install requirements:
$ pip3 install -r requirements.txt
For dev environment, it's important that fedmsg-hub
is installed in the
virtualenv. That's because trigger installs fedmsg configuration, and running
the system fedmsg-hub would not see it. You'll need to run this:
$ pip3 install --ignore-installed 'fedmsg[consumers]'
If you encounter any installation issues, it's possible that you don't have
gcc
and necessary C development headers installed to compile C extensions
from PyPI. Install those based on the error messages, and repeat.
In the end, make sure that env_trigger/bin/fedmsg-hub
file is present.
Next, install taskotron-trigger in a development mode:
$ pip3 install -e .
Create a local configuration file:
$ cp conf/trigger.cfg.example conf/trigger.cfg
Edit conf/trigger.cfg
and set:
job_logging = True
joblog_file
andgit_cache_dir
to a path where you have write accessrules_template
to a file with your trigger rules, you can useconf/trigger_rules.yml.example
as a starting pointcritpath_filepath
to a critpath definition (optional), you can usedocker_data/critpath_whitelist.example
as a starting point
Once this is all done, you can run fedmsg-hub (while still having the virtualenv active) and it will pick up the local configuration:
$ fedmsg-hub-3
If you use the default trigger rules, you should see similar messages to confirm they have been enabled:
[ fedmsg INFO] enabled by config - jobtriggers.dist_git_commit_msg:DistGitCommitJobConsumer [ fedmsg INFO] No backlog handling. status: None, url: None [ fedmsg INFO] enabled by config - jobtriggers.koji_build_msg:KojiBuildCompletedJobConsumer [ fedmsg INFO] No backlog handling. status: None, url: None [ fedmsg INFO] enabled by config - jobtriggers.koji_tag_msg:KojiTagChangedJobConsumer [ fedmsg INFO] No backlog handling. status: None, url: None
After a short time of waiting you should see new events being detected, e.g.:
[ fedmsg INFO] triggering rpmlint for kig-16.12.2-1.fc26 on x86_64 [ fedmsg INFO] StreamRunner received: item: kig-16.12.2-1.fc26 item_type: koji_build taskname: rpmlint arch: x86_64
From inside the virtualenv run:
$ pytest-3