pipeline { agent any stages { //////////////////////////////////////////////////// stage('Linux gcc') { agent { label 'linux && gcc && c++20' } steps { echo 'Cleaning workspace ...' sh 'git clean -d -x -f' echo 'Building (gcc) ...' sh 'CXX=g++ ./bootstrap.sh' echo 'Testing (gcc) ...' sh './ctor check' echo 'Testing suite (gcc) ...' sh '(cd test/suite; CTORDIR=../../build CXX=g++ ./test.sh)' } post { always { xunit(thresholds: [ skipped(failureThreshold: '0'), failed(failureThreshold: '0') ], tools: [ CppUnit(pattern: 'build/test/*.xml') ]) } } } //////////////////////////////////////////////////// stage('Linux clang') { agent { label 'linux && clang && c++20' } steps { echo 'Cleaning workspace ...' sh 'git clean -d -x -f' echo 'Building (clang) ...' sh 'CXX=clang++ ./bootstrap.sh' echo 'Testing (clang) ...' sh './ctor check' echo 'Testing suite (clang) ...' sh '(cd test/suite; CTORDIR=../../build CXX=clang++ ./test.sh)' } post { always { xunit(thresholds: [ skipped(failureThreshold: '0'), failed(failureThreshold: '0') ], tools: [ CppUnit(pattern: 'build/test/*.xml') ]) } } } //////////////////////////////////////////////////// stage('Windows msvc') { agent { label 'win10 && msvc' } environment { VSDEVCMD="C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\Common7\\Tools\\VsDevCmd.bat" } steps { echo 'Cleaning workspace ...' bat 'git clean -d -x -f' dir ('build/test') { writeFile file:'dummy', text:'' } bat '"%VSDEVCMD%" && bootstrap.bat && snot.exe' echo 'Testing (msvc) ...' bat 'snot.exe check' } post { always { xunit(thresholds: [ skipped(failureThreshold: '0'), failed(failureThreshold: '0') ], tools: [ CppUnit(pattern: 'build/test/*.xml') ]) } } } //////////////////////////////////////////////////// } }