In order to debug Windows builds (e.g. with CI failures), it's helpful to allow arbitrary Envoy developers the ability to perform Windows builds. I think there are two options here:
README.md in https://github.com/envoyproxy/envoy/tree/master/bazel, how to setup a Windows build from scratch on AWS/GCP. This documentation should be detailed enough that following it will result in a valid Windows build environment, even for non-experienced Windows devs.I think (2) is most likely to be viable, but (1) would be awesome if there was some way to achieve it.
CC @wrowe @sunjayBhatia @stedsome
I was hoping something like the existing Linux dev container workflow would work, but looks like VSCode doesn't yet support windows containers: https://code.visualstudio.com/docs/remote/containers#_known-limitations
Setting up a remote docker host and having developers connect to that could be an option as well: https://docs.microsoft.com/en-us/virtualization/windowscontainers/management/manage_remotehost
I can't see anywhere yet that Github codespaces supports windows, but that may be a future option
We could potentially set this up with Azure, but the risk is that many tests including the ginormous mock tests still fail to compile in the small-ish azure containers. If this were restricted to only senior maintainers, it might be possible to rely on the gcp rbe environment for the heavy lifting. Knowing how large the resulting symbol tables are, I'm not sure if the Azure instances we've stood up for CI in the past are really sufficient. Agreed with your goals as stated.
cc @envoyproxy/windows-dev to bring you all into this dialog
Spent some time on this and it seems option (1) above is achievable with relatively low investment/moving parts. A first iteration would be a pool of Windows VMs maintainers can SSH to for rudimentary debugging.
./ci/run_envoy_docker_windows.sh bash), use VSCode remote editing over ssh (or something similar) to edit files on the remote workstation, and iterate to debugThis first pass would enable maintainers to spin up a Docker container with the required tools to build on Windows. If RBE credentials are available, they will be able to take advantage of the remote cache/execution for builds. For debugging, initially this will enable simple log/trace debugging and help people fix compilation issues. We can work on attaching a remote debugger/debug server/hacking VSCode to provide remote devcontainer support (not currently supported on Windows) in the future if needed.
Links:
https://github.com/envoyproxy/envoy/pull/13282 is a direct example where we could have used this, should bump the priority of getting this done