Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wwade/jobrunner
Job runner with logging
https://github.com/wwade/jobrunner
azure-devops cli-app developer-tools linux-shell macosx productivity python-3 python27 python3
Last synced: 10 days ago
JSON representation
Job runner with logging
- Host: GitHub
- URL: https://github.com/wwade/jobrunner
- Owner: wwade
- License: gpl-3.0
- Created: 2019-08-09T03:28:39.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-09-26T20:54:34.000Z (4 months ago)
- Last Synced: 2025-01-04T01:36:59.893Z (about 1 month ago)
- Topics: azure-devops, cli-app, developer-tools, linux-shell, macosx, productivity, python-3, python27, python3
- Language: Python
- Homepage:
- Size: 706 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 7
-
Metadata Files:
- Readme: README.rst
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
job
===Job runner with logging
|Build Status|
|PyPI Release|Installation
------------Install system-wide:
.. code:: console
$ pip install shell-jobrunner
Install just for the current user:
.. code:: console
$ pip install --user shell-jobrunner
Uninstallation
--------------.. code:: console
$ pip uninstall jobrunner
Examples
--------- Run ``sleep 5`` in the background
.. code:: console
$ job sleep 5
- Run ``ls`` when the last job finishes and it passed (exit code 0)
.. code:: console
$ job -B. ls
- Run ``ls`` when last job finishes (pass / fail)
.. code:: console
$ job -b. ls
- Monitor job execution
.. code:: console
$ job -W
Sat Aug 10, 2019 20:48:23 No jobs running, load: 0/0/0- Retry a job
.. code:: console
$ job --retry ls
Query Examples
~~~~~~~~~~~~~~**NOTE** ``.`` is available as an alias to the most recently executed
job (as in the Examples above).- View recently executed job log file
.. code:: console
$ job ls
$ view `job` # Opens the output from ls using "view"- View two most recently executed
.. code:: console
$ job echo 1
$ job echo 2
$ view `job -n0 -n1`- Query by job name
.. code:: console
$ job echo foo
$ job echo bar
$ view `job -g foo`- Show job info by name
.. code:: console
$ job ls
$ job -s lsConfiguration
-------------| The default configuration file location is ``~/.config/jobrc``, but can be
| overridden using the --rc-file option.Sample rcfile:
~~~~~~~~~~~~~~.. code:: aconf
[mail]
program = mail
# For notifications over chat applications (like Google Chat), use chatmail as
# your mail program instead. "chatmail" must be specified rather than a differently
# named link to the script, else some options provided to job (such as --rc-file)
# will not be passed through to it.
# program = chatmail
domain = example.com
[ui]
watch reminder = full|summary # default=summary
[chatmail]
at all = all|none|no id # default=none
reuse threads = true|false # default true
[chatmail.google-chat-userhooks]
user1 = https://chat.googleapis.com/v1/spaces/...
[chatmail.google-chat-userids]
# Retrieve this using your browser inspector on an existing mention of this user.
# It should show up as "user/some_long_integer" somewhere in the span's metadata.
user1 =System Notifications (Systemd user service example)
---------------------------------------------------If you want to enable notifications when jobs finish, one way to do this is to use the --notifier
argument.``~/.config/systemd/user/job-notify.service``:
.. code:: aconf
[Unit]
Description=Jobrunner Notifier[Service]
Type=simple
ExecStart=env job --notifier jsonNotify.py
RestartSec=30
Restart=always[Install]
WantedBy=default.target``~/.local/bin/jsonNotify.py``:
.. code:: python
#!/usr/bin/env python3
from json import load
import subprocess
from sys import stdincmd = ["notify-send"]
data = load(stdin)
rc = data.get("rc", 0)
if rc != 0:
cmd += ["--urgency=critical"]
cmd += [data["subject"], data["body"]]
subprocess.run(cmd)Hacking
-------Primary workflow
~~~~~~~~~~~~~~~~It's highly recommend to work inside a virtualenv using ``pipenv``.
Create new virtualenv and install an editable version of ``jobrunner``:
.. code:: console
pipenv --three install --dev
pipenv run pip install -e .Autoformat the code and check linters:
.. code:: console
pipenv run ./format.sh
Run tests:
.. code:: console
pipenv run pytest
Run CI checks locally
~~~~~~~~~~~~~~~~~~~~~| This allows you to run something similar to the azure pipelines locally using docker.
| It will use ``PIP_INDEX_URL`` and / or ``~/.config/pip/pip.conf`` to configure a pypi mirror.
| This will also update ``Pipfile*.lock``... code:: console
./test-docker.py [--versions 2.7 3.7 3.8] [--upgrade] [--ignore-unclean]
.. |Build Status| image:: https://dev.azure.com/wadecarpenter/jobrunner/_apis/build/status/wwade.jobrunner%20(azure%20native)?branchName=main
:target: https://dev.azure.com/wadecarpenter/jobrunner/_build/latest?definitionId=2&branchName=main.. |PyPI Release| image:: https://badge.fury.io/py/shell-jobrunner.svg
:target: https://badge.fury.io/py/shell-jobrunner