Add Windows CI for msvc 2017 and msys2
authorJordan Petridis <jpetridis@gnome.org>
Thu, 11 Jul 2019 04:48:08 +0000 (07:48 +0300)
committerJordan Petridis <jpetridis@gnome.org>
Wed, 17 Jul 2019 08:15:31 +0000 (11:15 +0300)
Currently the container is based upon a windows 1607 image
and requires a runner with a server/hyper-v 1607 host
to be able to execute.

There are plan on moving the runner to a 1807 later.

.gitlab-ci.yml

index 6ddfe46..693f110 100644 (file)
@@ -20,3 +20,54 @@ debian sid:
   artifacts:
     paths:
       - build/meson-logs/
+
+.build windows:
+  image: 'registry.freedesktop.org/gstreamer/gst-ci/amd64/windows:v6'
+  stage: 'build'
+  tags:
+    - 'docker'
+    - 'windows'
+    - '1607'
+  variables:
+    # Make sure any failure in PowerShell scripts is fatal
+    ErrorActionPreference: 'Stop'
+    WarningPreference: 'Stop'
+    # Uncomment the following key if need to pass custom args, as well with the
+    # $env:MESON_ARGS line in the `script:` blocks
+    # MESON_ARGS: >-
+    #   -Dfoo=enabled
+    #   -Dbar=disabled
+  before_script:
+    # Make sure meson is up to date, so we don't need to rebuild the image with each release
+    - pip3 install -U meson
+  script:
+    # For some reason, options are separated by newline instead of space, so we
+    # have to replace them first.
+    # - $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")
+    # Gitlab executes PowerShell in docker, but VsDevCmd.bat is a batch script.
+    # Environment variables substitutions is done by PowerShell before calling
+    # cmd.exe, that's why we use $env:FOO instead of %FOO%
+    - cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
+        meson build $env:MESON_ARGS &&
+        ninja -C build"
+
+vs2017 amd64:
+  extends: '.build windows'
+  variables:
+    ARCH: 'amd64'
+
+vs2017 x86:
+  extends: '.build windows'
+  variables:
+    ARCH: 'x86'
+
+msys2:
+  extends: '.build windows'
+  script:
+    # For some reason, options are separated by newline instead of space, so we
+    # have to replace them first.
+    # - $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")
+
+    - $env:PATH += ";C:\msys64\usr\bin;C:\msys64\mingw64/bin;C:\msys64\mingw32/bin"
+    - C:\msys64\usr\bin\bash -c "meson build $env:MESON_ARGS &&
+        ninja -C build"
\ No newline at end of file