Creating Automated Jobs to Run Against Fedora

Tim Flink


the only limit is yourself
  • You can do anything with Taskotron, anything at all!
  • The only limit is yourself!


  • Overview of available tools
  • Short discussion of available resources
  • Start diving in to writing some jobs!


  • Task
  • Check

What Is Available ?


Beaker is a system for test automation and lab management maintained by Red Hat.

Fedora's Beaker Instance has several clients and is available for all Fedora contributors


Taskotron is a system made up of several components which are written and maintained by Fedora QA.

The core of Taskotron is the libtaskotron which runs the actual tasks.


openQA is an automated test tool for operating systems and the engine at the heart of openSUSE's automated testing initiative.

Fedora QA has recently deployed an openQA instance which we are using to test Fedora composes.

Task Execution Process

  • libvirt, ssh, local
  • Used for various levels of task isolation


  • Simple execution path - run on localhost
  • Good for quick local execution


  • Delegate execution to remote machine over ssh
  • Good for task development
taskotron remote execution diagram


  • Create short-lived VM for the purpose of executing the task
  • Used in production, best isolation
taskotron disposable execution diagram

Design Theories

  • Locally executable
  • Loosely coupled as sanely possible
  • Not restricted to a single language/framework

Writing Tasks


  • Python2 (for now)
  • Fedora 23+ (for testcloud)

Example Jobs

Step-by-step Task Writing

System Prep

Assuming you have network and F23+ (requirement for testcloud) Taskotron COPR Repo

dnf copr enable tflink/taskotron 
dnf install libtaskotron

Download Disposable Image

gunzip 20160207-taskotron-f23.raw.gz

What Are We Trying to Do?

  • Download and install latest httpd build from koji
  • Run some simple tests on the installed httpd
  • Report the results we find
  • Generate a HTML report with results

Create Task Folder And Empty Files

mkdir task-httpd-test
cd task-httpd-test
touch httpd-test.yaml

Start with YAML Metadata

name: httpd-test
desc: "run httpd specific tasks"
maintainer: tflink

A Few Thoughts

  • Spinning up and updating a VM each time takes a long time during development
  • We'll be installing packages and manipulating the system, don't want to use local machine
  • Best to spin up a VM for task development

Use testcloud

gunzip 20160207-taskotron-f23.qcow.gz

testcloud instance create task-httpd-test \
-url file://20160207-taskotron-f23.qcow2

Initial run of the task

runtask -t koji_build -i httpd-2.4.18-2.fc24 --local httpd-test.yaml

Add Steps of Task

Download Koji Build


What should we write?

  • Something?

What Features are Missing?

  • If you find any, please make RFEs
  • Dogfooding has already shown a few





Things Learned

  • Dogfooding is a good idea