mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-04-17 20:08:28 +00:00
fix initials function fix translation and text weight warnings fix meeting detail layout fix crash when adding invalid participant to conference cancel button on conference update loading popup
280 lines
11 KiB
YAML
280 lines
11 KiB
YAML
#################################################
|
|
# BUILD
|
|
#################################################
|
|
|
|
.windows-vs:
|
|
extends: .prepare
|
|
stage: build
|
|
rules:
|
|
- 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: -DENABLE_UNIT_TESTS=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF
|
|
LINPHONESDK_PLATFORM: Desktop
|
|
OUTPUT_ZIP_FOLDER: win64
|
|
MINGW_TYPE: mingw64
|
|
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 = "" }
|
|
- echo $env:Path
|
|
- If ( Test-Path -Path "build-desktop" ) {Remove-Item -recurse -force -path "build-desktop" }
|
|
- mkdir build-desktop
|
|
- cd build-desktop
|
|
- sccache --show-stats
|
|
- sccache --zero-stats
|
|
- Write-Output $CMAKE_ARCHITECTURE
|
|
- Write-Output $SCHEDULE_CMAKE_OPTIONS
|
|
- Write-Output $MAKEFILE_JOBS
|
|
- Write-Output $CMAKE_C_COMPILER
|
|
- Write-Output $CMAKE_CXX_COMPILER
|
|
- Write-Output $CMAKE_RC_COMPILER
|
|
- Write-Output $DEFAULT_CMAKE_OPTIONS
|
|
- Write-Output $CMAKE_OPTIONS
|
|
- Write-Output $CMAKE_ARCHITECTURE
|
|
- Write-Output $SCHEDULE_CMAKE_OPTIONS
|
|
- Write-Output $CMAKE_GENERATOR
|
|
- Write-Output $LINPHONESDK_PLATFORM
|
|
- Write-Output $MINGW_TYPE
|
|
- Write-Output $CLI_OUTPUT_INFO_NINJA
|
|
- Write-Output $Write-Output
|
|
- Write-Output $NINJA_BUILD_PARALLEL_LEVEL
|
|
- Write-Output $PARALLEL_OPTIONS
|
|
- Write-Output $NINJA_OPTIMIZATION
|
|
- Write-Output $NINJA_EXPLICIT_COMPILER_SET
|
|
- Write-Output $DISPLAY_NINJA_LOG
|
|
- Write-Output $SEARCH_NINJA_ERROR
|
|
- Write-Output $DISPLAY_SEARCH_STATUS
|
|
- Write-Output $SET_EXIT_CODE_BASED_ON_SEARCH_STATUS
|
|
- Write-Output $SHOW_SEARCH_STATUS_SCRIPT
|
|
- Write-Output $LAUNCH_SEARCH_STATUS_SCRIPT
|
|
- Write-Output $MAKE_RELEASE_FILE_URL
|
|
- Write-Output $RELEASE_FILE
|
|
#We are forced to use Invoke-Expression to explain to powershell that we don't want it to touch to spaces in arguments
|
|
#If we don't use it, '-A Win32' will be interpreted as "-A ' Win32'" thus making the build fail
|
|
- echo $LastExitCode
|
|
- Invoke-Expression "& cmake .. -G '$CMAKE_GENERATOR' -DLINPHONESDK_PLATFORM=$LINPHONESDK_PLATFORM -DENABLE_CSHARP_WRAPPER=YES -DCMAKE_BUILD_TYPE=$CI_BUILD_TYPE -DLINPHONEAPP_APPLICATION_NAME='$APPLICATION_NAME' -DLINPHONEAPP_EXECUTABLE_NAME='$EXECUTABLE_NAME' $NINJA_BUILD_PARALLEL_LEVEL $NINJA_EXPLICIT_COMPILER_SET $DEFAULT_CMAKE_OPTIONS $DEFAULT_WINDOWS_CMAKE_OPTIONS $CMAKE_OPTIONS $CMAKE_ARCHITECTURE $SCHEDULE_CMAKE_OPTIONS $RELEASE_FILE"
|
|
- echo $LastExitCode
|
|
- 'if (-not ($LastExitCode -eq 0)) {throw "Error: Configure failed"}'
|
|
- $CLI_OUTPUT_INFO_NINJA
|
|
#Warning : Ninja doesn't return an error code on Linker error.
|
|
#Store outputs in a file log
|
|
#Only in powershell 7 (Gitlab 14+)
|
|
# - cmake --build . --target install --config RelWithDebInfo --parallel $MAKEFILE_JOBS | Select-String -NotMatch -Raw -Pattern "inclusion du fichier"
|
|
- Write-Output $PARALLEL_OPTIONS
|
|
- Write-Output $NINJA_OPTIMIZATION
|
|
# /!\ 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_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" }
|
|
- if ($SET_EXIT_CODE_BASED_ON_SEARCH_STATUS) { Invoke-Expression "$SET_EXIT_CODE_BASED_ON_SEARCH_STATUS" } else { Write-Output "SET_EXIT_CODE_BASED_ON_SEARCH_STATUS is null" }
|
|
- if ($SHOW_SEARCH_STATUS_SCRIPT) { Invoke-Expression "$SHOW_SEARCH_STATUS_SCRIPT" } else { Write-Output "SHOW_SEARCH_STATUS_SCRIPT is null" }
|
|
- if ($LAUNCH_SEARCH_STATUS_SCRIPT) { Invoke-Expression "$LAUNCH_SEARCH_STATUS_SCRIPT" -ErrorAction stop } else { Write-Output "LAUNCH_SEARCH_STATUS_SCRIPT is null" }
|
|
- sccache --show-stats
|
|
|
|
################
|
|
artifacts:
|
|
paths:
|
|
- build-desktop\ninja_buildlog.txt
|
|
- build-desktop\ninja_buildlog.txt
|
|
- build-desktop\invertSearch.ps1
|
|
- build-desktop\OUTPUT\*
|
|
- build-desktop\external\linphone-sdk\openh264-prefix\src\openh264-stamp\*
|
|
when: always
|
|
expire_in: 1 week
|
|
|
|
|
|
.windows-vs2022:
|
|
extends: .windows-vs
|
|
tags: [ "windows-powershell-vs-17-2022-flat" ]
|
|
|
|
.windows-codesigning:
|
|
extends: .prepare
|
|
tags: [ "windows-powershell-vs-17-2022-apps-flat" ]
|
|
|
|
.windows-msbuild-variables:
|
|
variables:
|
|
PARALLEL_OPTIONS: "-- /maxcpucount /nodeReuse:true /p:TrackFileAccess=false"
|
|
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-msbuild-scheduled:
|
|
extends: .windows-msbuild-variables
|
|
rules:
|
|
- if: $NIGHTLY_MASTER
|
|
- if: $NIGHTLY_RELEASE
|
|
- if: $ENABLE_WINDOWS_TESTS
|
|
before_script:
|
|
#cache disabled on scheduled builds since we dot not need the fastest build
|
|
- Set-Variable -Name "CLCACHE_DISABLE" -Value 1
|
|
|
|
######################################################
|
|
# On each push
|
|
######################################################
|
|
|
|
.win64-mr-rules:
|
|
rules:
|
|
- if: ($CI_PIPELINE_SOURCE == "merge_request_event") && $DOCKER_UPDATE == null && $SKIP_WINDOWS == null
|
|
|
|
win64-msbuild-vs2022-windows:
|
|
rules:
|
|
- !reference [.rules-merge-request-manual, rules]
|
|
extends:
|
|
- .windows-vs2022
|
|
- .windows-msbuild-variables
|
|
- .win64-mr-rules
|
|
|
|
win64-ninja-vs2022-windows:
|
|
extends:
|
|
- .windows-vs2022
|
|
- .windows-ninja-variables
|
|
- .win64-mr-rules
|
|
|
|
######################################################
|
|
# NIGHTLY
|
|
######################################################
|
|
|
|
## ON SCHEDULE ##
|
|
|
|
.vs-scheduled-windows:
|
|
rules:
|
|
- !reference [.rules-merge-request-manual, rules]
|
|
- if: $NIGHTLY_MASTER
|
|
- if: $DEPLOY_PLUGINS
|
|
- if: $DEPLOY_RUN_WINDOWS
|
|
|
|
win64-ninja-vs2022-scheduled-windows:
|
|
extends:
|
|
- win64-ninja-vs2022-windows
|
|
- .vs-scheduled-windows
|
|
|
|
#################################################
|
|
# PACKAGE
|
|
#################################################
|
|
|
|
#Remove . when packaging process is ready to use
|
|
|
|
.vs-win64-package:
|
|
stage: package
|
|
needs: []
|
|
rules:
|
|
- !reference [.rules-merge-request-manual, rules]
|
|
- if: $NIGHTLY_RELEASE
|
|
- if: $PACKAGE_WINDOWS
|
|
variables:
|
|
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_BUGSPLAT_SYMBOLS_UPLOAD=ON -DBUGSPLAT_CLIENT_ID=$BUGSPLAT_CLIENT_ID -DBUGSPLAT_CLIENT_SECRET=$BUGSPLAT_CLIENT_SECRET -DBUGSPLAT_DATABASE=$BUGSPLAT_DATABASE
|
|
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER
|
|
|
|
# .vs-win64-package-cr:
|
|
# stage: package
|
|
# needs: []
|
|
# rules:
|
|
# - if: $NIGHTLY_MASTER
|
|
# - if: $DEPLOY_WINDOWS
|
|
# variables:
|
|
# CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_BUGSPLAT_SYMBOLS_UPLOAD=ON -DBUGSPLAT_CLIENT_ID=$BUGSPLAT_CLIENT_ID -DBUGSPLAT_CLIENT_SECRET=$BUGSPLAT_CLIENT_SECRET -DBUGSPLAT_DATABASE=$BUGSPLAT_DATABASE
|
|
# RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$WINDOWS_PLATFORM/$APP_FOLDER
|
|
|
|
win64-ninja-vs2022-package-windows:
|
|
variables:
|
|
CMAKE_GENERATOR: "Ninja"
|
|
CMAKE_ARCHITECTURE: ""
|
|
PARALLEL_OPTIONS: ""
|
|
extends:
|
|
- .windows-vs2022
|
|
- .windows-ninja-variables
|
|
- .vs-win64-package
|
|
|
|
#Packaging for deployment (Upload symbols at the same time of the packaging)
|
|
# win64-ninja-vs2022-package-cr-windows:
|
|
# variables:
|
|
# CMAKE_GENERATOR: "Ninja"
|
|
# CMAKE_ARCHITECTURE: ""
|
|
# PARALLEL_OPTIONS: ""
|
|
# extends:
|
|
# - .windows-vs2022
|
|
# - .windows-ninja-variables
|
|
# - .vs-win64-package-cr
|
|
|
|
|
|
#################################################
|
|
# SIGNING
|
|
#################################################
|
|
|
|
win64-codesigning:
|
|
stage: signing
|
|
allow_failure: true
|
|
extends:
|
|
- .windows-codesigning
|
|
needs:
|
|
- win64-ninja-vs2022-package-windows
|
|
variables:
|
|
MINGW_TYPE: mingw64
|
|
rules:
|
|
- !reference [.rules-merge-request-manual, rules]
|
|
- if: $PACKAGE_WINDOWS
|
|
script:
|
|
- cd build-desktop/OUTPUT/Packages/
|
|
- Invoke-Expression "& ${WINDOWS_SIGN_TOOL} sign /fd SHA256 /t ${WINDOWS_SIGN_TIMESTAMP_URL} /sha1 ${WINDOWS_SIGN_HASH} *.exe"
|
|
- 'if (-not ($LastExitCode -eq 0)) {throw "Error: Signature failed"}'
|
|
artifacts:
|
|
paths:
|
|
- build-desktop\OUTPUT\Packages\*
|
|
when: always
|
|
expire_in: 1 week
|
|
|
|
#################################################
|
|
# DEPLOY
|
|
#################################################
|
|
|
|
.win64-upload:
|
|
stage: deploy
|
|
tags: [ "windows-powershell-flat" ]
|
|
rules:
|
|
- if: $NIGHTLY_MASTER
|
|
- if: $DEPLOY_WINDOWS
|
|
|
|
script:
|
|
- rsync --perms --chmod=Fu=rw,Fg=r,Fo=r build-desktop/OUTPUT/Packages/*.exe ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/${APP_FOLDER}
|
|
- if ($MAKE_RELEASE_FILE_URL) { rsync --perms --chmod=Fu=rw,Fg=r,Fo=r build-desktop/OUTPUT/Packages/RELEASE ${DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
|
|
- if ($MAKE_RELEASE_FILE_URL) { rsync --perms --chmod=Fu=rw,Fg=r,Fo=r build-desktop/OUTPUT/Packages/RELEASE ${MAIN_DEPLOY_SERVER}:${UPLOAD_ROOT_PATH}/${WINDOWS_PLATFORM}/ }
|
|
|
|
win64-ninja-vs2022-upload:
|
|
extends:
|
|
- .win64-upload
|
|
needs:
|
|
- win64-codesigning
|
|
|
|
.win64-plugins-upload:
|
|
stage: deploy
|
|
tags: [ "windows-flat" ]
|
|
rules:
|
|
- if: $DEPLOY_PLUGINS
|
|
script:
|
|
- scp "build-desktop/OUTPUT/plugins/app/*.dll" "%MAIN_DEPLOY_SERVER%:%WINDOWS_UPLOAD_DIRECTORY%/plugins"
|
|
|
|
win64-ninja-vs2022-plugins-upload:
|
|
extends: .win64-plugins-upload
|
|
needs:
|
|
- win64-ninja-vs2022-scheduled-windows
|