diff --git a/CMakeLists.txt b/CMakeLists.txt index e69de29..c40128a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.20) + +project(Testing LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +add_executable(test_app main.cpp) \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile index fdc281c..e208826 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,32 +7,51 @@ pipeline { } stages { - stage('Build Linux') { + stage('Build Docker Image') { steps { sh ''' - mkdir -p build/linux - g++ main.cpp -o build/linux/test_app + docker build \ + -t cpp-mingw-vcpkg:latest \ + -f docker/cpp-mingw-vcpkg/Dockerfile . ''' } } - stage('Build Windows') { - steps { - sh ''' - mkdir -p build/windows - x86_64-w64-mingw32-g++ main.cpp \ - -static \ - -static-libgcc \ - -static-libstdc++ \ - -o build/windows/test_app.exe - ''' - } -} - - stage('Run Linux') { + stage('Build Linux') { steps { sh ''' - ./build/linux/test_app + 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 + " ''' } } @@ -40,16 +59,16 @@ pipeline { stage('Package') { steps { sh ''' - cd build - tar -czf linux-build.tar.gz linux - zip -r windows-build.zip windows + 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: 'build/linux-build.tar.gz, build/windows-build.zip', fingerprint: true + archiveArtifacts artifacts: 'artifacts/*', fingerprint: true } } } diff --git a/vcpkg.json b/vcpkg.json new file mode 100644 index 0000000..e55f310 --- /dev/null +++ b/vcpkg.json @@ -0,0 +1,5 @@ + +{ + "dependencies": [ + ] +} \ No newline at end of file