Repository navigation
Windows Pipeline
Mirror Bot edited this page Aug 31, 2026
·
4 revisions
-
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 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
- 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
- build steps in
script:section of .windows-shared-build - set environment variables vi
variablesand execute windows-shared-runner_build.bat
- build steps in
- Templates defined in Windows YML, running jobs in main YML
-
cfsdeps:MSVC2019-Ifort2021builds cfsdeps (only on changes) -
windows:MSVC2019-Ifort2021builds CFS binary -
stable_ser:MSVC2019-Ifort2021:windows... run the testsuite (stable|unstalbe|brokenandser|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
- 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
-
Different pipelines for different cases
-
test: runs all tests that need to pass (example: https://gitlab.com/openCFS/cfs/-/pipelines/1182123585)
- pushes to open merge requests (not in
Draft:mode) - pushes to branches called
test*or*test - triggerd via the Web-UI
- pushes to open merge requests (not in
-
manual: creates a test pipeline but sets all jobs to manual (example: https://gitlab.com/openCFS/cfs/-/pipelines/1182121948)
- pushed to
Draft:merge requests - triggered via Web-UI with variable
CFS_PIPELINE_TYPE == "manual"
- pushed to
-
nightly: runs also
brokentests (daily) andplatformstage (weekly) (example: https://gitlab.com/openCFS/cfs/-/pipelines/1184274293)- triggerd via GitLab schedule, published to CDash
- allows to monitor broken tests
- platform builds check build instructions
-
release: create assets for download (example: https://gitlab.com/openCFS/cfs/-/pipelines/1181703798)
- Windows / Linux build
- doxygen docu
- XML schema
-
test: runs all tests that need to pass (example: https://gitlab.com/openCFS/cfs/-/pipelines/1182123585)
-
Pipeline name shows type & source: https://gitlab.com/openCFS/cfs/-/pipelines
-
Pipelines show failed test details:
- test report: https://gitlab.com/openCFS/cfs/-/pipelines/1184274293/test_report
- click on one test: https://gitlab.com/openCFS/cfs/-/pipelines/1184274293/test_report?job_name=no-slow_ser%3Agcc7max-debug%3Alinux
- click on
View details
-
CDash-Links on job page: https://gitlab.com/openCFS/cfs/-/jobs/6219082998
- go to page with job output
- 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
- 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!