<pre style='margin:0'>
Rainer Müller (raimue) pushed a commit to branch master
in repository macports-infrastructure.

</pre>
<p><a href="https://github.com/macports/macports-infrastructure/commit/d9aeeb32b22a06eb39f1a0317869e9c12e3ed021">https://github.com/macports/macports-infrastructure/commit/d9aeeb32b22a06eb39f1a0317869e9c12e3ed021</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit d9aeeb32b22a06eb39f1a0317869e9c12e3ed021
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Sat Mar 10 18:05:21 2018 +0100

<span style='display:block; white-space:pre;color:#404040;'>    buildbot: Update status on GitHub after each build
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This adds a status icon next to the commit in the commit log on the
</span><span style='display:block; white-space:pre;color:#404040;'>    GitHub web interface. The GitHub API key has to have at least
</span><span style='display:block; white-space:pre;color:#404040;'>    repo:status scope.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://developer.github.com/v3/repos/statuses/
</span>---
 buildbot/master.cfg | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/buildbot/master.cfg b/buildbot/master.cfg
</span><span style='display:block; white-space:pre;color:#808080;'>index 25d7ade..2692b2a 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/buildbot/master.cfg
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/buildbot/master.cfg
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -156,6 +156,8 @@ c['slavePortnum'] = config['slaveport']
</span> 
 ####### WEB STATUS AND CHANGE HOOKS #######
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+c['status'] = []
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # WebStatus [1] runs a web server that serves the web interface. It can
 # also accept HTTP requests at a hook endpoint [2] and translate them
 # into Changes. We're using the GitHub hook [3] to accept webhook
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -181,7 +183,7 @@ else:
</span>     # TODO Add alternate change source, probably a GitPoller.
     change_hook_kwargs = {}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-c['status'] = [
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+c['status'].append(
</span>     WebStatus(
         http_port=config['httpport'],
         authz=util.Authz(
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -193,9 +195,37 @@ c['status'] = [
</span>             stopBuild='auth',
             stopAllBuilds='auth',
             cancelPendingBuild='auth'),
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        **change_hook_kwargs)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        **change_hook_kwargs))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# GitHub status updates
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://docs.buildbot.net/0.8.14/manual/cfg-statustargets.html#githubstatus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+from buildbot.process import properties
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@properties.renderer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+def getGitHubRepoOwner(props):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # project is in format "owner/name"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    project = props.getProperty('project')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    owner = project.split('/')[0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return owner
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@properties.renderer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+def getGitHubRepoName(props):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # project is in format "owner/name"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    project = props.getProperty('project')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    name = project.split('/')[1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if 'githubapitoken' in secrets:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # This GitHub API token must at least have the repo:status scope
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # TODO: buildbot 0.8.14 also supports setting context=util.Interpolate("buildbot/%(prop:buildername)s")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    c['status'].append(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        status.GitHubStatus(token=secrets['githubapitoken'],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            repoOwner=getGitHubRepoOwner,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            repoName=getGitHubRepoName,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            sha=util.Interpolate("%(src::revision)s"),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            startDescription='Build started.',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            endDescription='Build done.'))
</span> 
 ####### SCHEDULERS #######
 
</pre><pre style='margin:0'>

</pre>