[solved] Linux exec runner: "no content returned"

I’m trying to get the exec runner working on my Raspberry Pi (arm).

Server version: latest after 1.2.3 and before 1.3.0 was tagged
Runner version: 1.0.0-beta.3

When I trigger the build by a push, the runner does seem to receive something, but it doesn’t start the job. I have this in log:

time="2019-08-25T13:52:49+01:00" level=info msg="starting the server" addr=":3000"
time="2019-08-25T13:52:50+01:00" level=info msg="successfully pinged the remote server"
time="2019-08-25T13:52:50+01:00" level=info msg="polling the remote server" capacity=1 endpoint="https://drone.redacted.com" kind=pipeline type=exec
time="2019-08-25T13:52:50+01:00" level=debug msg="request stage from remote server" thread=1
time="2019-08-25T13:53:20+01:00" level=trace msg="http: no content returned: re-connect and re-try"
time="2019-08-25T13:54:00+01:00" level=trace msg="http: no content returned: re-connect and re-try"
time="2019-08-25T13:54:40+01:00" level=trace msg="http: no content returned: re-connect and re-try"

Server also seems to recognize the runner:

{"arch":"arm","kernel":"","kind":"pipeline","level":"debug","msg":"manager: request queue item","os":"linux","time":"2019-08-25T13:17:26Z","type":"exec","variant":""}

Here is my pipeline:

---
kind: pipeline
type: exec
name: default

platform:
  os: linux
  arch: arm

steps:
- name: greeting
  commands:
  - echo hello world

...

Here is the runner config:

DRONE_TRACE=true
DRONE_RPC_PROTO=https
DRONE_RPC_HOST=drone.redacted.com
DRONE_RPC_SECRET=redacted
DRONE_RUNNER_CAPACITY=1
DRONE_RUNNER_LABELS=[runner:rpi]
DRONE_LOG_FILE=/var/log/drone-runner-exec/log.txt

Tried adding node to the pipeline to use the label, but still the same problem:

---
kind: pipeline
type: exec
name: default

platform:
  os: linux
  arch: arm

node:
  runnner: rpi

steps:
- name: greeting
  commands:
  - echo hello world

Removing DRONE_RUNNER_LABELS completely helps, but then it looks like a bug.

based on what you have posted, it sounds like the system is behaving as expected. You have applied labels to your runner to filter pipelines, but your yaml does not define any lables in a node section. The node section must match all labels or the build will not be assigned to the runner.

the logs are also expected because the runner is polling (every 30 seconds) and each poll attempt is returning an empty response because there are no matching builds for it to run. The no content returned reflects this fact. If this were considered an error it would be labeled an error log, not a trace log.

I tried adding node just a few minutes ago : ) But it doesn’t help, see my previous comment.

Ahhh, the problem was in those square brackets, sorry.

It should be:

-DRONE_RUNNER_LABELS=[runner:rpi]
+DRONE_RUNNER_LABELS=runner:rpi