Questions about setting up Drone v0.5

I am currently following the instructions at http://readme.drone.io/0.5/

Here are some questions:

  1. How can I make sure I have set up my drone server successfully? I thought it can be tested by opening the IP address with a web browser (In my case, it’s http://192.168.222.7:8000).

  2. I use the recommended way to generate a DRONE_SECRET which is in the form of xxxx-yyyyy-zzzzz-wwww-N. Is that correct? I expected it to be a base64 number or whatever.

  3. Given that IP of my machine is 192.168.222.7, and the exported port is 8000 for the Drone server, Is the DRONE_SERVER ws://192.168.222.7:8000/ws/broker?

  4. Is the value of DRONE_SECRET for the Drone agent same as the DRONE_SECRET specified for the Drone server?

I encountered the follow messages:

$ docker logs drone-agent
1:M 19 Dec 06:03:18.038 * connecting to server ws://192.168.222.7:8000
1:M 19 Dec 06:03:18.038 # connection failed, retry in 15s. websocket.Dial ws://192.168.222.7:8000: dial tcp 192.168.222.7:8000: getsockopt: connection refused
$ ./drone server
ERRO[0000] sql: unknown driver "sqlite3" (forgotten import?)
FATA[0000] database connection failed

EDIT: Most of the problems above have been overcome.

Do you still have questions left, or are you all up-and-running?

It’s up-and-running now. I spent some time to figure out the differences between 0.4 and 0.5.
Now the last thing which would likely be broken is my handwritten rsync plugin. It would take some time to know whether it works or not.

note that 0.4 and 0.5 plugins are not compatible. 0.5 plugins use environment variables to pass fields to the plugin instead of a large JSON blob. Porting shouldn’t be too difficult, though.

See the Plugins section of the docs at http://readme.drone.io/0.5/

The build failed at 33 mins after it started and the logs from the web UI is cut off in the middle despite I have set DRONE_MAX_LOGS=10 for the Drone Agent. Maybe that was not enough for a big project like an Android BSP? Or should I set it for the Drone Server as well?

Also, the web UI was very unresponsive when the build was running. The Google Chrome prompted about killing the tab several times (due to unresponsiveness).

Any tips for diagnoses?

For now, I create a Docker image following the documentation at the bottom of http://readme.drone.io/0.5/.

The Dockerfile:

FROM alpine

RUN mkdir -p ~/.ssh
ADD id_rsa ~/.ssh/
RUN chmod -R 600 ~/.ssh

RUN apk -Uuv add rsync openssh

And the .drone.yml:

pipeline:
        build:
                image: builder/android-build
                commands:
                        - android-k/vendor/foo/run-ci.sh
        deploy:
                image: drone-plugins/rsync
                commands:
                        - rsync -az -r -e "ssh -p 22 -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o StrictHostKeyChecking=no" /drone/src/android-k/out/target/product/foo builder@192.168.222.7:/home/public/releases/

This is a bit of ad-hoc but hopefully it will work well enough for me.

Any suggestions are appreciated.

EDIT: It turned out that the -e ssh ... options needs to be quoted.

The reason we limit build log size is because having a text output too large freezes the browser. See Log output performance, rendering, possibly freezing · Issue #39 · drone/drone-ui · GitHub

If you’re running OS X, I’ve noticed Safari is able to deal with big logs a lot better than Chrome.

I had a build that ran for 8 minutes but shouted 80MB to stdout. Run it locally and pipe the output to a file. That way you can check the filesize to see what your DRONE_MAX_LOGS should be.

It would be even better, however, to reduce your log size somehow. Nobody is going to go through 10+MB of garbage to find something on a CI server.
If you have a failing build but you don’t know why, run it locally (using Drone exec) in a more verbose mode.

It can store all the logs now after following your advice.

The size of log is about ~16MB with 2>&1 | tee build.log. The web UI is literally unusable with that amount of data (even very difficult to ‘click’ the restart button). But anyway, it’s finally settled down :slight_smile: