Outhouse

/outhouse/raw/develop/f/outhouse.png

A framework to for automatically rebuilding, testing, and releasing products whenever their components change.

It contains a backend daemon that listens to fedmsg and queries PDC to determine if any artifacts are affected by a change.

The goal is to then trigger the appropriate rebuilds of these products, automate signing, facilitate testing, and handle syncing bits out to the world once everything passes.

Development

Set up a python virtualenv:

$ sudo dnf -y install python-virtualenvwrapper
$ source ~/.bashrc
$ mkvirtualenv outhouse

Setup outhouse and its dependencies:

$ workon outhouse
$ pip install -r requirements.txt
$ python setup.py develop

Try running the test suite:

$ pip install -r test-requirements.txt
$ nosetests

Check test suite coverage:

$ pip install coverage
$ nosetests --with-coverage --cover-package=outhouse

Getting an authentication token

...from https://pdc.fedoraproject.org/

  • go to https://pdc.fedoraproject.org/ in your browser and login.
  • go to https://pdc.fedoraproject.org/rest_api/v1/auth/token/obtain/
  • open up the devtools console in your browser, and find the request for the current page.
  • right click to open a context menu and select 'copy as cURL'
  • paste that into a terminal. It should have your saml cookie.
  • before hitting enter, edit the command to add the following option:
    • -H 'Accept: application/json', to tell the API you want data
  • the command should print out your token.

Copy fedmsg.d/outhouse-example.py to fedmsg.d/outhouse.py and fill in your token there.

Running the fedmsg-hub

Run it for real:

$ fedmsg-hub

Finally, you can take the dev instructions from the-new-hotness and learn how to set up a local fedmsg-relay so you can replay production messages and more fully test out outhouse.

A fake bodhi update can then be sent to test the consumer by running:

echo '{"update": {"builds": [{"nvr": "kernel-4.3.4-200.fc24"}], "release": {"long_name": "Fedora 24"}}}' | fedmsg-logger --modname bodhi --topic update.complete.stable --json-input