# Overview

This is a proof-of-concept for libtaskotron. The purpose of this is to illustrate where we're going with taskotron and get input on any perceived problems early on before anything is final.

Please keep in mind that this is proof-of-concept code - there are a lot of things which are hard-coded and nothing is final. Please don't develop against this code unless you've talked to us first.

Please direct questions and comments to either #fedora-qa on freenode or the qa-devel mailing list.

## Installing the Code

For the moment, libtaskotron can't be fully installed by either pip or rpm and needs a bit of both for now.

First, install some necessary packages:

koji
rpm-python
pyOpenSSL
gcc
python-pycurl
python-urlgrabber


Then, set up the virtualenv:

virtualenv --system-site-packages env_taskotron
pip install -r requirements.txt


Finally, you should install libtaskotron, so that you don't need to specify the full path for the taskotron runner every time you want to run it. You can either use a standard installation, if you want to just use this project:

pip install .


Or, if you intend to work on this project, you can install it in the editable mode. This way you don't need to reinstall the project every time you make some changes to it, the code changes are reflected immediately:

pip install -e .


## Running the Demo

For now, the only supported task is rpmlint.

To run that task against some envr <envr> for some arch <arch>, do the following:

git clone https://bitbucket.org/fedoraqa/task-rpmlint.git


This will download the <envr> from koji into a temp directory under /var/tmp/, run rpmlint on the downloaded rpms and print output in TAP format to stdout.

Example:

runtask -e xchat-2.8.8-21.fc20 -a x86_64 task-rpmlint/rpmlint.yml


The task description format is mostly yaml with support for variable replacement:

dependencies:
- rpmlint
koji: download $envr execution: python: run_rpmlint.py$workdir
shell: clean $workdir report: resultdb: something  In this case,$envr is passed in to the runner as an argument and \$workdir is the directory in which the task is running.