You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.2 KiB
73 lines
2.2 KiB
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
# Copyright 2019 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""A custom script example that utilizes the .JSON contents of the tryjob."""
|
|
|
|
from __future__ import print_function
|
|
|
|
import json
|
|
import sys
|
|
|
|
from update_tryjob_status import TryjobStatus
|
|
|
|
|
|
def main():
|
|
"""Determines the exit code based off of the contents of the .JSON file."""
|
|
|
|
# Index 1 in 'sys.argv' is the path to the .JSON file which contains
|
|
# the contents of the tryjob.
|
|
#
|
|
# Format of the tryjob contents:
|
|
# {
|
|
# "status" : [TRYJOB_STATUS],
|
|
# "buildbucket_id" : [BUILDBUCKET_ID],
|
|
# "extra_cls" : [A_LIST_OF_EXTRA_CLS_PASSED_TO_TRYJOB],
|
|
# "url" : [GERRIT_URL],
|
|
# "builder" : [TRYJOB_BUILDER_LIST],
|
|
# "rev" : [REVISION],
|
|
# "link" : [LINK_TO_TRYJOB],
|
|
# "options" : [A_LIST_OF_OPTIONS_PASSED_TO_TRYJOB]
|
|
# }
|
|
abs_path_json_file = sys.argv[1]
|
|
|
|
with open(abs_path_json_file) as f:
|
|
tryjob_contents = json.load(f)
|
|
|
|
CUTOFF_PENDING_REVISION = 369416
|
|
|
|
SKIP_REVISION_CUTOFF_START = 369420
|
|
SKIP_REVISION_CUTOFF_END = 369428
|
|
|
|
if tryjob_contents['status'] == TryjobStatus.PENDING.value:
|
|
if tryjob_contents['rev'] <= CUTOFF_PENDING_REVISION:
|
|
# Exit code 0 means to set the tryjob 'status' as 'good'.
|
|
sys.exit(0)
|
|
|
|
# Exit code 124 means to set the tryjob 'status' as 'bad'.
|
|
sys.exit(124)
|
|
|
|
if tryjob_contents['status'] == TryjobStatus.BAD.value:
|
|
# Need to take a closer look at the contents of the tryjob to then decide
|
|
# what that tryjob's 'status' value should be.
|
|
#
|
|
# Since the exit code is not in the mapping, an exception will occur which
|
|
# will save the file in the directory of this custom script example.
|
|
sys.exit(1)
|
|
|
|
if tryjob_contents['status'] == TryjobStatus.SKIP.value:
|
|
# Validate that the 'skip value is really set between the cutoffs.
|
|
if SKIP_REVISION_CUTOFF_START < tryjob_contents['rev'] < \
|
|
SKIP_REVISION_CUTOFF_END:
|
|
# Exit code 125 means to set the tryjob 'status' as 'skip'.
|
|
sys.exit(125)
|
|
|
|
if tryjob_contents['rev'] >= SKIP_REVISION_CUTOFF_END:
|
|
sys.exit(124)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|