Skip to content

Commit 2ca17cc

Browse files
committed
Create a new command to trigger missing revisions to be run in a separate cron hook that runs more frequently
Fixes #718
1 parent 5653932 commit 2ca17cc

File tree

4 files changed

+57
-4
lines changed

4 files changed

+57
-4
lines changed

bot/code_coverage_bot/hooks/cron.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
from code_coverage_bot import commit_coverage
99
from code_coverage_bot import config
10-
from code_coverage_bot import trigger_missing
1110
from code_coverage_bot import uploader
1211
from code_coverage_bot.cli import setup_cli
1312
from code_coverage_bot.hooks.base import Hook
@@ -34,8 +33,6 @@ def __init__(self, *args, **kwargs):
3433
super().__init__(config.MOZILLA_CENTRAL_REPOSITORY, revision, *args, **kwargs)
3534

3635
def run(self) -> None:
37-
trigger_missing.trigger_missing(config.MOZILLA_CENTRAL_REPOSITORY)
38-
3936
self.retrieve_source_and_artifacts()
4037

4138
commit_coverage.generate(self.repository, self.repo_dir)
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# -*- coding: utf-8 -*-
2+
# This Source Code Form is subject to the terms of the Mozilla Public
3+
# License, v. 2.0. If a copy of the MPL was not distributed with this
4+
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
5+
6+
import structlog
7+
8+
from code_coverage_bot import config
9+
from code_coverage_bot import trigger_missing
10+
from code_coverage_bot import uploader
11+
from code_coverage_bot.cli import setup_cli
12+
from code_coverage_bot.hooks.base import Hook
13+
from code_coverage_bot.secrets import secrets
14+
15+
logger = structlog.get_logger(__name__)
16+
17+
18+
class CronTriggerHook(Hook):
19+
"""
20+
This function is executed when the bot is triggered via cron.
21+
"""
22+
23+
def __init__(self, *args, **kwargs):
24+
# Retrieve latest ingested revision
25+
try:
26+
revision = uploader.gcp_latest("mozilla-central")[0]["revision"]
27+
except Exception as e:
28+
logger.warn("Failed to retrieve the latest reports ingested: {}".format(e))
29+
raise
30+
31+
super().__init__(config.MOZILLA_CENTRAL_REPOSITORY, revision, *args, **kwargs)
32+
33+
def run(self) -> None:
34+
trigger_missing.trigger_missing(config.MOZILLA_CENTRAL_REPOSITORY)
35+
36+
# Index the task in the TaskCluster index at the given revision and as "latest".
37+
# Given that all tasks have the same rank, the latest task that finishes will
38+
# overwrite the "latest" entry.
39+
self.index_task(
40+
[
41+
"project.relman.code-coverage.{}.crontrigger.{}".format(
42+
secrets[secrets.APP_CHANNEL], self.revision
43+
),
44+
"project.relman.code-coverage.{}.crontrigger.latest".format(
45+
secrets[secrets.APP_CHANNEL]
46+
),
47+
]
48+
)
49+
50+
51+
def main() -> None:
52+
logger.info("Starting code coverage bot for crontrigger")
53+
args = setup_cli(ask_revision=False, ask_repository=False)
54+
hook = CronTriggerHook(args.task_name_filter, args.cache_root, args.working_dir)
55+
hook.run()

bot/code_coverage_bot/trigger_missing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def trigger_task(task_group_id: str, revision: str) -> None:
4848
def trigger_missing(server_address: str, out_dir: str = ".") -> None:
4949
triggered_revisions_path = os.path.join(out_dir, "triggered_revisions.zst")
5050

51-
url = f"https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/project.relman.code-coverage.{secrets[secrets.APP_CHANNEL]}.cron.latest/artifacts/public/triggered_revisions.zst"
51+
url = f"https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/project.relman.code-coverage.{secrets[secrets.APP_CHANNEL]}.crontrigger.latest/artifacts/public/triggered_revisions.zst"
5252
r = requests.head(url, allow_redirects=True)
5353
if r.status_code != 404:
5454
utils.download_file(url, triggered_revisions_path)

bot/setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def read_requirements(file_):
4747
license="MPL2",
4848
entry_points={
4949
"console_scripts": [
50+
"code-coverage-crontrigger = code_coverage_bot.hooks.crontrigger:main",
5051
"code-coverage-cron = code_coverage_bot.hooks.cron:main",
5152
"code-coverage-repo = code_coverage_bot.hooks.repo:main",
5253
]

0 commit comments

Comments
 (0)