Creating Automated Jobs to Run Against Fedora

Tim Flink

tflink@fedoraproject.org

Introduction

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

Agenda

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

Definitions

  • Task
  • Check

What Is Available ?

Beaker

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

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

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

Local

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

ssh

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

Libvirt

  • 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

Requirements

  • 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

wget https://tflink.fedorapeople.org/taskotron/taskotron-cloud/\
images/20160207-taskotron-f23.raw.gz
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
touch httpd-test.py

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

wget https://tflink.fedorapeople.org/taskotron/taskotron-cloud/\
images/20160207-taskotron-f23.qcow2.gz
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

Conclusion

What should we write?

  • Something?

What Features are Missing?

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

Resources

Documentation

]]

Help

Things Learned

  • Dogfooding is a good idea