Bug 1819101 - Add JSON summary to taskgraph diff output with warnings support, r=ahal

Differential Revision: https://phabricator.services.mozilla.com/D171111
This commit is contained in:
Bastien Abadie 2023-03-01 15:20:26 +00:00
Родитель ac029a126f
Коммит 5c6b8f891b
2 изменённых файлов: 47 добавлений и 1 удалений

Просмотреть файл

@ -29,7 +29,8 @@ diff:
cwd: '{checkout}'
command: >-
mkdir -p /builds/worker/artifacts/diffs &&
./mach taskgraph target --fast -p "taskcluster/test/params" -o "/builds/worker/artifacts/diffs/diff.txt" --diff {base_rev}
./mach taskgraph target --fast -p "taskcluster/test/params" -o "/builds/worker/artifacts/diffs/diff.txt" --diff {base_rev} &&
python taskcluster/scripts/misc/summarize-tgdiff.py /builds/worker/artifacts/diffs/ 20
when:
files-changed:
- 'taskcluster/ci/**'

Просмотреть файл

@ -0,0 +1,45 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import argparse
import json
import pathlib
def run():
parser = argparse.ArgumentParser(
description="Classify output of taskgraph for CI analsyis"
)
parser.add_argument(
"path",
type=pathlib.Path,
help="Folder containing all the TXT files from taskgraph target.",
)
parser.add_argument(
"threshold",
type=int,
help="Minimum number of lines to trigger a warning on taskgraph output.",
)
args = parser.parse_args()
out = {"files": {}, "status": "OK", "threshold": args.threshold}
for path in args.path.glob("*.txt"):
with path.open() as f:
nb = len(list(filter(None, f.readlines())))
out["files"][path.stem] = {
"nb": nb,
"status": "WARNING" if nb >= args.threshold else "OK",
}
if nb >= args.threshold:
out["status"] = "WARNING"
(args.path / "summary.json").write_text(json.dumps(out, sort_keys=True, indent=4))
if __name__ == "__main__":
run()