Jenkins across multiple clusters

At my company, we currently use Jenkins successfully for building Unity-based Android and iOS games on a couple of old Mac Pros in our server room. As we go fully virtual (and to upgrade from 7+ year old machines), I’m hoping to move our Jenkins Pipeline based build system into the cloud.

My plan is to rebuild our Jenkins system in AWS EC2 instances, and I’m looking to touch base with anyone with experience / insights into this process. Primarily my questions are around:

  1. Can Jenkins work across multiple clusters and assign different jobs (or even stages) to different clusters? For example, I’d love to be able to build our Android apps on Linux machines and limit only the iOS + XCode builds to Mac EC2 instances. Otherwise I need all of our worker nodes to be Mac based.

  2. Any suggestions on how to efficiently build the AMIs that will be needed to spin up worker nodes? I’ve seen a few Jenkins AMIs, but nothing that attempts to keep up to date with Unity versions, Android SDK versions, XCode versions, Jenkins plugin versions, Java versions/patches, etc. Currently we manually login to our Jenkins machines and do updates directly, but with workers/clusters that will have to become a more indirect process.

Any insights or direction is greatly appreciated!