pipeline { agent { label 'linux' } stages { //////////////////////////////////////////////////// stage('Windows mingw') { agent { label 'windows && mingw && c++20' } environment { PATH="C:\\msys64\\ucrt64\\bin;C:\\msys64\\usr\\bin;${env.PATH}" } steps { echo 'Cleaning workspace ...' bat 'git clean -d -x -f' echo 'Building (mingw) ...' bat 'sh -c "CXX=g++ AR=ar ./bootstrap.sh"' echo 'Testing (mingw) ...' bat 'ctor check' echo 'Testing suite (mingw) ...' bat 'sh -c "(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 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 && ctor.exe' echo 'Testing (msvc) ...' bat 'ctor.exe check' echo 'Testing suite (msvc) ...' bat '(cd test/suite; test.bat)' } post { always { xunit(thresholds: [ skipped(failureThreshold: '0'), failed(failureThreshold: '0') ], tools: [ CppUnit(pattern: 'build/test/*.xml') ]) } } } //////////////////////////////////////////////////// } }