diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ee4f953bd1a10ee1d9ecbab7391e728c7c1ef768_LmdpdGxhYi1jaS55bWw=..ed739e3d0bd0fb1df926ef46cccf0b7a333f019e_LmdpdGxhYi1jaS55bWw= 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -49,8 +49,7 @@
     CONFIG: "--without-crypto"
     CHERE_INVOKING: "yes"
   before_script:
-    - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
-    - $Env:Path="C:\msys64\$Env:MINGW_PATH\bin;C:\msys64\usr\bin;$Env:Path"
+    - $Env:Path="C:\msys64\usr\bin;$Env:Path"
     - bash -lc 'sh .gitlab-ci/setup_mingw.sh autotools'
   script:
     - bash -lc 'sh .gitlab-ci/test.sh'
@@ -60,7 +59,6 @@
   variables:
     CFLAGS: "-O2"
     MSYSTEM: MINGW64
-    MINGW_PATH: mingw64
 
 # Disabled, GCC missing?
 .mingw:msys:shared:
@@ -68,7 +66,6 @@
   variables:
     CFLAGS: "-O2"
     MSYSTEM: MSYS
-    MINGW_PATH: usr
 
 .cmake:linux:
   image: registry.gitlab.gnome.org/gnome/libxml2
@@ -72,11 +69,4 @@
 
 .cmake:linux:
   image: registry.gitlab.gnome.org/gnome/libxml2
-  before_script:
-    - git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git libxml2-source
-    - cmake -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxml2-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLIBXML2_WITH_TESTS=OFF -S libxml2-source -B libxml2-build
-    - cmake --build libxml2-build --target install
-    - export CMAKE_PREFIX_PATH=$CI_PROJECT_DIR/libxml2-install:$CMAKE_PREFIX_PATH
-    - export PATH=$CI_PROJECT_DIR/libxml2-install/bin:$PATH
-    - export LD_LIBRARY_PATH=$CI_PROJECT_DIR/libxml2-install/bin:$LD_LIBRARY_PATH
   script:
@@ -82,10 +72,4 @@
   script:
-    - cmake -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxslt-install -DCMAKE_C_FLAGS='-Werror' -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B libxslt-build
-    - cmake --build libxslt-build --target install
-    - mkdir -p libxslt-install/share/libxslt
-    - cp Copyright libxslt-install/share/libxslt
-  after_script:
-    - cd libxslt-install
-    - tar -czf ../libxslt-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz *
+    - sh .gitlab-ci/test_cmake.sh
   artifacts:
     paths:
@@ -90,7 +74,7 @@
   artifacts:
     paths:
-      - libxslt-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz
+      - libxslt-$CI_COMMIT_SHORT_SHA-$SUFFIX.tar.gz
     expire_in: 1 day
 
 cmake:linux:gcc:shared:
   extends: .cmake:linux
@@ -93,9 +77,7 @@
     expire_in: 1 day
 
 cmake:linux:gcc:shared:
   extends: .cmake:linux
-  only:
-    - schedules
   variables:
     BUILD_SHARED_LIBS: "ON"
     CC: gcc
@@ -99,7 +81,7 @@
   variables:
     BUILD_SHARED_LIBS: "ON"
     CC: gcc
-    SUFFIX: shared
+    SUFFIX: linux-gcc-shared
 
 cmake:linux:gcc:static:
   extends: .cmake:linux
@@ -108,7 +90,7 @@
   variables:
     BUILD_SHARED_LIBS: "OFF"
     CC: gcc
-    SUFFIX: static
+    SUFFIX: linux-gcc-static
 
 cmake:linux:clang:shared:
   extends: .cmake:linux
@@ -117,7 +99,7 @@
   variables:
     BUILD_SHARED_LIBS: "ON"
     CC: clang
-    SUFFIX: shared
+    SUFFIX: linux-clang-shared
 
 cmake:linux:clang:static:
   extends: .cmake:linux
@@ -126,7 +108,7 @@
   variables:
     BUILD_SHARED_LIBS: "OFF"
     CC: clang
-    SUFFIX: static
+    SUFFIX: linux-clang-static
 
 .cmake:mingw:
   tags:
@@ -134,6 +116,5 @@
   variables:
     CHERE_INVOKING: "yes"
   before_script:
-    - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
-    - $Env:Path="C:\msys64\$Env:MINGW_PATH\bin;C:\msys64\usr\bin;$Env:Path"
+    - $Env:Path="C:\msys64\usr\bin;$Env:Path"
     - bash -lc 'sh .gitlab-ci/setup_mingw.sh cmake ninja'
@@ -139,8 +120,2 @@
     - bash -lc 'sh .gitlab-ci/setup_mingw.sh cmake ninja'
-    - .gitlab-ci/Install-7-Zip
-    - git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git libxml2-source
-    - cmake -G Ninja -DBUILD_SHARED_LIBS=$Env:BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxml2-install -DLIBXML2_WITH_TESTS=OFF -S libxml2-source -B libxml2-build
-    - cmake --build libxml2-build --config RelWithDebInfo --target install
-    - $Env:CMAKE_PREFIX_PATH="$Env:CI_PROJECT_DIR\libxml2-install;$Env:CMAKE_PREFIX_PATH"
-    - $Env:Path="$Env:CI_PROJECT_DIR\libxml2-install\bin;$Env:Path"
   script:
@@ -146,9 +121,4 @@
   script:
-    - cmake -G Ninja -DBUILD_SHARED_LIBS="$Env:BUILD_SHARED_LIBS" -DCMAKE_INSTALL_PREFIX=libxslt-install -DCMAKE_C_FLAGS='-Werror' -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B libxslt-build
-    - cmake --build libxslt-build --target install
-    - New-Item -ItemType Directory libxslt-install\share\libxslt
-    - Copy-Item Copyright libxslt-install\share\libxslt
-  after_script:
-    - .\7za.exe a libxslt-$Env:CI_COMMIT_SHORT_SHA-$Env:MSYSTEM-$Env:SUFFIX.7z .\libxslt-install\*
+    - bash -lc 'sh .gitlab-ci/test_cmake.sh -G Ninja'
   artifacts:
     paths:
@@ -153,6 +123,6 @@
   artifacts:
     paths:
-      - libxslt-$Env:CI_COMMIT_SHORT_SHA-$Env:MSYSTEM-$Env:SUFFIX.7z
+      - libxslt-$Env:CI_COMMIT_SHORT_SHA-$Env:SUFFIX.tar.gz
     expire_in: 1 day
 
 cmake:mingw:w64-i686:shared:
@@ -162,8 +132,7 @@
   variables:
     BUILD_SHARED_LIBS: "ON"
     MSYSTEM: MINGW32
-    MINGW_PATH: mingw32
-    SUFFIX: shared
+    SUFFIX: mingw-w64-i686-shared
 
 cmake:mingw:w64-i686:static:
   extends: .cmake:mingw
@@ -172,11 +141,10 @@
   variables:
     BUILD_SHARED_LIBS: "OFF"
     MSYSTEM: MINGW32
-    MINGW_PATH: mingw32
-    SUFFIX: static
+    SUFFIX: mingw-w64-i686-static
 
 cmake:mingw:w64-x86_64:shared:
   extends: .cmake:mingw
   variables:
     BUILD_SHARED_LIBS: "ON"
     MSYSTEM: MINGW64
@@ -177,11 +145,10 @@
 
 cmake:mingw:w64-x86_64:shared:
   extends: .cmake:mingw
   variables:
     BUILD_SHARED_LIBS: "ON"
     MSYSTEM: MINGW64
-    MINGW_PATH: mingw64
-    SUFFIX: shared
+    SUFFIX: mingw-w64-x86_64-shared
 
 cmake:mingw:w64-x86_64:static:
   extends: .cmake:mingw
@@ -190,8 +157,7 @@
   variables:
     BUILD_SHARED_LIBS: "OFF"
     MSYSTEM: MINGW64
-    MINGW_PATH: mingw64
-    SUFFIX: static
+    SUFFIX: mingw-w64-x86_64-static
 
 .cmake:msvc:
   tags:
@@ -205,7 +171,10 @@
         Expand-Archive cmake-$Env:CMAKE_VERSION-win64-x64.zip -DestinationPath .
       }
     - $Env:Path="$Env:CI_PROJECT_DIR\cmake-$Env:CMAKE_VERSION-win64-x64\bin;$Env:Path"
-    - .gitlab-ci/Install-7-Zip
+    - if (-not (Test-Path 7za.exe)) {
+        Invoke-WebRequest -Uri https://www.7-zip.org/a/7z1900-extra.7z -OutFile 7z1900-extra.7z ;
+        cmake -E tar xf 7z1900-extra.7z 7za.exe
+      }
     - git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git libxml2-source
     - cmake -DBUILD_SHARED_LIBS="$Env:BUILD_SHARED_LIBS" -DCMAKE_INSTALL_PREFIX=libxml2-install -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_ZLIB=OFF -S libxml2-source -B libxml2-build
     - cmake --build libxml2-build --config Debug --target install
@@ -227,6 +196,7 @@
     key: "msvc"
     paths:
       - cmake-$Env:CMAKE_VERSION-win64-x64/
+      - 7za.exe
   artifacts:
     paths:
       - libxslt-$Env:CI_COMMIT_SHORT_SHA-$Env:CMAKE_GENERATOR_TOOLSET-$Env:CMAKE_GENERATOR_PLATFORM-$Env:SUFFIX.7z
diff --git a/.gitlab-ci/Install-7-Zip.ps1 b/.gitlab-ci/Install-7-Zip.ps1
deleted file mode 100644
index ee4f953bd1a10ee1d9ecbab7391e728c7c1ef768_LmdpdGxhYi1jaS9JbnN0YWxsLTctWmlwLnBzMQ==..0000000000000000000000000000000000000000
--- a/.gitlab-ci/Install-7-Zip.ps1
+++ /dev/null
@@ -1,4 +0,0 @@
-if (-not (Get-Command "7za.exe" -ErrorAction SilentlyContinue)) {
-    Invoke-WebRequest -Uri https://www.7-zip.org/a/7z2201.msi -OutFile 7z2201.msi
-    msiexec /i $Installer7Zip /qb
-}
diff --git a/.gitlab-ci/test_cmake.sh b/.gitlab-ci/test_cmake.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ed739e3d0bd0fb1df926ef46cccf0b7a333f019e_LmdpdGxhYi1jaS90ZXN0X2NtYWtlLnNo
--- /dev/null
+++ b/.gitlab-ci/test_cmake.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+set -e
+
+git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git libxml2-source
+cmake "$@" \
+    -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS \
+    -DCMAKE_INSTALL_PREFIX=libxml2-install \
+    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+    -DLIBXML2_WITH_TESTS=OFF \
+    -S libxml2-source -B libxml2-build
+cmake --build libxml2-build --target install
+export CMAKE_PREFIX_PATH="$CI_PROJECT_DIR/libxml2-install;$CMAKE_PREFIX_PATH"
+export PATH="$CI_PROJECT_DIR/libxml2-install/bin:$PATH"
+export LD_LIBRARY_PATH="$CI_PROJECT_DIR/libxml2-install/lib:$LD_LIBRARY_PATH"
+
+cmake "$@" \
+    -DBUILD_SHARED_LIBS="$BUILD_SHARED_LIBS" \
+    -DCMAKE_INSTALL_PREFIX=libxslt-install \
+    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+    -DCMAKE_C_FLAGS='-Werror' \
+    -S . -B libxslt-build
+cmake --build libxslt-build --target install
+mkdir -p libxslt-install/share/libxslt
+cp Copyright libxslt-install/share/libxslt
+
+(cd libxslt-install &&
+    tar -czf ../libxslt-$CI_COMMIT_SHORT_SHA-$SUFFIX.tar.gz *)