github: add windows/msys CI build

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b414314..e3ea9e1 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,6 +8,12 @@
     branches:
       - main
 
+# ensure that the workflow is only triggered once per PR,  subsequent pushes to the PR will cancel
+# and restart the workflow. See https://docs.github.com/en/actions/using-jobs/using-concurrency
+concurrency:
+  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+  cancel-in-progress: true
+
 jobs:
   build-make:
     runs-on: ubuntu-latest
@@ -63,3 +69,45 @@
 
       - name: Run check
         run: if ! meson test -C build; then cat build/meson-logs/testlog.txt; false; fi
+
+  build-windows:
+    runs-on: windows-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - { sys: mingw32 }
+          - { sys: mingw64 }
+          - { sys: ucrt64  }
+          - { sys: clang64 }
+    name: ${{ matrix.sys }}
+    defaults:
+      run:
+        shell: msys2 {0}
+    steps:
+    - name: Checkout
+      uses: actions/checkout@v4
+      with:
+        fetch-depth: 0
+
+    - name: Setup MSYS2
+      uses: msys2/setup-msys2@v2
+      with:
+        msystem: ${{matrix.sys}}
+        update: true
+        install: >-
+          git
+          flex
+          bison
+        pacboy: >-
+          toolchain:p
+          meson:p
+          ninja:p
+          libyaml:p
+          swig:p
+          python-setuptools-scm:p
+
+    - name: '🚧 Build'
+      run: |
+        meson setup -Dtools=true -Dtests=false build
+        meson compile -C build