Add CI for native windows support

Background

NOTE: This is based on the assumption that win32 refers to the windows API, not running on a 32-bit Windows system, as there is some ambiguity.

There is an ongoing effort (#1021) to add native windows support to buildstream, and a need to ensure that this support doesn't bit rot, or at least where functionality breaks it is known exactly when this happens.

The proposed solution is to set up a CI runner and CI jobs to exercise the currently-implemented functionality. Work has apparently been made to support:

  • bst init
  • bst help
  • bst workspace list (possibly)

And there are currently experimental branches to allow bst build for import elements.

Task description

  • Manually set up a Windows system to run CI jobs in native Windows
    • Install Python and Pip
    • Install BuildStream's pip dependencies
    • Install a native windows gitlab runner
  • Produce automated instructions to spin up a runner from scratch
    • There is already a script to spin up a runner at gitlab.com/jonathanmaw/wsl-setup-script that can be modified, though if there's spare time it might be worth looking into other tools (ansible or packer scripts?)
  • Add gitlab CI for native windows to exercise bst init and `bst help functionality.
    • Using tox or pytest is not necessary, but will be simpler if tox or pytest "just work" (modulo nearly every test failing).
    • If these steps prove to be time-consuming, these tests should be set to only run on master, otherwise we will block buildstream's CI.
  • Install the experimental branches of buildbox-common and buildbox-casd in native windows.
    • Building these is likely to be highly time-consuming.
  • Produce automated instructions for buildbox-common and buildbox-casd installation.
    • It must be relatively easy to specify different refs of buildbox-common and buildbox-casd, so upgrading to the latest version of these (e.g. when there are more fixes) is easy.
  • Add gitlab CI for native windows to exercise bst build on import elements.
    • It must be relatively easy to disable this or make it optional.

Acceptance Criteria

  • When CI runs against master, tests are run to check windows 10 support for:
    • bst init
    • bst help
    • bst build of an import element.
  • The test for bst building an import element can be easily disabled.

Edited by Jonathan Maw