Is It Possible To Customize CircleCI's Windows Server Image?

Is there a way we can extend the windows-server-2019-vs2019 image? I noticed it isn’t a Docker image. I ask because we would like to make our own orb that has the 2.64 GB NuGet package necessary for UWP (Universal Windows Platform) app development. Right now restoring that one dependency significantly slows down our build times. If baking it into the image wouldn’t improve things, we are certainly open to other suggestions for improving our performance. We are already caching all of our NuGet packages and using the checksum of the lock file as the key, which helped a bit.

Hey @Kurt-von-Laven Currently, users can only bring their own Docker images. All machine-type executors (windows included) do not have the ability to specify an AMI or custom machine image.

You can actually do this if you are using the CircleCI Enterprise (Server) product.

Users on the Scale plan can also utilize the “Runner” product to run their CircleCI job locally on their own custom hardware.

For cloud users, our general recommendation is to use Orbs to install any extra dependencies you may have. This might also be more efficient in some cases than it would be to bring your own image when you factor in pre-booted VMs (which often launch instantly) vs consistently cold booting.

1 Like

Thank you, @KyleTron. Great info, and that is all very reasonable; I didn’t know about the pre-booted VMs. Sounds like we are already following your advice in that case, so if we wanted more speed, we would probably have to look for optimizations elsewhere (e.g., host our own version of the NuGet package with better compression).

1 Like

I have since realized that CircleCI’s caching automatically handles compression, which is great, and also that corruption checks cut off at 500 MB. This is presently a drawback to using CircleCI for Universal Windows Platform developers since even compressed, the dependency that all UWP projects start with is still 1.3 GB.