Skip to content

Commit 9aa6d10

Browse files
committed
bot: Support hook triggered by pulse message from code-coverage-artifacts task
1 parent 177eabd commit 9aa6d10

File tree

4 files changed

+32
-8
lines changed

4 files changed

+32
-8
lines changed

bot/code_coverage_bot/cli.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,18 @@
1414
from code_coverage_tools.log import init_logger
1515

1616

17-
def setup_cli(ask_repository=True, ask_revision=True):
17+
def setup_cli(parameters=True):
1818
"""
1919
Setup CLI options parser and taskcluster bootstrap
2020
"""
2121
parser = argparse.ArgumentParser(description="Mozilla Code Coverage Bot")
22-
if ask_repository:
22+
if parameters:
2323
parser.add_argument("--repository", default=os.environ.get("REPOSITORY"))
24-
if ask_revision:
24+
25+
parser.add_argument("--task-group-id", default=os.environ.get("TASK_GROUP_ID"))
26+
2527
parser.add_argument("--revision", default=os.environ.get("REVISION"))
28+
2629
parser.add_argument(
2730
"--cache-root", required=True, help="Cache root, used to pull changesets"
2831
)
@@ -50,6 +53,18 @@ def setup_cli(ask_repository=True, ask_revision=True):
5053
parser.add_argument("--taskcluster-access-token", help="Taskcluster Access token")
5154
args = parser.parse_args()
5255

56+
if parameters:
57+
if args.task_group_id and (args.repository or args.revision):
58+
parser.error(
59+
"Provide either --task-group-id or --repository/--revision, not both."
60+
)
61+
62+
if args.repository and not args.revision:
63+
parser.error("--repository requires --revision")
64+
65+
if not args.task_group_id and not args.repository:
66+
parser.error("Provide either --task-group-id or --repository/--revision.")
67+
5368
# Auth on Taskcluster
5469
taskcluster_config.auth(args.taskcluster_client_id, args.taskcluster_access_token)
5570

bot/code_coverage_bot/hooks/cron.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,6 @@ def run(self) -> None:
6161

6262
def main() -> None:
6363
logger.info("Starting code coverage bot for cron")
64-
args = setup_cli(ask_revision=False, ask_repository=False)
64+
args = setup_cli(parameters=False)
6565
hook = CronHook(args.task_name_filter, args.cache_root, args.working_dir)
6666
hook.run()

bot/code_coverage_bot/hooks/crontrigger.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,6 @@ def run(self) -> None:
5050

5151
def main() -> None:
5252
logger.info("Starting code coverage bot for crontrigger")
53-
args = setup_cli(ask_revision=False, ask_repository=False)
53+
args = setup_cli(parameters=False)
5454
hook = CronTriggerHook(args.task_name_filter, None, args.working_dir)
5555
hook.run()

bot/code_coverage_bot/hooks/repo.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import structlog
1212

1313
from code_coverage_bot import config
14+
from code_coverage_bot import taskcluster
1415
from code_coverage_bot import hgmo
1516
from code_coverage_bot import uploader
1617
from code_coverage_bot.cli import setup_cli
@@ -229,14 +230,22 @@ def main():
229230
logger.info("Starting code coverage bot for repository")
230231
args = setup_cli()
231232

233+
if args.repository:
234+
repository = args.repository
235+
revision = args.revision
236+
else:
237+
decision_task = taskcluster.get_task_details(args.task_group_id)
238+
repository = decision_task["payload"]["env"]["GECKO_HEAD_REPOSITORY"]
239+
revision = decision_task["payload"]["env"]["GECKO_HEAD_REV"]
240+
232241
hooks = {
233242
config.MOZILLA_CENTRAL_REPOSITORY: MozillaCentralHook,
234243
config.TRY_REPOSITORY: TryHook,
235244
}
236-
hook_class = hooks.get(args.repository)
237-
assert hook_class is not None, f"Unsupported repository {args.repository}"
245+
hook_class = hooks.get(repository)
246+
assert hook_class is not None, f"Unsupported repository {repository}"
238247

239248
hook = hook_class(
240-
args.revision, args.task_name_filter, args.cache_root, args.working_dir
249+
revision, args.task_name_filter, args.cache_root, args.working_dir
241250
)
242251
hook.run()

0 commit comments

Comments
 (0)