We are building and publishing multi-platform images for the Drone server and the agent. This means you can run the server on arm (no need to compile it yourself). We are also using the Docker manifest tool when we publish the image so that you can run docker pull drone/drone:0.9.0-alpha.1 and the docker client will pull the correct image based on your host machine architecture.

More to come in this space but if anyone is interested in trying this out, please let me know. Also the folks at Packet (bare metal arm hosting) are providing hosting credits to the Drone community. They have a badass 96-core arm64 server you can use. See my tweet for details.

Same problem with the new rc1. Congrats for the great release, by the way!

drone/agent:1.0.0-rc.1-linux-arm also has an amd64 manifest wrongly attached. Seems to be problem with the arm64 build as well.

I have to correct myself though: The manifests are wrong but it is possible to run the arm image manually on an arm server. It just does not work with Docker Swarm mode because Swarm verifies the architecture in the manifest. (The error is no suitable node (unsupported platform on 1 node).)

There should be no need to use the architecture-specific tags. The drone/agent:1.0.0-rc.1 manifest provides digests for multiple architectures and operating system. You can run docker pull drone/agent:1.0.0-rc.1 on any architecture and Docker will automatically download the platform-specific digest.

In terms of drone/agent:1.0.0-rc.1-linux-arm, we are doing a vanilla docker push from an arm server when publishing this image. Is there something we need to set explicitly, or is this a Docker bug? I would have assumed that Docker inherits the os and architecture from the base image or from the host OS …

I could’ve sworn I tried the main image unsuccessfully… Nevermind, probably my fault. It works now!

Regarding the manifest of architecture specific image (drone/agent:1.0.0-rc.1-linux-arm), I just had a look at my own images. They do have the architecture set correctly to arm (without the variant field though). As I am doing vanilla pushes as well, I am not sure what is going wrong on your side. (I would guess that the architecture is inherited from the building host OS as well, but I do not know really.)