to speed up the build process, we build the binaries for multi-arch
docker image on the instances with corresponding architecture first,
then assemble the final docker image
- always use github runners for lightweight jobs
- prefer self-hosted runners in private forks
- prefer self-hosted runners for workflows with large matrix