[users at bb.net] No grid/console views, build view always empty, despite successful build

Jeronimo Pellegrini j_p at aleph0.info
Mon Mar 23 22:46:40 UTC 2020


I found the problem!

It was the reverse proxy that wasn't properly configured for websockets.

I used this in my apache virtualhost config,

	<Location /ws>
                  ProxyPass ws://127.0.0.1:8010/ws
                  ProxyPassReverse ws://127.0.0.1:8010/ws
        </Location>

   	ProxyPass /ws !
        ProxyPass        / http://localhost:8010/
        ProxyPassReverse / http://localhost:8010/

and it works now!

( after searching a lot, I found the solution here:
  https://docs.buildbot.net/0.9.2/manual/cfg-www.html )

There it is, in case anyone else needs it.

J.

On Sat, Mar 21, 2020 at 12:44:38PM -0300, Jeronimo Pellegrini wrote:
> Hello!
> 
> I have installed buildbot -- one docker image with a master, and another with a worker. Inter-container networking is allowed, and they share the same network; I have also a gitea instance, and installed the `buildbot_gitea` plugin.
> 
> So far I got a small project to run `make` on the worker after a push, and buildbot correctly reports success back to gitea (I can tell form the logs, and gitea also shows the green check image on the repo).
> 
> However, 
> 
> * the waterfall view is always empty; console and grid views do not load (they show the "loading" animation and never finish); 
> * in the "Home" buildbot tab, sometimes the list of recent builds show up, sometimes it doesn't. (But the number of recent builds is always correct)
> * if I click on one of the builds (successful or not, doesn't matter), it shows a build page, but empty (no build steps, no build properties, nothing).
> 
> The only things that look strange on the master logs are periodic timeout messages, some connection drop messages:
> 
>     2020-03-21 12:11:26+0000 [-] Timing out client: IPv4Address(type='TCP', host='172.27.0.1', port=56388)
>     2020-03-21 12:11:26+0000 [-] Timing out client: IPv4Address(type='TCP', host='172.27.0.1', port=56380)
>     2020-03-21 12:11:26+0000 [-] Timing out client: IPv4Address(type='TCP', host='172.27.0.1', port=56392)
>     
>     2020-03-21 12:19:40+0000 [-] dropping connection to peer tcp4:172.27.0.1:56598 with abort=False: None
> 
> and this:
> 
>     2020-03-21 12:10:49+0000 [-] Unhandled error in Deferred:
>     2020-03-21 12:10:49+0000 [-] Unhandled Error
>     	Traceback (most recent call last):
>     	  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
>     	    self.run()
>     	  File "/usr/lib/python3.8/threading.py", line 870, in run
>     	    self._target(*self._args, **self._kwargs)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/twisted/_threads/_threadworker.py", line 46, in work
>     	    task()
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/twisted/_threads/_team.py", line 190, in doWork
>     	    task()
>     	--- <exception caught here> ---
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/twisted/python/threadpool.py", line 250, in inContext
>     	    result = inContext.theWork()
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/twisted/python/threadpool.py", line 266, in <lambda>
>     	    inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/twisted/python/context.py", line 122, in callWithContext
>     	    return self.currentContext().callWithContext(ctx, func, *args, **kw)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/twisted/python/context.py", line 85, in callWithContext
>     	    return func(*args,**kw)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/buildbot/buildbot_net_usage_data.py", line 204, in _sendBuildbotNetUsageData
>     	    res = _sendWithRequests(PHONE_HOME_URL, data)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/buildbot/buildbot_net_usage_data.py", line 197, in _sendWithRequests
>     	    r = requests.post(url, json=data)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/requests/api.py", line 119, in post
>     	    return request('post', url, data=data, json=json, **kwargs)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/requests/api.py", line 61, in request
>     	    return session.request(method=method, url=url, **kwargs)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/requests/sessions.py", line 530, in request
>     	    resp = self.send(prep, **send_kwargs)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/requests/sessions.py", line 643, in send
>     	    r = adapter.send(request, **kwargs)
>     	  File "/bbot/sandbox/lib/python3.8/site-packages/requests/adapters.py", line 516, in send
>     	    raise ConnectionError(e, request=request)
>     	requests.exceptions.ConnectionError: HTTPSConnectionPool(host='events.buildbot.net', port=443): Max retries exceeded with url: /events/phone_home (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7ff7297704f0>: Failed to establish a new connection: [Errno 110] Operation timed out'))
> 
> which seems to happen only once (why is buildbot trying to phone home anyway? there is no mention of `events.buildbot.net` in any of my config files.
> 
> The docker containers have full network access, ipv6, routing and DNS are all fine (tested with the `buildbot-master` image).
> 
> This is my `master.cfg`:
> 
>     import os
>     
>     from twisted.application import service
>     from buildbot.master import BuildMaster
>     
>     from buildbot.plugins import *
>     from buildbot_gitea.auth import GiteaAuth
>     from buildbot_gitea import *
>     
>     basedir = '/bbot/bbot-master'
>     rotateLength = 10000000
>     maxRotatedFiles = 10
>     configfile = 'master.cfg'
>     
>     umask = None
>     
>     if basedir == '.':
>         basedir = os.path.abspath(os.path.dirname(__file__))
>     application = service.Application('buildmaster')
>     from twisted.python.logfile import LogFile
>     from twisted.python.log import ILogObserver, FileLogObserver
>     logfile = LogFile.fromFullPath(os.path.join(basedir, "twistd.log"), rotateLength=rotateLength,
>                                     maxRotatedFiles=maxRotatedFiles)
>     application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
>     
>     m = BuildMaster(basedir, configfile, umask)
>     m.setServiceParent(application)
>     m.log_rotation.rotateLength = rotateLength
>     m.log_rotation.maxRotatedFiles = maxRotatedFiles# -*- python -*-                                                                                                                                                                                                                                                       
>     # ex: set filetype=python:                                                                                                                                                                                                                                                                                             
>     
>     from buildbot.plugins import *
>     
>     
>     c = BuildmasterConfig = {}
>     ####### WORKERS                                                                                                                                                                                                                                                                                                        
>     
>     c['workers'] = [worker.Worker("bbot-worker", "BUILDBOT_PASSWORD")]
>     
>     c['protocols'] = {'pb': {'port': 9989}}
>     
>     ####### CHANGESOURCES                                                                                                                                                                                                                                                                                                  
>     
>     c['change_source'] = []
>     c['change_source'].append(changes.PBChangeSource())
>     
>     ####### SCHEDULERS                                                                                                                                                                                                                                                                                                     
>     
>     c['schedulers'] = []
>     
>     
>     c['schedulers'].append(schedulers.SingleBranchScheduler(
>                                 name="all",
>                                 change_filter=util.ChangeFilter(branch='master'),
>                                 treeStableTimer=None,
>                                 builderNames=["runtests"]))
>     c['schedulers'].append(schedulers.ForceScheduler(
>                                 name="force",
>                                 builderNames=["runtests"]))
>     
>     ####### BUILDERS                                                                                                                                                                                                                                                                                                       
>     
>     factory = util.BuildFactory()
>     factory.addStep(steps.Gitea(repourl='gitea at gitea.mydomain:jpellegrini/repo.git',
>     	mode='incremental',
>             workdir="build",
>             branch="master",
>             progress=True,
>             logEnviron=False,
>     ))
>     
>     factory.addStep(steps.ShellCommand(command=["make"]))
>     
>     c['builders'] = []
>     
>     c['builders'].append(
>         util.BuilderConfig(name="runtests",
>           workernames=["bbot-worker"],
>           factory=factory))
>     
>     ####### BUILDBOT SERVICES                                                                                                                                                                                                                                                                                              
>     
>     c['services'] = [
>         reporters.GiteaStatusPush(
>     	baseURL="https://gitea.mydomain/",
>             token="GITEA_API_ACCESS_TOKEN",
>             verbose=True)
>     ]
>     
>     
>     ####### PROJECT IDENTITY                                                                                                                                                                                                                                                                                               
>     
>     c['title'] = "My Domain!"
>     c['titleURL'] = "https://buildbot.mydomain"
>     
>     
>     c['buildbotURL'] = "https://buildbot.mydomain/"
>     
>     c['www'] = dict(port=8010,
>                     plugins=dict(waterfall_view={}, console_view={}, grid_view={}))
>     
>     c['www']['authz'] = util.Authz(
>             allowRules = [
>                 util.AnyEndpointMatcher(role="admins")
>             ],
>             roleMatchers = [
>                 util.RolesFromUsername(roles=['admins'], usernames=['jpellegrini'])
>             ]
>     )
>     
>     c['www']['auth'] = GiteaAuth(
>         endpoint="https://gitea.mydomain/",
>         client_id="MY_CLIENT_ID_FROM_GITEA",
>         client_secret='MY_CLIENT_SECRET_FROM_GITEA')
>     
>     c['www']['change_hook_dialects'] = {
>                                       'gitea': {
>                                       'secret': 'THE_GITEA_WEBHOOK_SECRET',
>                                       'onlyIncludePushCommit': True
>                                       }
>     }
>     
>     ####### DB URL                                                                                                                                                                                                                                                                                                         
>     
>     c['db'] = {
>         'db_url' : "postgresql://buildbot:MY_SECRET_DB_PASSWORD@172.25.0.2/buildbot",
>     }
> 
> The Dockerfile for the master is
> 
>     FROM alpine:3.11.3
>     EXPOSE 9989
>     
>     RUN apk update
>     RUN apk add python3 bash    busybox-extras w3m gcc python3-dev libffi-dev openssl-dev musl-dev postgresql-dev
>     RUN mkdir /bbot
>     COPY entrypoint.sh /root/
>     RUN chmod a+x /root/entrypoint.sh
>     RUN mkdir /root/.ssh && chmod og-rwx /root/.ssh/
>     COPY bbot-gitea bbot-gitea.pub /root/.ssh/
>     RUN chmod og-w /root/.ssh/bbot-gitea*
>     
>     
>     RUN cd /bbot && \
>         python3 -m venv sandbox && \
>         source sandbox/bin/activate && \
>         pip3 install 'buildbot[bundle]' && \
>         pip3 install 'requests[security]' && \
>         pip3 -v install buildbot_gitea && \
>         pip3 install treq && \
>         pip3 install psycopg2
>     RUN apk del gcc python3-dev libffi-dev openssl-dev musl-dev
>     
>     RUN ls -la /root
>     RUN cat /root/entrypoint.sh
>     
>     ENTRYPOINT [ "/root/entrypoint.sh" ]
> 
> and the entrypoint does nothing special -- it is this,
> 
>     #!/bin/bash                                                                                                                                                                                                                                                                                                            
>     
>     cd /bbot
>     
>     echo " BBOT MASTER ENTRYPOINT"
>     
>     source sandbox/bin/activate
>     buildbot upgrade-master bbot-master
>     
>     # debug: check everything that was pip-installed:
>     echo "\n\n=====\n"
>     pip3 list
>     echo "=====\n\n"
>     
>     if [ ! -f bbot-master/buildbot.tac ]; then
>             buildbot create-master bbot-master
>     fi
>     
>     buildbot start bbot-master
>     tail -f /bbot/bbot-master/twistd.log
> 
> and the `pip3 list` line, which runs on startup for debugging, shows that I have 
> 
>     buildbot                2.7.0     
>     buildbot-console-view   2.7.0     
>     buildbot-gitea          1.2.0     
>     buildbot-grid-view      2.7.0     
>     buildbot-waterfall-view 2.7.0     
>     buildbot-worker         2.7.0     
>     buildbot-www            2.7.0     
> 
> So... What else can I do to continue debugging this?
> _______________________________________________
> users mailing list
> users at buildbot.net
> https://lists.buildbot.net/mailman/listinfo/users


More information about the users mailing list