💪️ An experiment to build Flux with BIG MUSCLES I mean, with ARM.
These images are incredibly slow to build on GitHub actions, so we have several building strategies:
This strategy builds components separately (and sequentially):
- build-deploy-base uses Dockerfile.base to build up openpmix and prrte. (takes appoximately 1 hour 25-37 minutes)
- build-deploy-flux-security uses Dockerfile.flux-security to add Flux Security to the base image (1) (only takes 5 minutes)
- build-deploy-flux-core uses Dockerfile.flux-core to add Flux Core to (2). (takes approximately 1 hour 30-40 minutes)
- build-deploy-flux-sched adds Flux Sched on top of Flux core via the Dockerfile.flux-sched (takes approximately 52 to 1 hour 22 minutes)
We also wanted to do a test build with spack. This didn't work on GitHub actions - but worked great on AWS! 🙌️ For any of the above images, if you need to test an update, do a test build uncommenting the pull request logic to trigger:
- # pull_request: []
+ pull_request: []
And if you just want to rebuild as is, you can go to Actions -> (Choose workflow on left) -> Run Workflow (on right) to trigger a build, selected the named workflow.
And if you want a "all in one" build, although we don't use GitHub actions (it takes a LONG time) you can use:
- build-deploy.yaml uses the vanilla Dockerfile to build everything (takes approximately 4 hours 25 minutes on linux/arm64)
Since this was slow on GHA, I decided to also try it on an AWS instance. You can use the setup instructions from spack and once you are in the instance (from the root here):
$ docker buildx build --platform linux/arm64 --tag ghcr.io/rse-ops/flux-arm:arm64 .
At this point you can tag for the date too, and push both (you'll need to add credentials to the instance)
docker tag ghcr.io/rse-ops/flux-arm:arm64 ghcr.io/rse-ops/flux-arm:june-2023-arm64
docker push ghcr.io/rse-ops/flux-arm --all-tags