-
Notifications
You must be signed in to change notification settings - Fork 580
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multiplatform build slows drastically after the first platform #982
Comments
@crazy-max thanks for this. I'll look into this in the near future. |
FWIW, you could leverage caching with If your builds aren't running in Github Actions runners (eg: remote build), then you may also hit a problem that affects Docker / containerd releases with Looking at your 7 min CI run, the You should expect platforms relying on QEMU in the CI to be quite slow (hence importance of leveraging caching, especially for |
@polarathene thanks! I'm giving that a try. The action |
I suppose I did it wrong. It seems that no cache was used... |
@crazy-max Why did you close the issue? It's not solved. Here is an example: https://github.com/link-society/flowg/actions/runs/10995303563/job/30525786239 The pipeline has been running for more than 2h. I know that compiling Rust is slow, but for a |
It was solved, look at the last comments.
The linked workflow that is taking long is for As stated QEMU emulating ARM64 for CI builds is very slow. It's not native builder node. Also notice how it's not just your rust crates compiling slow, it's Go and JS project builds too. With Go and Rust you can at least use amd64 to cross-compile to arm64 and save much time. If you have any external deps that need compiling that aren't native Go/Rust, then you'll need to leverage Zig for that same benefit (probably helps with JS if any package attempts to compile when lacking a pre-compiled binary). Once you do that, your builds should not be on non-native Beyond that, last I checked Github doesn't offer free arm64 native runners, you have to provide your own self-hosted runners on arm64 platforms to be used. Or you can try to leverage caching for future CI runs, but this is known to be tricky to do well within the Github CI and Docker images (notably with Rust at least). These are the only two alternatives that would avoid the cross-compiling amd64 to arm64 approach that I'm aware of. |
Contributing guidelines
I've found a bug, and:
Description
Creating a multiplatform build results in a build time that is very long or one that doesn't finish. I have two examples
In the micm project
In another project when I tried this a few months ago, the build timed out after six hours for multiple platforms.
Expected behaviour
The build doesn't time out for more than one platform.
Actual behaviour
The build does time out for more than one platform.
Repository URL
https://github.com/NCAR/micm
Workflow run URL
https://github.com/NCAR/micm/actions/runs/6433827511
YAML workflow
Workflow logs
No response
BuildKit logs
No response
Additional info
No response
The text was updated successfully, but these errors were encountered: