linphone-desktop/.gitlab-ci-files/job-macosx-desktop.yml
2025-04-29 17:00:44 +02:00

176 lines
5.6 KiB
YAML

#Build template to use in other job scripts without having to copy same code
#format = .className: &referenceName | scripts
#Use = scripts: -*referenceName
#Example : see .job-macosx-desktop for the default script and job-macosx-makefile-package for override
.build_all_script: &build_all_script |
ccache -s
export Qt5_DIR=~/Qt/$QT5_MAC_VER/lib/cmake/Qt5
echo $Qt5_DIR
export PATH=~/Qt/$QT5_MAC_VER/bin:$PATH
echo $PATH
if [ -d "build" ]; then rm -rf build; fi;
mkdir -p build/OUTPUT
cd build
#SDK Building
echo $CI_BUILD_TYPE
echo $CMAKE_GENERATOR
echo $DEFAULT_MACOS_CMAKE_OPTIONS
echo $CMAKE_OPTIONS
echo $ADDITIONAL_BUILD_OPTIONS
cmake .. -G "$CMAKE_GENERATOR" -DCMAKE_OSX_DEPLOYMENT_TARGET=12.3 -DCMAKE_BUILD_TYPE=$CI_BUILD_TYPE $DEFAULT_MACOS_CMAKE_OPTIONS -DLINPHONE_BUILDER_SIGNING_IDENTITY="$MACOS_SIGNING_IDENTITY" $XCODE_OPTIONS $CMAKE_OPTIONS $SCHEDULE_CMAKE_OPTIONS $RELEASE_FILE
cmake --build . --target install --config $CI_BUILD_TYPE $LBC_NODEBUG_OPTIONS -- $ADDITIONAL_BUILD_OPTIONS
ccache -s
.job-macosx-desktop:
stage: build
tags: [ "macos-min-xcode12.2" ]
script:
- *build_all_script
variables:
CMAKE_TOOLCHAIN_FILE: linphone-sdk/cmake/toolchains/toolchain-mac-x86_64.cmake
artifacts:
paths:
- build/OUTPUT/*
when: always
expire_in: 1 week
#################################################
# On each push
#################################################
#TODO: reactivate pcrypto when liboqs is fixed for 'Vortex' CPU.
job-macosx-ninja:
except:
refs:
- schedules
variables:
CMAKE_GENERATOR: Ninja
CMAKE_OPTIONS: -DPython3_ROOT_DIR=/opt/bc/pip-packages/ -DENABLE_PQCRYPTO=ON
extends: .job-macosx-desktop
#################################################
# Nightly
#################################################
job-macosx-makefile:
rules:
- if: $NIGHTLY_MASTER
- if: $DEPLOY_PLUGINS
variables:
CMAKE_GENERATOR: Unix Makefiles
CMAKE_OPTIONS: -DPython3_ROOT_DIR=/opt/bc/pip-packages/ -DENABLE_PQCRYPTO=ON
ADDITIONAL_BUILD_OPTIONS: -j$MAKEFILE_JOBS
extends: .job-macosx-desktop
job-macosx-ninja-novideo:
rules:
- !reference [.rules-merge-request-manual, rules]
- if: $NIGHTLY_MASTER
variables:
CMAKE_OPTIONS: -DPython3_ROOT_DIR=/opt/bc/pip-packages/ -DENABLE_VIDEO=OFF -DENABLE_PQCRYPTO=ON
CMAKE_GENERATOR: Ninja
extends: .job-macosx-desktop
#job-macosx-xcode:
# extends: .job-macosx-desktop
# variables:
# XCODE_OPTIONS: -DLINPHONESDK_MACOS_BASE_URL=$MACOS_SNAPSHOTS_URL
# CMAKE_GENERATOR: Xcode
# ADDITIONAL_BUILD_OPTIONS: -IDEBuildOperationMaxNumberOfConcurrentCompileTasks=$MAX_NUMBER_TASK
# only:
# variables:
# - $NIGHTLY_MASTER
# - $DEPLOY_RUN_MACOSX
#
#################################################
# Package - Nightly
#################################################
# WAIT for QT6 for arm64
job-macosx-makefile-package:
stage: package
tags: [ "macos-min-xcode12.2" ]
dependencies: []
rules:
- !reference [.rules-merge-request-manual, rules]
- if: $NIGHTLY_MASTER
- if: $PACKAGE_MACOSX
- if: $DEPLOY_MACOSX
variables:
CMAKE_OPTIONS: -DPython3_ROOT_DIR=/opt/bc/pip-packages/ -DENABLE_APP_PACKAGING=ON -DENABLE_GPL_THIRD_PARTIES=ON -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON
RELEASE_FILE: -DLINPHONE_SDK_MAKE_RELEASE_FILE_URL=$MAKE_RELEASE_FILE_URL/$MACOSX_PLATFORM/$APP_FOLDER
extends: job-macosx-makefile
script:
- if [[ $MAKE_RELEASE_FILE_URL == "" ]]; then export RELEASE_FILE=""; fi
- *build_all_script
artifacts:
when: always
paths:
- build/OUTPUT/*
when: always
expire_in: 1 week
job-macosx-codesigning:
stage: signing
tags: [ "macos-min-xcode12.2" ]
needs:
- job-macosx-makefile-package
rules:
- !reference [.rules-merge-request-manual, rules]
- if: $NIGHTLY_MASTER
- if: $PACKAGE_MACOSX
- if: $DEPLOY_MACOSX
script:
- cd build
- codesign --timestamp --options runtime,library --verbose -s "$MACOS_SIGNING_IDENTITY" OUTPUT/linphone-app/macos/Packages/Linphone*.dmg
- ./../tools/app_notarization.sh
artifacts:
when: always
paths:
- build/OUTPUT/*
when: always
expire_in: 1 week
#################################################
# Deploy - Nightly
#################################################
job-macosx-makefile-deploy:
stage: deploy
tags: [ "deploy" ]
needs:
- job-macosx-codesigning
rules:
- !reference [.rules-merge-request-manual, rules]
- if: $NIGHTLY_MASTER
- if: $DEPLOY_MACOSX
script:
# Going to folder in order to avoid having path in checksum
- |-
cd build/OUTPUT/linphone-app/macos/Packages/
for file in $(find . -type f -name '*.dmg' -exec basename {} \;)
do
rsync -rlv --ignore-existing $file $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER
sha512sum $file > $file.sha512
rsync -rlv --ignore-existing $file.sha512 $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER
done
cd ../../../../..
- |-
if [[ $MAKE_RELEASE_FILE_URL != "" ]]; then
rsync -rlv build/OUTPUT/linphone-app/macos/RELEASE $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM
rsync -rlv build/OUTPUT/linphone-app/macos/RELEASE $MAIN_DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM
fi
job-macosx-makefile-plugins-deploy:
stage: deploy
tags: [ "macos-min-xcode12.2" ]
needs:
- job-macosx-makefile
only:
variables:
- $DEPLOY_PLUGINS
script:
- rsync -rlv --ignore-existing build/OUTPUT/linphone-app/macos/plugins/app/*.dylib $DEPLOY_SERVER:$UPLOAD_ROOT_PATH/$MACOSX_PLATFORM/$APP_FOLDER/plugins