game-ci / documentation

📚 Documentation for GameCI open source projects
https://game.ci
MIT License
188 stars 119 forks source link

Documentation for builds with Windows Images #239

Closed davidmfinol closed 2 years ago

davidmfinol commented 2 years ago

Now that windows images are available, we need to add docs to the documentation site for them.

NoTuxNoBux commented 2 years ago

Thanks for providing support for this!

The PRs and issues mention Windows support, UWP support, and HoloLens. I'm wondering now if this means I can use the new images to build the highly specific combination of Unity-project with UWP target, using MSBuild (from Visual Studio) and the ARM64 target to build a HoloLens 2 APPX out of the box, or if I need to add additional packages or configuration for this. Whether it is or not, and what the caveats are, might be interesting to add to the documentation as well.

webbertakken commented 2 years ago

@NoTuxNoBux excellent question.

Currently we only merged initial support, with the packages that are installed for the target platform by Unity Hub.

Some SDKs will require NDAs, meaning we can not add full in-image support for this, but will be able to add documentation for these platforms.

You will always be able to fork https://github.com/game-ci/docker to put additional installations on top of the supported images and we would love to see your contributions back to GameCI if you believe there are things that can be reused by others too.

Please let me know if this answers your question.

NoTuxNoBux commented 2 years ago

Yes, I think this answers my question :slightly_smiling_face: ; in the case of HoloLens 2 support, next to installing Visual Studio Community Edition along with Unity, you need some additional packages such as the Windows Platform SDK, ARM64 Build Support (HoloLens 2 uses the ARM64 architecture), and UWP support. Since these are things that are only required for this specific target, they will likely need to be installed additionally and hidden behind a build flag as most users probably don't need these extras.

I'm not sure if these are NDA-ed, but I'd have to investigate in detail to know more. I asked the question because we've been thinking about automating HoloLens 2 builds using CI for quite some time, but since UWP requires Windows (images), and most CI systems don't (easily) support Windows hosts, we've stuck to building manually and using the Linux-based containerized Unity from this repository to only run tests in CI. Hopefully we can improve that at some point in the future - if we do, and we succeed, we will certainly consider upstreaming it, or at least instructions on what we did.

AndrewKahr commented 2 years ago

The strategy we've used for the build tools/sdks for windows has been to map them from the host into the container due to licensing issues. This means that if you're using a GitHub hosted runner you will get Visual Studio enterprise, every possible package installable in Visual Studio, and a bunch of Win 10 sdks. So if by windows platform support you mean the win10 sdk or some other package that's part of visual studio, there's a chance it would work out of the box if you target WSAPlayer for the build platform. If it's not a GitHub hosted runner then the tools would need to be installed onto the host before using the builder action.

NoTuxNoBux commented 2 years ago

Okay, that's good to know. We currently use GitLab CI; using Windows images in CI there likely entails installing the GitLab Runner on a Windows host and using that rather than the cloud runners (though we've not tried this yet). In any case, thanks for the information on the GitHub hosted runners; if it has pretty much everything by default, there is indeed a good chance that the ARM64 support might already be in there, since all of the required packages for HoloLens 2 are installable through the Visual Studio Package Manager IIRC.