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

Jeronimo Pellegrini j_p at aleph0.info
Sat Mar 21 15:44:38 UTC 2020


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?


More information about the users mailing list