Skip to content

bot: Use project.relman Taskcluster routes on all hooks #170

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 13, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions bot/code_coverage_bot/hooks/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

import os
import tempfile
from datetime import datetime
from datetime import timedelta

import hglib
import structlog
Expand All @@ -13,6 +15,7 @@
from code_coverage_bot import grcov
from code_coverage_bot import taskcluster
from code_coverage_bot.artifacts import ArtifactsHandler
from code_coverage_bot.taskcluster import taskcluster_config
from code_coverage_bot.utils import ThreadPoolExecutorResult

logger = structlog.get_logger(__name__)
Expand Down Expand Up @@ -125,3 +128,29 @@ def build_reports(self, only=None):
reports[(platform, suite)] = path

return reports

def index_task(self, namespaces, ttl=180):
"""
Index current task on Taskcluster Index
TTL is expressed in days
"""
assert isinstance(ttl, int) and ttl > 0
task_id = os.environ.get("TASK_ID")
if task_id is None:
logger.warning("Skipping Taskcluster indexation, no task id found.")
return

index_service = taskcluster_config.get_service("index")

for namespace in namespaces:
index_service.insertTask(
namespace,
{
"taskId": task_id,
"rank": 0,
"data": {},
"expires": (datetime.utcnow() + timedelta(ttl)).strftime(
"%Y-%m-%dT%H:%M:%S.%fZ"
),
},
)
43 changes: 16 additions & 27 deletions bot/code_coverage_bot/hooks/cron.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
# 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 os
from datetime import datetime
from datetime import timedelta

import structlog

Expand All @@ -15,7 +12,6 @@
from code_coverage_bot.cli import setup_cli
from code_coverage_bot.hooks.base import Hook
from code_coverage_bot.secrets import secrets
from code_coverage_bot.taskcluster import taskcluster_config
from code_coverage_bot.zero_coverage import ZeroCov

logger = structlog.get_logger(__name__)
Expand Down Expand Up @@ -50,29 +46,22 @@ def run(self):
# 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.
namespaces = [
"project.releng.services.project.{}.code_coverage_bot.{}".format(
secrets[secrets.APP_CHANNEL], self.revision
),
"project.releng.services.project.{}.code_coverage_bot.latest".format(
secrets[secrets.APP_CHANNEL]
),
]

index_service = taskcluster_config.get_service("index")

for namespace in namespaces:
index_service.insertTask(
namespace,
{
"taskId": os.environ["TASK_ID"],
"rank": 0,
"data": {},
"expires": (datetime.utcnow() + timedelta(180)).strftime(
"%Y-%m-%dT%H:%M:%S.%fZ"
),
},
)
self.index_task(
[
"project.releng.services.project.{}.code_coverage_bot.{}".format(
secrets[secrets.APP_CHANNEL], self.revision
),
"project.releng.services.project.{}.code_coverage_bot.latest".format(
secrets[secrets.APP_CHANNEL]
),
"project.relman.code-coverage.{}.cron.{}".format(
secrets[secrets.APP_CHANNEL], self.revision
),
"project.relman.code-coverage.{}.cron.latest".format(
secrets[secrets.APP_CHANNEL]
),
]
)


def main():
Expand Down
25 changes: 25 additions & 0 deletions bot/code_coverage_bot/hooks/repo.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from code_coverage_bot.notifier import notify_email
from code_coverage_bot.phabricator import PhabricatorUploader
from code_coverage_bot.phabricator import parse_revision_id
from code_coverage_bot.secrets import secrets

logger = structlog.get_logger(__name__)

Expand Down Expand Up @@ -142,6 +143,18 @@ def run(self):
notify_email(self.revision, changesets, coverage)
logger.info("Sent low coverage email notification")

# Index on Taskcluster
self.index_task(
[
"project.relman.code-coverage.{}.repo.mozilla-central.{}".format(
secrets[secrets.APP_CHANNEL], self.revision
),
"project.relman.code-coverage.{}.repo.mozilla-central.latest".format(
secrets[secrets.APP_CHANNEL]
),
]
)


class TryHook(RepositoryHook):
"""
Expand Down Expand Up @@ -183,6 +196,18 @@ def run(self):
# Upload coverage on phabricator
self.upload_phabricator(report, changesets)

# Index on Taskcluster
self.index_task(
[
"project.relman.code-coverage.{}.repo.try.{}".format(
secrets[secrets.APP_CHANNEL], self.revision
),
"project.relman.code-coverage.{}.repo.try.latest".format(
secrets[secrets.APP_CHANNEL]
),
]
)


def main():
logger.info("Starting code coverage bot for repository")
Expand Down
3 changes: 2 additions & 1 deletion bot/taskcluster-hook-cron.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@
"scopes": [
"secrets:get:project/relman/code-coverage/runtime-CHANNEL",
"docker-worker:cache:code-coverage-bot-CHANNEL",
"index:insert-task:project.releng.services.project.CHANNEL.code_coverage_bot.*"
"index:insert-task:project.releng.services.project.CHANNEL.code_coverage_bot.*",
"index:insert-task:project.relman.code-coverage.CHANNEL.cron.*"
],
"tags": {},
"workerType": "releng-svc-memory"
Expand Down
3 changes: 2 additions & 1 deletion bot/taskcluster-hook-repo.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@
"scopes": [
"secrets:get:project/relman/code-coverage/runtime-CHANNEL",
"notify:email:*",
"docker-worker:cache:code-coverage-bot-CHANNEL"
"docker-worker:cache:code-coverage-bot-CHANNEL",
"index:insert-task:project.relman.code-coverage.CHANNEL.repo.*"
],
"tags": {},
"workerType": "releng-svc-memory"
Expand Down