4 ms·
Ask HN: Are you interested in a ARM CI service?
Some time ago I bought a Raspberry Pi and started using it for my hobby projects. The problem was that my normal workflow is: code something in my PC, push it to GitHub, and test it with Travis (and build a docker image with DockerHub). The problem is this solution doesn't work well when targeting ARM. DockerHub does not compile ARM projects and Travis runs in x86.
After searching a lot I found that my best option was using a self-hosted CI, but Jenkins, the one I know best, is not an option because of the lack of memory in the Raspberry. So what I did was to create my own CI server in Golang that could run with really low memory usage and I thought it might be very useful for other people.
I would relly love to offer it as a service or make it open source.
Would you be interested in a project like this?
- rurban 10y agoOpen sourcing sounds good. Offering a service without big beefs behind sounds suicidal. There a lot of big companies with big arm servers, who could offer that as gitlab/GitHub CI integration. Problem is the SW maintanance for them.
- billconan 10y agoI would use an arm virtual machine and still use jenkins. Or get a beefier arm platform, such as the nvidia ones. implementing from scratch is too much effort.
- billconan 10y agoyou can also consider cross compiling.
- sheraz 10y agoShare the link! I'm building a list of all the commercial and open-source CI systems/SaaS/OpenSource projects out there.
- atsaloli 10y agoYou've got GitLab CI on your list already, right? :) https://about.gitlab.com/gitlab-ci/ https://about.gitlab.com/gitlab-ci/ It's open source (it's included in GitLab CE and EE).
- abeyer 10y agoIf you're at all serious about doing dev work on arm for non-micro/embedded systems, you should probably look at: https://softiron.com/products/overdrive-1000/technical-specifications/ https://softiron.com/products/overdrive-1000/technical-speci...
- kijiki 10y agoOn x86-64 Debian hosts you can install binfmt-support an qemu-user-static packages. You'll need to copy the qemu-armeb-static binary inside the container image. Then you just build inside a container normally, and the kernel will run the ARM binaries inside qemu-user, translating the ARM system calls to x86-64. If you don't control the host (ie, someone else's hosted CI service), you can do some sleazy hacks documented here: https://resin.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/ https://resin.io/blog/building-arm-containers-on-any-x86-mac... I've been meaning to try copying a cross-compiler and cross-binutil into the container, to make things faster (no need to binary-translate ARM gcc/ld to x86-64), but without statically linking the compiler/binutils, it turns into a library nightmare. In theory this should be possible with multi-arch, but I haven't invested the time to try to make it go yet.