67 lines
2.4 KiB
Diff
67 lines
2.4 KiB
Diff
|
From 65dd3e63dc0dc34a531eee703baff715ba04d0a0 Mon Sep 17 00:00:00 2001
|
||
|
From: magic_rb <richard@brezak.sk>
|
||
|
Date: Wed, 10 Jul 2024 13:00:48 +0200
|
||
|
Subject: [PATCH 1/3] Support per installation tokens in `GithubStatusPush`
|
||
|
reporter
|
||
|
|
||
|
Signed-off-by: magic_rb <richard@brezak.sk>
|
||
|
---
|
||
|
master/buildbot/reporters/github.py | 20 +++++++++++++++++---
|
||
|
1 file changed, 17 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/master/buildbot/reporters/github.py b/master/buildbot/reporters/github.py
|
||
|
index 3873c2676..e61e6495a 100644
|
||
|
--- a/master/buildbot/reporters/github.py
|
||
|
+++ b/master/buildbot/reporters/github.py
|
||
|
@@ -70,7 +70,14 @@ class GitHubStatusPush(ReporterBase):
|
||
|
generators=None,
|
||
|
**kwargs,
|
||
|
):
|
||
|
- token = yield self.renderSecrets(token)
|
||
|
+ headers = {}
|
||
|
+ if not callable(token):
|
||
|
+ token = yield self.renderSecrets(token)
|
||
|
+ headers['Authorization'] = 'token ' + token
|
||
|
+ else:
|
||
|
+ self.token_cache = {}
|
||
|
+ self.token_source = token
|
||
|
+
|
||
|
self.debug = debug
|
||
|
self.verify = verify
|
||
|
self.verbose = verbose
|
||
|
@@ -89,7 +96,7 @@ class GitHubStatusPush(ReporterBase):
|
||
|
self._http = yield httpclientservice.HTTPClientService.getService(
|
||
|
self.master,
|
||
|
baseURL,
|
||
|
- headers={'Authorization': 'token ' + token, 'User-Agent': 'Buildbot'},
|
||
|
+ headers={'User-Agent': 'Buildbot'} | headers,
|
||
|
debug=self.debug,
|
||
|
verify=self.verify,
|
||
|
)
|
||
|
@@ -135,6 +142,11 @@ class GitHubStatusPush(ReporterBase):
|
||
|
txgithub is based on twisted's webclient agent, which is much less reliable and featureful
|
||
|
as txrequest (support for proxy, connection pool, keep alive, retry, etc)
|
||
|
"""
|
||
|
+ headers = {}
|
||
|
+
|
||
|
+ if hasattr(self, 'token_source'):
|
||
|
+ headers['Authorization'] = 'token ' + self.token_source(f"{repo_user}/{repo_name}")
|
||
|
+
|
||
|
payload = {'state': state}
|
||
|
|
||
|
if description is not None:
|
||
|
@@ -147,7 +159,9 @@ class GitHubStatusPush(ReporterBase):
|
||
|
payload['context'] = context
|
||
|
|
||
|
return self._http.post(
|
||
|
- '/'.join(['/repos', repo_user, repo_name, 'statuses', sha]), json=payload
|
||
|
+ '/'.join(['/repos', repo_user, repo_name, 'statuses', sha]),
|
||
|
+ json=payload,
|
||
|
+ headers=headers,
|
||
|
)
|
||
|
|
||
|
def is_status_2xx(self, code):
|
||
|
--
|
||
|
2.44.1
|
||
|
|