diff --git a/bob/devtools/scripts/jobs.py b/bob/devtools/scripts/jobs.py new file mode 100644 index 0000000000000000000000000000000000000000..4228520cd751e3fe8c3dc07beb4444719f950665 --- /dev/null +++ b/bob/devtools/scripts/jobs.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +import os + +import click + +from . import bdt +from ..release import get_gitlab_instance + +from ..log import verbosity_option, get_logger, echo_normal +logger = get_logger(__name__) + + +@click.command(epilog=''' +Examples: + + 1. List running jobs on a runner defined by its description (macmini): + + $ bdt gitlab jobs -vv macmini + +''') +@click.argument('name') +@click.option('-s', '--status', type=click.Choice(['running', 'success', + 'failed', 'canceled']), + default='running', show_default=True, + help='The status of jobs we are searching for - one of "running", ' \ + '"success", "failed" or "canceled"') +@verbosity_option() +@bdt.raise_on_error +def jobs(name, status): + """Lists jobs on a given runner + """ + + gl = get_gitlab_instance() + gl.auth() + user_id = gl.user.attributes['id'] + + # search for the runner to affect + the_runner = [k for k in gl.runners.list(all=True) if \ + k.attributes['description'] == name] + if not the_runner: + raise RuntimeError('Cannot find runner with description = %s', name) + the_runner = the_runner[0] + logger.info('Found runner %s (id=%d)', + the_runner.attributes['description'], the_runner.attributes['id']) + + jobs = the_runner.jobs.list(all=True, status=status) + logger.info('There are %d jobs running on %s', len(jobs), name) + for k in jobs: + echo_normal('** job %d: %s (%s), since %s, by %s [%s]' % \ + (k.id, k.attributes['project']['path_with_namespace'], + k.attributes['name'], k.attributes['started_at'], + k.attributes['user']['username'], k.attributes['web_url'])) diff --git a/bob/devtools/scripts/runners.py b/bob/devtools/scripts/runners.py index a6af22a81100d641c03aee4ccb3e0ab71ef2ca71..d0a0c4a9676536fd9e7b338aa3439c58b07d597c 100644 --- a/bob/devtools/scripts/runners.py +++ b/bob/devtools/scripts/runners.py @@ -5,8 +5,7 @@ import os import click from . import bdt -from ..release import get_gitlab_instance, update_files_with_mr, \ - update_files_at_master +from ..release import get_gitlab_instance from ..log import verbosity_option, get_logger logger = get_logger(__name__) diff --git a/conda/meta.yaml b/conda/meta.yaml index 5390d62f43138197391502324bfd3b606275574b..f5fdc7b3731619c9a812b8246d213fedfaa62f76 100644 --- a/conda/meta.yaml +++ b/conda/meta.yaml @@ -78,6 +78,7 @@ test: - bdt gitlab getpath --help #- bdt gitlab getpath -vv bob/bob.devtools .gitignore - bdt gitlab runners --help + - bdt gitlab jobs --help - bdt ci --help - bdt ci base-build --help - bdt ci build --help diff --git a/setup.py b/setup.py index 122f0710d56d6dc5dba06de1e5af0c16ac36bcce..2e852fa1440d33e3c4c3c188c450cb6c018bdb05 100644 --- a/setup.py +++ b/setup.py @@ -62,6 +62,7 @@ setup( 'changelog = bob.devtools.scripts.changelog:changelog', 'lasttag = bob.devtools.scripts.lasttag:lasttag', 'runners = bob.devtools.scripts.runners:runners', + 'jobs = bob.devtools.scripts.jobs:jobs', 'visibility = bob.devtools.scripts.visibility:visibility', 'getpath = bob.devtools.scripts.getpath:getpath', ],