From 33f63c08a800b6dd9289be294b542cfecfe5528e Mon Sep 17 00:00:00 2001 From: Bastien Abadie Date: Mon, 23 Sep 2019 16:59:21 +0200 Subject: [PATCH 1/4] bot: Export main report as Taskcluster artifact, fixes #151 --- bot/code_coverage_bot/cli.py | 4 ++++ bot/code_coverage_bot/hooks/base.py | 22 ++++++++++++++++++---- bot/code_coverage_bot/hooks/cron.py | 2 +- bot/code_coverage_bot/hooks/repo.py | 4 +++- bot/taskcluster-hook-repo.json | 12 +++++++++++- 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/bot/code_coverage_bot/cli.py b/bot/code_coverage_bot/cli.py index 643131bd1..5dbf3102e 100644 --- a/bot/code_coverage_bot/cli.py +++ b/bot/code_coverage_bot/cli.py @@ -24,6 +24,10 @@ def setup_cli(ask_repository=True, ask_revision=True): parser.add_argument( "--cache-root", required=True, help="Cache root, used to pull changesets" ) + parser.add_argument( + "--working-dir", + help="Optional working dir to download artifacts and build reports", + ) parser.add_argument( "--task-name-filter", default="*", diff --git a/bot/code_coverage_bot/hooks/base.py b/bot/code_coverage_bot/hooks/base.py index fe4a95046..34c8bdc3e 100644 --- a/bot/code_coverage_bot/hooks/base.py +++ b/bot/code_coverage_bot/hooks/base.py @@ -26,11 +26,25 @@ class Hook(object): def __init__( - self, repository, revision, task_name_filter, cache_root, required_platforms=[] + self, + repository, + revision, + task_name_filter, + cache_root, + working_dir=None, + required_platforms=[], ): - temp_dir = tempfile.mkdtemp() - self.artifacts_dir = os.path.join(temp_dir, "ccov-artifacts") - self.reports_dir = os.path.join(temp_dir, "ccov-reports") + if working_dir is None: + working_dir = tempfile.mkdtemp() + else: + os.makedirs(working_dir, exist_ok=True) + self.artifacts_dir = os.path.join(working_dir, "ccov-artifacts") + self.reports_dir = os.path.join(working_dir, "ccov-reports") + logger.info( + "Local storage initialized.", + artifacts=self.artifacts_dir, + reports=self.reports_dir, + ) self.repository = repository self.revision = revision diff --git a/bot/code_coverage_bot/hooks/cron.py b/bot/code_coverage_bot/hooks/cron.py index 51f869fab..2260d7067 100644 --- a/bot/code_coverage_bot/hooks/cron.py +++ b/bot/code_coverage_bot/hooks/cron.py @@ -67,5 +67,5 @@ def run(self): def main(): logger.info("Starting code coverage bot for cron") args = setup_cli(ask_revision=False, ask_repository=False) - hook = CronHook(args.task_name_filter, args.cache_root) + hook = CronHook(args.task_name_filter, args.cache_root, args.working_dir) hook.run() diff --git a/bot/code_coverage_bot/hooks/repo.py b/bot/code_coverage_bot/hooks/repo.py index f4b6dfd34..4c70a8ff6 100644 --- a/bot/code_coverage_bot/hooks/repo.py +++ b/bot/code_coverage_bot/hooks/repo.py @@ -220,5 +220,7 @@ def main(): hook_class = hooks.get(args.repository) assert hook_class is not None, f"Unsupported repository {args.repository}" - hook = hook_class(args.revision, args.task_name_filter, args.cache_root) + hook = hook_class( + args.revision, args.task_name_filter, args.cache_root, args.working_dir + ) hook.run() diff --git a/bot/taskcluster-hook-repo.json b/bot/taskcluster-hook-repo.json index bbca97d5b..af7a7a949 100644 --- a/bot/taskcluster-hook-repo.json +++ b/bot/taskcluster-hook-repo.json @@ -41,6 +41,14 @@ "source": "https://github.com/mozilla/code-coverage" }, "payload": { + + "artifacts": { + "public/code-coverage-report.json": { + "expires": {"$fromNow": "2 weeks"}, + "path": "/build/ccov-reports/all:all.json", + "type": "file" + } + }, "cache": { "code-coverage-bot-CHANNEL": "/cache" }, @@ -50,7 +58,9 @@ "--taskcluster-secret", "project/relman/code-coverage/runtime-CHANNEL", "--cache-root", - "/cache" + "/cache", + "--working-dir", + "/build" ], "env": { "$eval": "payload" From f78d6b344922a53bce10c1f968e3ce041fbc1489 Mon Sep 17 00:00:00 2001 From: Bastien Abadie Date: Mon, 23 Sep 2019 17:00:42 +0200 Subject: [PATCH 2/4] Fix weird indent --- bot/taskcluster-hook-repo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/taskcluster-hook-repo.json b/bot/taskcluster-hook-repo.json index af7a7a949..8fad608a5 100644 --- a/bot/taskcluster-hook-repo.json +++ b/bot/taskcluster-hook-repo.json @@ -47,7 +47,7 @@ "expires": {"$fromNow": "2 weeks"}, "path": "/build/ccov-reports/all:all.json", "type": "file" - } + } }, "cache": { "code-coverage-bot-CHANNEL": "/cache" From 57696f68f8eceb3080825fe51a622979edd28951 Mon Sep 17 00:00:00 2001 From: Bastien Abadie Date: Mon, 23 Sep 2019 17:18:00 +0200 Subject: [PATCH 3/4] Fix report path for artifact upload. --- bot/taskcluster-hook-repo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/taskcluster-hook-repo.json b/bot/taskcluster-hook-repo.json index 8fad608a5..fe498801a 100644 --- a/bot/taskcluster-hook-repo.json +++ b/bot/taskcluster-hook-repo.json @@ -45,7 +45,7 @@ "artifacts": { "public/code-coverage-report.json": { "expires": {"$fromNow": "2 weeks"}, - "path": "/build/ccov-reports/all:all.json", + "path": "/build/ccov-reports/all.all.json", "type": "file" } }, From f01c0709398df95db1f43b3c7609a2f82a0ef9f1 Mon Sep 17 00:00:00 2001 From: Bastien Abadie Date: Tue, 24 Sep 2019 09:28:46 +0200 Subject: [PATCH 4/4] Working dir is required --- bot/code_coverage_bot/cli.py | 3 ++- bot/code_coverage_bot/hooks/base.py | 8 ++------ bot/taskcluster-hook-cron.json | 4 +++- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/bot/code_coverage_bot/cli.py b/bot/code_coverage_bot/cli.py index 5dbf3102e..9b88d0956 100644 --- a/bot/code_coverage_bot/cli.py +++ b/bot/code_coverage_bot/cli.py @@ -26,7 +26,8 @@ def setup_cli(ask_repository=True, ask_revision=True): ) parser.add_argument( "--working-dir", - help="Optional working dir to download artifacts and build reports", + required=True, + help="Working dir to download artifacts and build reports", ) parser.add_argument( "--task-name-filter", diff --git a/bot/code_coverage_bot/hooks/base.py b/bot/code_coverage_bot/hooks/base.py index 34c8bdc3e..8475f0bb1 100644 --- a/bot/code_coverage_bot/hooks/base.py +++ b/bot/code_coverage_bot/hooks/base.py @@ -4,7 +4,6 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. import os -import tempfile from datetime import datetime from datetime import timedelta @@ -31,13 +30,10 @@ def __init__( revision, task_name_filter, cache_root, - working_dir=None, + working_dir, required_platforms=[], ): - if working_dir is None: - working_dir = tempfile.mkdtemp() - else: - os.makedirs(working_dir, exist_ok=True) + os.makedirs(working_dir, exist_ok=True) self.artifacts_dir = os.path.join(working_dir, "ccov-artifacts") self.reports_dir = os.path.join(working_dir, "ccov-reports") logger.info( diff --git a/bot/taskcluster-hook-cron.json b/bot/taskcluster-hook-cron.json index 65e950189..c334bba6a 100644 --- a/bot/taskcluster-hook-cron.json +++ b/bot/taskcluster-hook-cron.json @@ -50,7 +50,9 @@ "--taskcluster-secret", "project/relman/code-coverage/runtime-CHANNEL", "--cache-root", - "/cache" + "/cache", + "--working-dir", + "/build" ], "env": {}, "features": {