bot/code_coverage_bot/hooks/crontrigger.py (33 lines of code) (raw):

# -*- coding: utf-8 -*- # 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 structlog from code_coverage_bot import config from code_coverage_bot import trigger_missing from code_coverage_bot import uploader from code_coverage_bot.cli import setup_cli from code_coverage_bot.hooks.base import Hook from code_coverage_bot.secrets import secrets logger = structlog.get_logger(__name__) class CronTriggerHook(Hook): """ This function is executed when the bot is triggered via cron. """ def __init__(self, *args, **kwargs): # Retrieve latest ingested revision try: revision = uploader.gcp_latest("mozilla-central")[0]["revision"] except Exception as e: logger.warn("Failed to retrieve the latest reports ingested: {}".format(e)) raise super().__init__(config.MOZILLA_CENTRAL_REPOSITORY, revision, *args, **kwargs) def run(self) -> None: trigger_missing.trigger_missing(config.MOZILLA_CENTRAL_REPOSITORY) # Index the task in the TaskCluster index at the given revision and as "latest". # Given that all tasks have the same rank, the latest task that finishes will # overwrite the "latest" entry. self.index_task( [ "project.relman.code-coverage.{}.crontrigger.{}".format( secrets[secrets.APP_CHANNEL], self.revision ), "project.relman.code-coverage.{}.crontrigger.latest".format( secrets[secrets.APP_CHANNEL] ), ] ) def main() -> None: logger.info("Starting code coverage bot for crontrigger") args = setup_cli(ask_revision=False, ask_repository=False) hook = CronTriggerHook(args.task_name_filter, None, args.working_dir) hook.run()