Skip to content

Windows Pipeline

Mirror Bot edited this page Aug 31, 2026 · 4 revisions

Windows Build and Other Things in the openCFS CI/CD Pipeline

GitLab CI/CD

  • modular system

  • runners process jobs in a pipeline

  • Pipeline is defined in gitlab-ci YML file

  • ensures CFS builds with all relevant compiler combinations

  • runs our Testsuite for a range of build configurations

  • creates releases for download

Runners

  • runners can be any machine with gitlab runner installed and registered with the GitLab instance
  • handle the execution of jobs
  • jobs can be executed by executors:
    • shell
    • docker
    • VirtualBox
    • ...
  • exist as GitLab SaaS, with free pipeline minutes for projects within the GitLab open-source program
  • Linux runners exist in several sizes and performance levels
  • Windows, MacOS and GPU runners are in beta state

GitLab SaaS Windows runners

  • based on a virtual machine image (2 vCPU, 7.5GB RAM, 75GB disk) with predefined software installed
    • Visual Studio 2019
    • CMake
    • wget, curl, 7zip, ...
    • PowerShell
  • Other CFS-build-dependencies must be installed for a CFS build job
    • git (for patch)
    • Intel MKL and Fortran compiler
  • Installation templates of Intel oneAPI tools found via googling "Intel MKL in GitLab CI": https://gitlab.com/mmzakhar/oneapi-ci/
    • some tedious experimentation with variable expansion in the various shells
    • scripted download of oneAPI HPC-Kit (for Fortran Compiler) and Base-kit (for MKL): see
    • scripted install into a directly that is cached on gitlab runners: .gitlab/ci/install_windows.bat
    • defined in .gitlab/ci/windows.yml
  • Build of openCFS must be done via CMD.exe script because VS-build-tools and Intel-setvars scripts are not PowerShell compatible
  • Templates defined in Windows YML, running jobs in main YML
    • cfsdeps:MSVC2019-Ifort2021 builds cfsdeps (only on changes)
    • windows:MSVC2019-Ifort2021 builds CFS binary
    • stable_ser:MSVC2019-Ifort2021:windows ... run the testsuite (stable|unstalbe|broken and ser|par)
  • builds of the master branch are automatically deployed to package registry
  • Current build based on MSVC2019 does not use openMP (within CFS)
  • SaaS runners will be upgrade to Windows 2022 with GitLab 17.0

Linux Runners

  • We use a combination of runners: GitLab SaaS and one machine at TU Wien
  • based on docker executor
  • docker image defines the build environment: system, compiler, ...
  • images defined in Build Environment and published to Docker Hub

Recent pipeline novelties

  1. go to page with job output
  2. click on the link on the right
  • musl libc based build for Linux binary
    • GCC13 on Alpine Linux
    • fully static binary (no dependency on Glibc)
    • should work on any Linux system

Open Issues

  • some builds & tests might be obsolete: What systems are in use?
  • We do complete rebuilds on a large number of configurations: Is it worth the effort?
  • Make builds faster and more efficient: ccache in pipeline!
  • Make pipelines public!

Clone this wiki locally