Skip to content

Commit c78455b

Browse files
authored
Better logging on workflow job events (#461)
1 parent 620db56 commit c78455b

File tree

3 files changed

+35
-12
lines changed

3 files changed

+35
-12
lines changed
Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,43 @@
11
from __future__ import annotations
22

3+
import logging
4+
35
from githubkit.webhooks.models import (
46
WorkflowJobCompleted,
57
WorkflowJobInProgress,
68
WorkflowJobQueued,
79
)
10+
from githubkit.webhooks.types import WorkflowJobEvent
811

912
from runner_manager.clients.github import GitHub
1013
from runner_manager.dependencies import get_github
11-
from runner_manager.logging import log
1214
from runner_manager.models.runner import Runner
1315
from runner_manager.models.runner_group import RunnerGroup
1416

17+
log = logging.getLogger(__name__)
18+
19+
20+
def log_workflow_job(webhook: WorkflowJobEvent) -> None:
21+
log.info(
22+
f"Starting workflow_job event (status: {webhook.workflow_job.status}, "
23+
f"conclusion: {webhook.workflow_job.conclusion}, "
24+
f"repository: {webhook.repository.full_name})"
25+
)
26+
1527

1628
def completed(webhook: WorkflowJobCompleted) -> int:
17-
log.info(f"Starting {webhook.action} workflow_job event")
29+
log_workflow_job(webhook)
30+
runner: Runner | None = Runner.find_from_webhook(webhook)
31+
if not runner:
32+
log.info(f"Runner {webhook.workflow_job.runner_name} not found")
33+
return 0
1834
runner_group: RunnerGroup | None = RunnerGroup.find_from_webhook(webhook)
19-
runner: Runner = Runner.find_from_webhook(webhook)
20-
if not runner_group or not runner:
21-
log.warning(f"Runner {webhook.workflow_job.runner_name} not found")
35+
if not runner_group:
36+
log.warning(f"Runner group for {runner} not found")
2237
return 0
38+
log.info(f"Found {runner_group} for {runner}")
2339
github: GitHub = get_github()
24-
log.info(f"Deleting runner {runner.name} in group {runner_group.name}")
40+
log.info(f"Deleting runner {runner} in group {runner_group}")
2541
delete = runner_group.delete_runner(runner, github)
2642
if runner_group.need_new_runner:
2743
log.info(f"Runner group {runner_group.name} needs a new runner")
@@ -30,7 +46,7 @@ def completed(webhook: WorkflowJobCompleted) -> int:
3046

3147

3248
def in_progress(webhook: WorkflowJobInProgress) -> str | None:
33-
log.info(f"Starting {webhook.action} workflow_job event")
49+
log_workflow_job(webhook)
3450
name: str | None = webhook.workflow_job.runner_name
3551
runner_group: RunnerGroup | None = RunnerGroup.find_from_webhook(webhook)
3652
if not runner_group:
@@ -43,7 +59,7 @@ def in_progress(webhook: WorkflowJobInProgress) -> str | None:
4359

4460

4561
def queued(webhook: WorkflowJobQueued) -> str | None:
46-
log.info(f"Starting {webhook.action} workflow_job event")
62+
log_workflow_job(webhook)
4763
labels = webhook.workflow_job.labels
4864
log.info(f"Finding runner group with labels {labels}")
4965
runner_group: RunnerGroup = RunnerGroup.find_from_labels(
@@ -52,9 +68,7 @@ def queued(webhook: WorkflowJobQueued) -> str | None:
5268
if not runner_group:
5369
log.warning(f"Runner group with labels {labels} not found")
5470
return None
55-
log.info(f"Found runner group {runner_group.name}")
56-
log.info(f"Creating registration token for runner {runner_group.name}")
5771
github: GitHub = get_github()
58-
log.info("Registration token created.")
72+
log.info(f"Creating runner for {runner_group}")
5973
runner: Runner | None = runner_group.create_runner(github)
6074
return runner.pk if runner else None

runner_manager/models/runner.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,11 @@ class Runner(BaseModel):
7272
created_at: Optional[datetime]
7373
started_at: Optional[datetime]
7474

75+
def __str__(self):
76+
return f"self.name (status: {self.status}, busy: {self.busy})"
77+
7578
@classmethod
76-
def find_from_webhook(cls, webhook: WorkflowJobEvent) -> "Runner":
79+
def find_from_webhook(cls, webhook: WorkflowJobEvent) -> "Runner | None":
7780
"""Find a runner from a webhook payload
7881
7982
Args:

runner_manager/models/runner_group.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ class RunnerGroup(BaseModel, BaseRunnerGroup):
6363
os: str = Field(default="linux")
6464
arch: str = Field(default="x64")
6565

66+
def __str__(self) -> str:
67+
return (
68+
f"{self.name} (max: {self.max}, min: {self.min}, "
69+
f"current: {len(self.get_runners())}, queued: {self.queued})"
70+
)
71+
6672
def __post_init_post_parse__(self):
6773
"""Post init."""
6874
super().__post_init_post_parse__()

0 commit comments

Comments
 (0)