Job-Runner is a crontab like tool, with a nice web-frontend for administration and (live) monitoring the current status. It is possible to schedule recurring jobs, chaining jobs and the option to run or kill jobs ad-hoc (from the dashboard). As well it provides permission management (eg: so that some people are able to only see jobs on the dashboard, where other people are also able to start them ad-hoc or kill them).
The whole project consists of three separate components (and repositories):
- Job-Runner: provides the REST interface, admin interface and (live)
dashboard. As well this component provides a long-running process
manage.py broadcast_queue) to broadcast messages (over ZeroMQ) to the workers. See: https://github.com/spilgames/job-runner
- Job-Runner Worker: the process that is responsible for executing the job.
It subscribes to (ZeroMQ) messages coming from
broadcast_queue, send data back over the REST interface and publishes events to the Job-Runner WebSocket Server. You can run as many workers as you like, as long as every worker has it's own API key (eg: when you want to run jobs on multiple servers or under different usernames on the same server). API keys can be created in the Job-Runner admin interface. See: https://github.com/spilgames/job-runner-worker
- Job-Runner WebSocket Server: will subscribe to Job-Runner Worker events and re-broadcast them to WebSocket connections coming from the Job-Runner dashboard. This makes it possible to add realtime monitoring to the dashboard. See: https://github.com/spilgames/job-runner-ws-server
- Fix duplicated enqueues when the worker is down or the enqueue is disabled for the job. This happened for example when a parent-job tried to schedule a child job which was disabled.
- Fix the issue where runs from other projects than the selected one, were rendered on the dashboard.
- Add caching of objects to improve the performance (frontend).
- Complete refactor of front-end code. The front-end is now based on AngularJS.
- Misc admin interface improvements (sorting, labels, etc...).
- Add if the run was manual and / or killed to the error e-mail template.
- Broadcast ping requests to the worker (default: every 5 minutes) and show last ping response in admin. This will make it more easy to discover problems with workers.
- Spil specific settings removed.
- Fix related name of
run_log, to make sure it shows up correctly in the template when there is an error.
- Move logs to separate model and RESTful resource. Make sure that you update the worker to >= v1.1.0.
- Show full path (project - template - worker ...) in object title.
- Improve ordering of objects in the admin.
- Added getting started section to the docs.
- Misc documentation improvements.
- Fix kill button so that it is only visible when the user has permission to kill a job-run (would else result in a HTTP error).
- Add option in dashboard to kill job-runs.
- Fix time-zone in failed-run e-mail template (will now use the time-zone configured in the Django config).
- Disable the job when it failed more than x times (optional setting).
- Make it possible to disable the enqueue of a project, worker or job-template.
- Display parent - child relationships in job details.
- Fix an other issue with the run broadcaster to make sure it doesn't broadcast multiple runs for the same job.
- Fix styling glitches by adding a
boot.csswhich is used as long the
.lessfiles aren't compiled yet.
- Fix run broadcaster so that it doesn't send runs to the workers when there is still an other run for the same job active (in queue or started).
- Fix autoselect environment settings.
- Update hostnames in configuration.
- Add filters to limit the number of displayed jobs.
- Add status icon to display if there is a connection with the WebSocket server
- Add option for monthly re-scheduling Note: monthly re-scheduling works
by incrementing the
dtswith the number of days that are in the
dts. When incrementing by multiple months, it will check the days for each month.
- Add description fields to projects, workers, job-templates and jobs
- Fix rescheduling when two runs are active of the same job
- Add MySQL to requirements.txt (since the python setup.py install is creating a zipped .egg which doesn't work when the user does not have a homedir (or when the homedir is not executable).
- Show job details in a column instead of a modal
- Show last 100 runs of a job incl. duration graph
AUTHENTICATION_BACKENDSsetting for staging and production (without
ModelBackendincluded, permissions are not working!)
- A job-title must now be unique per job-template
- Show re-schedule interval in job details
- Fix dependencies in
setup.py(was not using the development version from GitHub).
- Run and job details are made deeplinkable
- Runs and jobs that are suspended are greyed-out
- Fix size (height) of run / job headers
- Fix order of run objects
- Fix escaping of HTML characters in job script and log output
- Enable timezone, all data is now presented (and expected to be) in the Europe/Amsterdam timezone
- Order scheduled runs ascending (first to run on top)
- Add option to schedule children or not, when manually scheduling runs
- Deployar related changes.
job_runner.settings.env.production_longrunsettings module for long running processes to avoid "cached" results.
- Fix issue where filtering the groups would result in duplicated results.
- Remove WebKit browser notifications, since it was breaking the front-end in Firefox.
- Check that runs received from the WebSocket server are within the current active project.
- Add WebKit browser notifications.
- Major refactor: It is now possible to use Sheldon assigned groups when creating projects. Since basically all models are changed / renamed, it was not possible to migrate old data to the new structure. Therefore you should re-create the database!
broadcast_queuemanagement command to publish enqueueable runs to the workers.
- Add missing static-file and logging settings.
- Add MySQL package as a requirement + update requirements in docs.
- Make it possible to override production settings.
- Move Job-Runner code out of engportal project.
- Add overview of jobs + scheduling.