This is my weekly report for week 1.
= master-worker communications =
I have spent most of week 1 working on communications between the master
and worker components of autodeb. autodeb-worker was already capable of
obtaining jobs and submitting job results prior to week 1. However, it
was not sending any more information than "success" or "failure".
autodeb-worker now sends full job logs to the master. The master
displays the logs on the web interface for the users to read or to
obtain via the jobs API at /api/jobs/<id>/log.txt.
= graceful shutdown =
Both the master and the worker will now gracefully shutdown when they
are sent SIGINT or SIGTERM. At first, they only responded to SIGINT
until I realized that systemd sends SIGTERM.
When the worker receives SIGINT/SIGTERM, it cancels currently-running
jobs with SIGKILL, requeues them on the master, deletes the working
directories and shuts down. This typically takes less than one second.
= setting runner count =
The worker is now capable of running multiple jobs at the same time,
this is set via the command line flags.
= api improvements =
The API now returns more than error codes, it returns json-formatted
= infrastructure =
I have made some improvements to the ansible scripts:
- setup sbuild schroots for the workers
- obtain SSL certificated with letsencrypt for the masters
- create purge playbooks for uninstalling everything and starting fresh
- store private variables using ansible vault + document in the README
= packaging =
I have completed a couple of releases during the week: 0.4.0. 0.5.0,
0.5.1, 0.6.0 and 0.6.1.
These releases contain the following improvements:
- services files: add install key
- postinst: add autodeb to the sbuild group so that it can use sbuild
- allow setting the server url via autodeb-server.conf
- depend on new build dependencies
- include all possible flags in autdodeb[worker|server].