[users at bb.net] debugging DockerLatentWorker
stefan
stefan at seefeld.name
Wed Mar 13 14:05:01 UTC 2019
On 2019-03-13 9:48 a.m., Pierre Tardy wrote:
>
>
> So, I have managed to resolve my problems, so I'd like to report
> back my findings, for the record.
>
> The main issue was my own confusion about how DockerLatentWorker
> actually operate. Having successfully built my project with
> `bbtravis run`, I expected the basic mechanism to be the same,
> i.e. a Worker "shell" to push commands into a docker instance.
> What I had failed to realize was that a buildbot worker instance
> actually had to run *inside* the container.
>
> Yes, this is unfortunate. Easier approach would be to inject the
> worker binary inside the container, but this is not something we
> started working on.
> This would allow to use arbitrary docker image for running your builds.
>
> Normally this is well explained in
> http://docs.buildbot.net/latest/manual/configuration/workers-docker.html
Well, yeah, in hindsight it looks clear. The problem is that before you
understand it, it has to be clear, too. :-) (But slightly more
seriously, I agree it's actually clear: I was blinded by my own wrong
expectations.)
>
> After that clarification, and having rebuilt my docker image
> correspondingly, things started to fall into place (I could
> inspect the logs from the container to see the debug).
>
> The next stumbling block was the setting up of the communication
> between master and worker. With some help from IRC I was able to
> rewrite the `buildbot.tac` worker code to fetch master name,
> password, as well as some other variables from the environment,
> which the DockerLatentWorker conveniently prepared.
>
> That buildbot.tac is already prepared in the official docker images
> https://github.com/buildbot/buildbot/blob/master/worker/docker/buildbot.tac
Fair enough. This is also a bit confusing: there are many different ways
to use docker: one is to simply encapsulate the environment to run
buildbot *in* (once for the master, once for the worker), another one is
to use *inside* the worker. Combined with my confusion as to whether
docker runs inside the worker, or the worker runs inside docker
(actually both !), this didn't help.
> The last item was / is how to establish the master host address
> such that the worker can reach it from inside the container. Given
> that the master passes the hostname down to the worker, and given
> that in my case I was running the worker on the same machine, I
> simply added `--network host` to the worker's `host_config`
> constructor argument, and things started to work. Still, this
> seems a bit hackish at best. Any idea how to do that properly ?
>
> You just have to set the BUILDMASTER variable to the master fqdn. Even
> if the container runs on localhost, worker would be able to more
> easily reach it. as normally, docker takes care of the routing and the
> dns.
well, without the `--network host` argument I wasn't able to reach the
master under its fqdn.
> I still think one or two example setups would be nice, as a
> starting point. So far all I have found were exampes using a
> LocalWorker, or (in case of the buildbot metabot), a
> KubeLatentWorker, which is one step too much.
>
>
> Feel free to contribute one! :)
I'm considering it (once my comfort level improves a bit). I'm also
considering to contribute to the buildbot_travis extension: I'm now
using a slightly different yml spec, so generalized the code that maps
the yml file to a set of builds with corresponding build steps.
The travis-ci spec would then be a particular instance of that...
Thanks,
Stefan
--
...ich hab' noch einen Koffer in Berlin...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildbot.net/pipermail/users/attachments/20190313/7546686f/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.png
Type: image/png
Size: 1478 bytes
Desc: not available
URL: <http://lists.buildbot.net/pipermail/users/attachments/20190313/7546686f/attachment.png>
More information about the users
mailing list