1
1
from __future__ import annotations
2
2
3
+ import logging
4
+
3
5
from githubkit .webhooks .models import (
4
6
WorkflowJobCompleted ,
5
7
WorkflowJobInProgress ,
6
8
WorkflowJobQueued ,
7
9
)
10
+ from githubkit .webhooks .types import WorkflowJobEvent
8
11
9
12
from runner_manager .clients .github import GitHub
10
13
from runner_manager .dependencies import get_github
11
- from runner_manager .logging import log
12
14
from runner_manager .models .runner import Runner
13
15
from runner_manager .models .runner_group import RunnerGroup
14
16
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
+
15
27
16
28
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
18
34
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" )
22
37
return 0
38
+ log .info (f"Found { runner_group } for { runner } " )
23
39
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 } " )
25
41
delete = runner_group .delete_runner (runner , github )
26
42
if runner_group .need_new_runner :
27
43
log .info (f"Runner group { runner_group .name } needs a new runner" )
@@ -30,7 +46,7 @@ def completed(webhook: WorkflowJobCompleted) -> int:
30
46
31
47
32
48
def in_progress (webhook : WorkflowJobInProgress ) -> str | None :
33
- log . info ( f"Starting { webhook . action } workflow_job event" )
49
+ log_workflow_job ( webhook )
34
50
name : str | None = webhook .workflow_job .runner_name
35
51
runner_group : RunnerGroup | None = RunnerGroup .find_from_webhook (webhook )
36
52
if not runner_group :
@@ -43,7 +59,7 @@ def in_progress(webhook: WorkflowJobInProgress) -> str | None:
43
59
44
60
45
61
def queued (webhook : WorkflowJobQueued ) -> str | None :
46
- log . info ( f"Starting { webhook . action } workflow_job event" )
62
+ log_workflow_job ( webhook )
47
63
labels = webhook .workflow_job .labels
48
64
log .info (f"Finding runner group with labels { labels } " )
49
65
runner_group : RunnerGroup = RunnerGroup .find_from_labels (
@@ -52,9 +68,7 @@ def queued(webhook: WorkflowJobQueued) -> str | None:
52
68
if not runner_group :
53
69
log .warning (f"Runner group with labels { labels } not found" )
54
70
return None
55
- log .info (f"Found runner group { runner_group .name } " )
56
- log .info (f"Creating registration token for runner { runner_group .name } " )
57
71
github : GitHub = get_github ()
58
- log .info ("Registration token created. " )
72
+ log .info (f"Creating runner for { runner_group } " )
59
73
runner : Runner | None = runner_group .create_runner (github )
60
74
return runner .pk if runner else None
0 commit comments