@@ -40,7 +40,7 @@ def _validate_payload(self, payload):
4040
4141 return True
4242
43- def handle_workflow_job (self , payload ):
43+ def handle_workflow_job (self , payload , delivery_id = None ):
4444 """Process the workflow_job webhook payload from GitHub.
4545
4646 Returns:
@@ -59,7 +59,12 @@ def handle_workflow_job(self, payload):
5959 org_name = payload .get ('organization' , {}).get ('login' )
6060
6161 # Sanitize log output - don't log full payload
62- logger .info ("Processing workflow_job action: %s for %s" , action , org_name or repo_name )
62+ logger .info (
63+ "Processing workflow_job action: %s for %s, delivery_id: %s" ,
64+ action ,
65+ org_name or repo_name ,
66+ delivery_id ,
67+ )
6368
6469 # https://docs.github.com/en/webhooks/webhook-events-and-payloads?actionType=queued#workflow_job
6570 if action == 'queued' :
@@ -70,27 +75,46 @@ def handle_workflow_job(self, payload):
7075 template_name = label
7176 break
7277 if template_name :
73- logger .info ("Found matching label prefix: %s" , template_name )
78+ logger .info (
79+ "Found matching label prefix: %s, delivery_id: %s" ,
80+ template_name ,
81+ delivery_id ,
82+ )
7483 instance_name = self ._handle_queued_job (
75- template_name , repo_url , repo_owner_url , repo_name , org_name
84+ template_name ,
85+ repo_url ,
86+ repo_owner_url ,
87+ repo_name ,
88+ org_name ,
89+ delivery_id = delivery_id ,
7690 )
7791 return {'action' : 'created' , 'runner_name' : instance_name }
7892 else :
7993 logger .warning (
80- "No matching gcp- label prefix found for labels %s. Ignoring job." ,
94+ "No matching gcp- label prefix found for labels %s. "
95+ "Ignoring job. delivery_id: %s" ,
8196 labels ,
97+ delivery_id ,
8298 )
8399 return {'action' : 'ignored' , 'runner_name' : None }
84100
85101 # https://docs.github.com/en/webhooks/webhook-events-and-payloads?actionType=completed#workflow_job
86102 elif action == 'completed' :
87- runner_name = self ._handle_completed_job (workflow_job )
103+ runner_name = self ._handle_completed_job (
104+ workflow_job , delivery_id = delivery_id
105+ )
88106 return {'action' : 'deleted' , 'runner_name' : runner_name }
89107
90108 return {'action' : 'ignored' , 'runner_name' : None }
91109
92110 def _handle_queued_job (
93- self , template_name , repo_url , repo_owner_url , repo_name , org_name
111+ self ,
112+ template_name ,
113+ repo_url ,
114+ repo_owner_url ,
115+ repo_name ,
116+ org_name ,
117+ delivery_id = None ,
94118 ):
95119 """Handle queued workflow job.
96120
@@ -101,42 +125,68 @@ def _handle_queued_job(
101125 # Get registration token
102126 if org_name :
103127 # Create GitHub Actions runner instance for organization
104- token = self .github_client .get_registration_token (org_name = org_name )
128+ token = self .github_client .get_registration_token (
129+ org_name = org_name , delivery_id = delivery_id
130+ )
105131 return self .gcloud_client .create_runner_instance (
106- token , repo_owner_url , template_name , repo_name
132+ token ,
133+ repo_owner_url ,
134+ template_name ,
135+ repo_name ,
136+ delivery_id = delivery_id ,
107137 )
108138 elif repo_name :
109139 # Create GitHub Actions runner instance for repository
110- token = self .github_client .get_registration_token (repo_name = repo_name )
140+ token = self .github_client .get_registration_token (
141+ repo_name = repo_name , delivery_id = delivery_id
142+ )
111143 return self .gcloud_client .create_runner_instance (
112- token , repo_url , template_name , repo_name
144+ token , repo_url , template_name , repo_name , delivery_id = delivery_id
113145 )
114146 else :
115147 logger .error (
116- "Neither repository nor organization found in payload. Ignoring job."
148+ "Neither repository nor organization found in payload. "
149+ "Ignoring job. delivery_id: %s" ,
150+ delivery_id ,
117151 )
118152 return None
119153
120154 except Exception as e :
121- logger .error ("Failed to spawn runner: %s" , str (e ))
155+ logger .error (
156+ "Failed to spawn runner: %s, delivery_id: %s" , str (e ), delivery_id
157+ )
122158 raise
123159
124- def _handle_completed_job (self , workflow_job ):
160+ def _handle_completed_job (self , workflow_job , delivery_id = None ):
125161 """Handle completed workflow job.
126162
127163 Returns:
128164 str or None: The name of the deleted runner instance.
129165 """
130166 runner_name = workflow_job .get ('runner_name' )
131- logger .info ("Job completed. Cleaning up runner: %s" , runner_name )
167+ logger .info (
168+ "Job completed. Cleaning up runner: %s, delivery_id: %s" ,
169+ runner_name ,
170+ delivery_id ,
171+ )
132172
133173 if not runner_name :
134- logger .warning ("Job completed but no runner_name found in payload." )
174+ logger .warning (
175+ "Job completed but no runner_name found in payload. delivery_id: %s" ,
176+ delivery_id ,
177+ )
135178 return None
136179
137180 try :
138- self .gcloud_client .delete_runner_instance (runner_name )
181+ self .gcloud_client .delete_runner_instance (
182+ runner_name , delivery_id = delivery_id
183+ )
139184 return runner_name
140185 except Exception as e :
141- logger .error ("Failed to delete runner %s: %s" , runner_name , str (e ))
186+ logger .error (
187+ "Failed to delete runner %s: %s, delivery_id: %s" ,
188+ runner_name ,
189+ str (e ),
190+ delivery_id ,
191+ )
142192 return runner_name
0 commit comments