Skip to content

Commit 5f7f2bd

Browse files
author
Bastien Abadie
committed
bot: Use project.relman Taskcluster routes on all hooks, refs #87 fixes #150.
1 parent ed65d11 commit 5f7f2bd

File tree

5 files changed

+74
-29
lines changed

5 files changed

+74
-29
lines changed

bot/code_coverage_bot/hooks/base.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
import os
77
import tempfile
8+
from datetime import datetime
9+
from datetime import timedelta
810

911
import hglib
1012
import structlog
@@ -13,6 +15,7 @@
1315
from code_coverage_bot import grcov
1416
from code_coverage_bot import taskcluster
1517
from code_coverage_bot.artifacts import ArtifactsHandler
18+
from code_coverage_bot.taskcluster import taskcluster_config
1619
from code_coverage_bot.utils import ThreadPoolExecutorResult
1720

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

127130
return reports
131+
132+
def index_task(self, namespaces, ttl=180):
133+
"""
134+
Index current task on Taskcluster Index
135+
TTL is expressed in days
136+
"""
137+
assert isinstance(ttl, int) and ttl > 0
138+
task_id = os.environ.get("TASK_ID")
139+
if task_id is None:
140+
logger.warning("Skipping Taskcluster indexation, no task id found.")
141+
return
142+
143+
index_service = taskcluster_config.get_service("index")
144+
145+
for namespace in namespaces:
146+
index_service.insertTask(
147+
namespace,
148+
{
149+
"taskId": task_id,
150+
"rank": 0,
151+
"data": {},
152+
"expires": (datetime.utcnow() + timedelta(ttl)).strftime(
153+
"%Y-%m-%dT%H:%M:%S.%fZ"
154+
),
155+
},
156+
)

bot/code_coverage_bot/hooks/cron.py

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
# License, v. 2.0. If a copy of the MPL was not distributed with this
44
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
55

6-
import os
7-
from datetime import datetime
8-
from datetime import timedelta
96

107
import structlog
118

@@ -15,7 +12,6 @@
1512
from code_coverage_bot.cli import setup_cli
1613
from code_coverage_bot.hooks.base import Hook
1714
from code_coverage_bot.secrets import secrets
18-
from code_coverage_bot.taskcluster import taskcluster_config
1915
from code_coverage_bot.zero_coverage import ZeroCov
2016

2117
logger = structlog.get_logger(__name__)
@@ -50,29 +46,22 @@ def run(self):
5046
# Index the task in the TaskCluster index at the given revision and as "latest".
5147
# Given that all tasks have the same rank, the latest task that finishes will
5248
# overwrite the "latest" entry.
53-
namespaces = [
54-
"project.releng.services.project.{}.code_coverage_bot.{}".format(
55-
secrets[secrets.APP_CHANNEL], self.revision
56-
),
57-
"project.releng.services.project.{}.code_coverage_bot.latest".format(
58-
secrets[secrets.APP_CHANNEL]
59-
),
60-
]
61-
62-
index_service = taskcluster_config.get_service("index")
63-
64-
for namespace in namespaces:
65-
index_service.insertTask(
66-
namespace,
67-
{
68-
"taskId": os.environ["TASK_ID"],
69-
"rank": 0,
70-
"data": {},
71-
"expires": (datetime.utcnow() + timedelta(180)).strftime(
72-
"%Y-%m-%dT%H:%M:%S.%fZ"
73-
),
74-
},
75-
)
49+
self.index_task(
50+
[
51+
"project.releng.services.project.{}.code_coverage_bot.{}".format(
52+
secrets[secrets.APP_CHANNEL], self.revision
53+
),
54+
"project.releng.services.project.{}.code_coverage_bot.latest".format(
55+
secrets[secrets.APP_CHANNEL]
56+
),
57+
"project.relman.code-coverage.{}.cron.{}".format(
58+
secrets[secrets.APP_CHANNEL], self.revision
59+
),
60+
"project.relman.code-coverage.{}.cron.latest".format(
61+
secrets[secrets.APP_CHANNEL]
62+
),
63+
]
64+
)
7665

7766

7867
def main():

bot/code_coverage_bot/hooks/repo.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from code_coverage_bot.notifier import notify_email
1818
from code_coverage_bot.phabricator import PhabricatorUploader
1919
from code_coverage_bot.phabricator import parse_revision_id
20+
from code_coverage_bot.secrets import secrets
2021

2122
logger = structlog.get_logger(__name__)
2223

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

146+
# Index on Taskcluster
147+
self.index_task(
148+
[
149+
"project.relman.code-coverage.{}.repo.mozilla-central.{}".format(
150+
secrets[secrets.APP_CHANNEL], self.revision
151+
),
152+
"project.relman.code-coverage.{}.repo.mozilla-central.latest".format(
153+
secrets[secrets.APP_CHANNEL]
154+
),
155+
]
156+
)
157+
145158

146159
class TryHook(RepositoryHook):
147160
"""
@@ -183,6 +196,18 @@ def run(self):
183196
# Upload coverage on phabricator
184197
self.upload_phabricator(report, changesets)
185198

199+
# Index on Taskcluster
200+
self.index_task(
201+
[
202+
"project.relman.code-coverage.{}.repo.try.{}".format(
203+
secrets[secrets.APP_CHANNEL], self.revision
204+
),
205+
"project.relman.code-coverage.{}.repo.try.latest".format(
206+
secrets[secrets.APP_CHANNEL]
207+
),
208+
]
209+
)
210+
186211

187212
def main():
188213
logger.info("Starting code coverage bot for repository")

bot/taskcluster-hook-cron.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@
6767
"scopes": [
6868
"secrets:get:project/relman/code-coverage/runtime-CHANNEL",
6969
"docker-worker:cache:code-coverage-bot-CHANNEL",
70-
"index:insert-task:project.releng.services.project.CHANNEL.code_coverage_bot.*"
70+
"index:insert-task:project.releng.services.project.CHANNEL.code_coverage_bot.*",
71+
"index:insert-task:project.relman.code-coverage.CHANNEL.cron.*"
7172
],
7273
"tags": {},
7374
"workerType": "releng-svc-memory"

bot/taskcluster-hook-repo.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@
6969
"scopes": [
7070
"secrets:get:project/relman/code-coverage/runtime-CHANNEL",
7171
"notify:email:*",
72-
"docker-worker:cache:code-coverage-bot-CHANNEL"
72+
"docker-worker:cache:code-coverage-bot-CHANNEL",
73+
"index:insert-task:project.relman.code-coverage.CHANNEL.repo.*"
7374
],
7475
"tags": {},
7576
"workerType": "releng-svc-memory"

0 commit comments

Comments
 (0)