Skip to content

Commit f8552e3

Browse files
committed
console command now accepts build number
1 parent 9880d61 commit f8552e3

2 files changed

Lines changed: 18 additions & 11 deletions

File tree

jenkins_cli/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def main():
2222
formatter_class=argparse.RawTextHelpFormatter,
2323
description="Status description:\n\n" + "\n".join(get_jobs_legend()))
2424
jobs_parser.add_argument('-a', help='Show only active jobs', default=False, action='store_true')
25-
jobs_parser.add_argument('-b', help='Show only jobs thats in build progress', default=False, action='store_true')
25+
jobs_parser.add_argument('-p', help='Show only jobs thats in build progress', default=False, action='store_true')
2626

2727
subparsers.add_parser('queue', help='Shows builds queue')
2828

@@ -46,14 +46,15 @@ def main():
4646

4747
console_parser = subparsers.add_parser('console', help='Show console for last build')
4848
console_parser.add_argument('job_name', help='Job to show console for')
49+
console_parser.add_argument('-b', '--build', help='Job build number to show console for (if omitted, last build number used)', default='')
4950
console_parser.add_argument('-n', help='Show first n num of the lines only(if n is negative, shows last n lines)', type=int)
5051
console_parser.add_argument('-i', help='Interactive console', default=False, action='store_true')
5152

5253
args = parser.parse_args()
5354
try:
5455
JenkinsCli(args).run_command(args)
5556
except JenkinsException as e:
56-
print(e)
57+
print("Jenkins server response: %s:" % e)
5758
except KeyboardInterrupt:
5859
print("Aborted")
5960
except CliException as e:

jenkins_cli/cli.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
'descr': 'Aborted'}
2727
}
2828

29-
# 'green': '\033[92m',
30-
3129

3230
ENDCOLLOR = '\033[0m'
3331
ANIME_SYMBOL = ['..', '>>']
@@ -127,7 +125,7 @@ def _get_jobs(self, args):
127125
jobs = self.jenkins.get_jobs()
128126
if args.a:
129127
jobs = [j for j in jobs if j.get('color') != 'disabled']
130-
if hasattr(args, 'b') and args.b:
128+
if hasattr(args, 'p') and args.p:
131129
jobs = [j for j in jobs if 'anime' in j.get('color')]
132130
return jobs
133131

@@ -225,10 +223,6 @@ def builds(self, args):
225223
'duration': str(self._get_build_duration(build)).split('.')[0],
226224
'changeset_count': changeset_count})
227225
print(status)
228-
# "actions": [
229-
#{
230-
#"causes": [
231-
# "number": 17191,
232226

233227
def stop(self, args):
234228
job_name = self._check_job(args.job_name)
@@ -240,11 +234,23 @@ def stop(self, args):
240234
else:
241235
print("%s job is not running" % job_name)
242236

237+
def _get_build_number(self, build_number):
238+
parsed_build_number = None
239+
if build_number:
240+
if build_number[0] == "#":
241+
build_number = build_number[1:]
242+
if build_number.isdigit():
243+
parsed_build_number = int(build_number)
244+
else:
245+
raise CliException('Build number must be in format 123')
246+
return parsed_build_number
247+
243248
def console(self, args):
244249
job_name = self._check_job(args.job_name)
245250
info = self.jenkins.get_job_info(job_name)
246-
print(info['lastBuild'])
247-
build_number = info['lastBuild'].get('number')
251+
build_number = self._get_build_number(args.build)
252+
if not build_number:
253+
build_number = info['lastBuild'].get('number')
248254
console_out = self.jenkins.get_build_console_output(job_name, build_number)
249255
console_out = console_out.split('\n')
250256
last_line_num = len(console_out)

0 commit comments

Comments
 (0)