How to perform a cross-platform building

Hi.
I’m using distrobuilder to build rootfs for my own container(on amd64), and i noticed that when building arm64 rootfs, it can’t be successfully built, any solutions?

Error: Error while downloading source: Failed to edit apk repositories: fork/exec /bin/sed: exec format error

Yeah, that’s expected. Distrobuilder isn’t meant for cross-building, we always run it on the native architecture.

So when building arm64 image, use an arm64 machine.

But the ci…?
Which means you guys brought many nodes with different arch?

That’s correct, we have dedicated CI/image builders for all architectures.

We have more limited capacity on less common architectures like ppc64le, s390x and riscv64 but then have a lot of capacity on common architectures like x86_64 and aarch64 (to the point where we also run all of our pull request tests on both Intel and ARM).

Okay, thank you
btw is there any documents about deploy https://github.com/lxc/lxc-ci/ on my own server?

No real documentation no.

The easiest is usually to look at the distrobuilder command that’s run on our Jenkins (you can see the console log) and then run something similar on your own system.

You could run your own Jenkins server with multiple runners and use our Jenkins YAML to populate it, but that’s way way overkill for 99% of people.

1 Like

Okay, thank you sir