/bin/sh: base64: not found

Hello Team Drone.io,

I’ve been trying out a local install of drone to run tests for a python package and have encountered a tricky-to-diagnose problem that I hope you may be able to help me with. Basically, my drone build fails very quickly and somewhat cryptically:

# .drone.yml
pipeline:
  build:
    image: quay.io/biocontainers/biopython:1.70--np112py36_1
    commands:
      - python setup.py test

# build error
/bin/sh: base64: not found

I originally posted an issue in the repo that builds the docker image that i am using, thinking that the issue is a PATH/endpoint issue. However, I was able to verify the expected behavior of those images and believe the issue is either in my setup or in drone (probably the former). For example, testing for /bin/sh in the docker image works fine:

# returns correctly
docker run -i -t quay.io/biocontainers/biopython:1.70--np112py36_1 /bin/sh --help

My original thinking is that the environment is not being correctly registered as the docker image installs the executables in a non-system wide $PATH, so the $PATH needs to be registered. But it seems to me that the builds are failing almost immediately - perhaps at the shebang line.

I would appreciate any tips/pointers on diagnosing/fixing this problem.

Thank You,
zach cp

the error message seems to indicate base64 is not in your path

/bin/sh: base64: not found

drone requires the base64 binary is included in your build image (quay.io/biocontainers/biopython) so that it can execute the build commands. The commands are encoded as a base64 string, passed to the container, and then decoded and executed at runtime. So based on the details I have, I would assume base64 has been stripped from the container or is not included in the default container PATH.

I can confirm that drone does not override or change the PATH in any way. It does set the ENTRYPOINT and COMMAND since it needs to ensure your build commands are executed as the main container process, but that is it.

@bradrydzewski,

Thank you, that makes sense. I will check the image but I agree that base64 is probably not in this build (i’ll check) and thats the issue. As this is for testing on a local machine, I’m not too concerned about having a minimal build machine.

Thanks again for your quick reply.