pipeline { agent any options { timestamps() buildDiscarder(logRotator(numToKeepStr: '10')) } stages { stage('Build Docker Image') { steps { sh ''' docker build \ -t cpp-mingw-vcpkg:latest \ -f docker/cpp-mingw-vcpkg/Dockerfile . ''' } } stage('Build Linux') { steps { sh ''' docker run --rm \ -v "$PWD:/workspace" \ -w /workspace \ cpp-mingw-vcpkg:latest \ bash -c " rm -rf build/linux && cmake -S . -B build/linux -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=/opt/vcpkg/scripts/buildsystems/vcpkg.cmake && cmake --build build/linux " ''' } } stage('Build Windows MinGW') { steps { sh ''' docker run --rm \ -v "$PWD:/workspace" \ -w /workspace \ cpp-mingw-vcpkg:latest \ bash -c " rm -rf build/windows && cmake -S . -B build/windows -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=/opt/vcpkg/scripts/buildsystems/vcpkg.cmake \ -DVCPKG_TARGET_TRIPLET=x64-mingw-static \ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \ -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ && cmake --build build/windows " ''' } } stage('Package') { steps { sh ''' mkdir -p artifacts tar -czf artifacts/linux-build.tar.gz -C build linux zip -r artifacts/windows-build.zip build/windows ''' } } stage('Archive') { steps { archiveArtifacts artifacts: 'artifacts/*', fingerprint: true } } } }