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

Reply via email to