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@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@buildbot.net
https://lists.buildbot.net/mailman/listinfo/users

Reply via email to