Discussion: GitLab manged macOS images
I've been prototyping an idea for how we could create and maintain a set of managed macOS images using Tart, borrowing some ideas from https://github.com/cirruslabs/macos-image-templates.
I created a POC here with some Packer files to test out the idea.
The basic idea would be to have a few layers for the various software packages that we could combine to create a set of images that would cover the needs of our users. That images could then be pushed to a GitLab container registry where they could feed into a pipeline that would make them available for the SaaS runners, AS WELL AS make them available for customers that wanted to run their own runners using Tart.
Here's a basic flowchart of how this could work. The result from this would be 4 images:
ventura-x86_64-xcode13ventura-x86_64-xcode14ventura-arm64-xcode13ventura-arm64-xcode14
We could do the same thing for Monterey, but we may not want to support that many variations. Other providers take a variety of approaches, so we could debate how granular we want to get with individual images vs packaging multiple versions that can be chosen at runtime (think asdf or xcodes).
flowchart TD
A[Ventura Base] --> B[Ventura x86_64 + Homebrew]
A --> C[Ventura ARM64 + Homebrew]
B --> D[Ventura x86_64 Xcode 13]
B --> E[Ventura x86_64 Xcode 14]
C --> F[Ventura ARM64 Xcode 13]
C --> G[Ventura ARM64 Xcode 14]
D --> H[Container Registry]
E --> H[Container Registry]
F --> H[Container Registry]
G --> H[Container Registry]
H --> I[Self-managed Tart Runners]
H --> J[SaaS Runner Pipeline]
@tmaczukin @josephburnett @ajwalker @gabrielengel_gl My first question is, would this even work? It seems like it would, but I'm sure there are complexities I'm missing. If we think this would work at a high level, then perhaps the next step would be to work on one end-to-end pipeline for a x86_64 (Rosetta) image (which will probably be the first one we need).