<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>