diff --git a/.gitlab-ci-files/windows-desktop.yml b/.gitlab-ci-files/windows-desktop.yml index 918e4cf93..a7db77376 100644 --- a/.gitlab-ci-files/windows-desktop.yml +++ b/.gitlab-ci-files/windows-desktop.yml @@ -9,11 +9,14 @@ - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null - if: $CI_PIPELINE_SOURCE == "schedule" && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null variables: - CMAKE_OPTIONS: -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON + CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON LINPHONESDK_PLATFORM: Desktop OUTPUT_ZIP_FOLDER: win64 MINGW_TYPE: mingw64 - CMAKE_ARCHITECTURE : -A x64 + BUILD_TARGET: install + CMAKE_C_COMPILER : cl.exe + CMAKE_CXX_COMPILER : cl.exe + CMAKE_RC_COMPILER : rc.exe script: - if ($MAKE_RELEASE_FILE_URL) { } else { $RELEASE_FILE = "" } @@ -64,7 +67,7 @@ # /!\ By design, we must keep $NINJA_OPTIMIZATION as the last option of the line, because it contains an output redirect - echo $LastExitCode - Invoke-Expression "cmake --build . --target $BUILD_TARGET --config $CI_BUILD_TYPE $PARALLEL_OPTIONS $NINJA_OPTIMIZATION" - - if ($EXITS_ON_ERROR_MSVC) { Invoke-Expression "$EXITS_ON_ERROR_MSVC" } else { Write-Output "EXITS_ON_ERROR_MSVC is null" } + - if ($EXITS_ON_ERROR_MSBUILD) { Invoke-Expression "$EXITS_ON_ERROR_MSBUILD" } else { Write-Output "EXITS_ON_ERROR_MSBUILD is null" } - if ($DISPLAY_NINJA_LOG) { Invoke-Expression "$DISPLAY_NINJA_LOG" } else { Write-Output "DISPLAY_NINJA_LOG is null" } - if ($SEARCH_NINJA_ERROR) { Invoke-Expression "$SEARCH_NINJA_ERROR" } else { Write-Output "SEARCH_NINJA_ERROR is null" } - if ($DISPLAY_SEARCH_STATUS) { Invoke-Expression "$DISPLAY_SEARCH_STATUS" } else { Write-Output "DISPLAY_SEARCH_STATUS is null" } @@ -84,21 +87,34 @@ when: always expire_in: 1 week + .windows-vs2022: extends: .windows-vs tags: [ "windows-powershell-vs-17-2022" ] -.windows-msvc: +.windows-msbuild-variables: variables: - CMAKE_OPTIONS: -DENABLE_UNIT_TESTS=ON -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON - LINPHONESDK_PLATFORM: Desktop - BUILD_TARGET: install PARALLEL_OPTIONS: "-- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false" - EXITS_ON_ERROR_MSVC: 'if (-not ($$LastExitCode -eq 0)) {throw "Error: Build failed"}' + EXITS_ON_ERROR_MSBUILD: 'if (-not ($$LastExitCode -eq 0)) {throw "Error: Build failed"}' + CMAKE_ARCHITECTURE : -A x64 +.windows-ninja-variables: + variables: + CLI_OUTPUT_INFO_NINJA: Write-Output -NoEnumerate "Building with Ninja. See ninja_buildlog.txt to get details before completing the build." + NINJA_BUILD_PARALLEL_LEVEL: -DCMAKE_BUILD_PARALLEL_LEVEL=$WINDOWS_PARALLEL_JOBS + PARALLEL_OPTIONS: "--parallel $WINDOWS_PARALLEL_JOBS" + NINJA_OPTIMIZATION: "| find /V \"inclusion du fichier\" > ninja_buildlog.txt; cmd /c \"exit /b 0\"" + NINJA_EXPLICIT_COMPILER_SET: -DCMAKE_C_COMPILER="$CMAKE_C_COMPILER" -DCMAKE_CXX_COMPILER="$CMAKE_CXX_COMPILER" -DCMAKE_RC_COMPILER="$CMAKE_RC_COMPILER" + DISPLAY_NINJA_LOG: Get-Content ninja_buildlog.txt + SEARCH_NINJA_ERROR: 'Write-Output "`$$isFound = (Select-String -Pattern `"build stopped: subcommand failed`" -SimpleMatch -Quiet -Path ninja_buildlog.txt)" > invertSearch.ps1' + DISPLAY_SEARCH_STATUS: Write-Output 'echo $$isFound' >> invertSearch.ps1 + SET_EXIT_CODE_BASED_ON_SEARCH_STATUS: Write-Output -NoEnumerate "If (`$(echo `$$isFound) -eq `"True`") {throw `"There was an error in the build`"} else {exit 0}" >> invertSearch.ps1 + SHOW_SEARCH_STATUS_SCRIPT: Get-Content invertSearch.ps1 + LAUNCH_SEARCH_STATUS_SCRIPT: .\invertSearch.ps1 + CMAKE_GENERATOR: "Ninja" -.windows-msvc-scheduled: - extends: .windows-msvc +.windows-msbuild-scheduled: + extends: .windows-msbuild-variables rules: - if: $NIGHTLY_MASTER - if: $NIGHTLY_RELEASE @@ -111,34 +127,23 @@ # On each push ###################################################### -.msvc-win64-windows: +.win64-mr-rules: rules: - if: ($CI_PIPELINE_SOURCE == "merge_request_event") && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null - variables: - CMAKE_C_COMPILER : cl.exe - CMAKE_CXX_COMPILER : cl.exe - CMAKE_RC_COMPILER : rc.exe - extends: .windows-msvc -vs2022-msvc-win64-windows: +win64-msbuild-vs2022-windows: rules: - !reference [.rules-merge-request-manual, rules] - variables: - CMAKE_GENERATOR: "Visual Studio 17 2022" extends: - .windows-vs2022 - - .msvc-win64-windows + - .windows-msbuild-variables + - .win64-mr-rules -ninja-msvc-win64-windows: - rules: - - !reference [.rules-merge-request-manual, rules] - variables: - CMAKE_GENERATOR: "Ninja" - CMAKE_ARCHITECTURE: "" - PARALLEL_OPTIONS: "" +win64-ninja-vs2022-windows: extends: - .windows-vs2022 - - .msvc-win64-windows + - .windows-ninja-variables + - .win64-mr-rules ###################################################### # NIGHTLY @@ -153,9 +158,9 @@ ninja-msvc-win64-windows: - if: $DEPLOY_PLUGINS - if: $DEPLOY_RUN_WINDOWS -ninja-win64-scheduled-windows: +win64-ninja-vs2022-scheduled-windows: extends: - - ninja-msvc-win64-windows + - win64-ninja-vs2022-windows - .vs-scheduled-windows ################################################# @@ -177,16 +182,16 @@ ninja-win64-scheduled-windows: CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DLINPHONE_WINDOWS_SIGN_TOOL=$WINDOWS_SIGN_TOOL -DLINPHONE_WINDOWS_SIGN_TIMESTAMP_URL=$WINDOWS_SIGN_TIMESTAMP_URL -DLINPHONE_WINDOWS_SIGN_HASH=$WINDOWS_SIGN_HASH -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=ON RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER -ninja-win64-package: +win64-ninja-vs2022-package-windows: variables: CMAKE_GENERATOR: "Ninja" CMAKE_ARCHITECTURE: "" PARALLEL_OPTIONS: "" extends: - - .windows-msvc - - .vs-win64-package - .windows-vs2022 - + - .windows-ninja-variables + - .vs-win64-package + ################################################# # DEPLOY ################################################# @@ -203,11 +208,11 @@ ninja-win64-package: - if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/RELEASE ${DEPLOY_SERVER}:${UPLOAD_ROOT_INTERNAL_PATH}/${WINDOWS_PLATFORM}/ } # - if ($MAKE_RELEASE_FILE_URL) { scp -pr build-desktop/OUTPUT/RELEASE ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ } -ninja-win64-upload: +win64-ninja-vs2022-upload: extends: - .win64-upload needs: - - ninja-win64-package + - win64-ninja-vs2022-package-windows .win64-plugins-upload: stage: deploy @@ -217,7 +222,7 @@ ninja-win64-upload: script: - scp "build-desktop/OUTPUT/plugins/app/*.dll" "%DEPLOY_SERVER%:%WINDOWS_UPLOAD_INTERNAL_DIRECTORY%/plugins" -ninja-win64-plugins-upload: +win64-ninja-vs2022-plugins-upload: extends: .win64-plugins-upload needs: - - ninja-win64-scheduled-windows + - win64-ninja-vs2022-scheduled-windows