diff --git a/bot/code_coverage_bot/cli.py b/bot/code_coverage_bot/cli.py index 643131bd1..9b88d0956 100644 --- a/bot/code_coverage_bot/cli.py +++ b/bot/code_coverage_bot/cli.py @@ -24,6 +24,11 @@ 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", + required=True, + help="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..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 @@ -26,11 +25,22 @@ 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, + 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") + 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-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": { diff --git a/bot/taskcluster-hook-repo.json b/bot/taskcluster-hook-repo.json index bbca97d5b..fe498801a 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"