From 5786a07508f08211c1ee600f17a0c8a5523837ad Mon Sep 17 00:00:00 2001 From: "D. Sidiropoulos" Date: Wed, 10 Jul 2024 21:17:47 +0200 Subject: [PATCH] feat (github-actions.yml): we now set the sdk-versions and the xcode-ide to use for iphoneos-bindings and mac-catalyst-bindings at the top of github-actions.yml --- .github/workflows/github-actions.yml | 39 ++++++++++++------- ...Laerdal.McuMgr.Bindings.MacCatalyst.csproj | 16 +++++++- .../Laerdal.Mac.CompileAndGenerateFatLibs.sh | 19 ++++++++- .../Laerdal.McuMgr.Bindings.iOS.csproj | 16 +++++++- Laerdal.Scripts/Laerdal.Builder.targets | 25 +++++++++--- .../Laerdal.SetupBuildEnvironment.sh | 14 +++---- 6 files changed, 98 insertions(+), 31 deletions(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index ed8a8f8..f2bf6c1 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -14,6 +14,11 @@ env: SCL_AZURE_ARTIFACTS_API_KEY: ${{ secrets.SCL_AZURE_ARTIFACTS_API_KEY }} SCL_GITHUB_NUGET_FEED_USERNAME: ${{ secrets.SCL_GITHUB_NUGET_FEED_USERNAME }} + BINDINGS_IOS___SDK_VERSION: "17.2" + BINDINGS_IOS___XCODE_IDE_DEV_PATH: "/Applications/Xcode_15.2.app/Contents/Developer" + + BINDINGS_MACCATALYST___SDK_VERSION: "14.2" + BINDINGS_MACCATALYST___XCODE_IDE_DEV_PATH: "/Applications/Xcode_15.2.app/Contents/Developer" on: workflow_call: # so that other workflows can trigger this @@ -57,20 +62,26 @@ jobs: - name: '🏗 📦 Build, Pack & Announce New Release (if appropriate)' shell: 'bash' run: | - cd "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts" \ - && \ - dotnet \ - msbuild \ - "Laerdal.Builder.targets" \ - -m:1 \ - -p:Should_Skip_MacCatalyst="false" \ - \ - -p:PackageOutputPath="${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts" \ - -p:Laerdal_Gradle_Path="/opt/homebrew/opt/gradle@7/bin/gradle" \ - -p:Laerdal_Source_Branch="${{env.LAERDAL_SOURCE_BRANCH}}" \ - -p:Laerdal_Repository_Path="${{env.LAERDAL_REPOSITORY_PATH}}" \ - -p:Laerdal_Github_Access_Token="${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ - -p:Laerdal_Test_Results_Folderpath="${{env.BUILD_REPOSITORY_FOLDERPATH}}/TestResults" + cd "${{env.BUILD_REPOSITORY_FOLDERPATH}}/Laerdal.Scripts" \ + && \ + dotnet \ + msbuild \ + "Laerdal.Builder.targets" \ + -m:1 \ + -p:Should_Skip_MacCatalyst="false" \ + \ + -p:PackageOutputPath="${{env.BUILD_REPOSITORY_FOLDERPATH}}/Artifacts" \ + -p:Laerdal_Gradle_Path="/opt/homebrew/opt/gradle@7/bin/gradle" \ + -p:Laerdal_Source_Branch="${{env.LAERDAL_SOURCE_BRANCH}}" \ + -p:Laerdal_Repository_Path="${{env.LAERDAL_REPOSITORY_PATH}}" \ + -p:Laerdal_Github_Access_Token="${{env.SCL_GITHUB_ACCESS_TOKEN}}" \ + -p:Laerdal_Test_Results_Folderpath="${{env.BUILD_REPOSITORY_FOLDERPATH}}/TestResults" \ + \ + -p:Laerdal_Bindings_iOS___Sdk_Version="${{env.BINDINGS_IOS___SDK_VERSION}}" \ + -p:Laerdal_Bindings_iOS___Xcode_Ide_Dev_Path="${{env.BINDINGS_IOS___XCODE_IDE_DEV_PATH}}" \ + \ + -p:Laerdal_Bindings_MacCatalyst___Sdk_Version="${{env.BINDINGS_MACCATALYST___SDK_VERSION}}" \ + -p:Laerdal_Bindings_MacCatalyst___Xcode_Ide_Dev_Path="${{env.BINDINGS_MACCATALYST___XCODE_IDE_DEV_PATH}}" - name: '📡 Publish Test Results' # https://github.com/marketplace/actions/publish-test-results uses: 'EnricoMi/publish-unit-test-result-action/macos@v2' diff --git a/Laerdal.McuMgr.Bindings.MacCatalyst/Laerdal.McuMgr.Bindings.MacCatalyst.csproj b/Laerdal.McuMgr.Bindings.MacCatalyst/Laerdal.McuMgr.Bindings.MacCatalyst.csproj index daeb730..592d54b 100644 --- a/Laerdal.McuMgr.Bindings.MacCatalyst/Laerdal.McuMgr.Bindings.MacCatalyst.csproj +++ b/Laerdal.McuMgr.Bindings.MacCatalyst/Laerdal.McuMgr.Bindings.MacCatalyst.csproj @@ -33,6 +33,9 @@ $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), 'Frameworks')) $(NativeFrameworkParentFolderpath)/McuMgrBindingsiOS.framework + + 14.2 + /Applications/Xcode_15.2.app/Contents/Developer @@ -158,7 +161,18 @@ - + + + + <_CliCommand>$(_Cli) XCODE_IDE_DEV_PATH='$(Laerdal_Bindings_MacCatalyst___Xcode_Ide_Dev_Path)' + <_CliCommand>$(_Cli) XCODEBUILD_TARGET_SDK='iphoneos' + <_CliCommand>$(_Cli) XCODEBUILD_TARGET_SDK_VERSION='$(Laerdal_Bindings_MacCatalyst___Sdk_Version)' + <_CliCommand>$(_Cli) SWIFT_OUTPUT_PATH='$(NativeFrameworkParentFolderpath)' + <_CliCommand>$(_Cli) ./Laerdal.Mac.CompileAndGenerateFatLibs.sh + + + + diff --git a/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/Laerdal.Mac.CompileAndGenerateFatLibs.sh b/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/Laerdal.Mac.CompileAndGenerateFatLibs.sh index 2e7c9e2..2a73099 100755 --- a/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/Laerdal.Mac.CompileAndGenerateFatLibs.sh +++ b/Laerdal.McuMgr.Bindings.MacCatalystAndIos.Native/Laerdal.Mac.CompileAndGenerateFatLibs.sh @@ -8,6 +8,8 @@ # # Note that all parameters passed to xcodebuild must be in the form of -parameter value instead of --parameter +declare XCODE_IDE_DEV_PATH="${XCODE_IDE_DEV_PATH:-/Applications/Xcode_15.2.app/Contents/Developer}" + declare XCODEBUILD_TARGET_SDK="${XCODEBUILD_TARGET_SDK:-iphoneos}" declare XCODEBUILD_TARGET_SDK_VERSION="${XCODEBUILD_TARGET_SDK_VERSION}" # xcodebuild -showsdks @@ -38,8 +40,8 @@ else OUTPUT_FOLDER_POSTFIX="$XCODEBUILD_TARGET_SDK" fi -declare OUTPUT_FOLDER_NAME="$SWIFT_BUILD_CONFIGURATION-$OUTPUT_FOLDER_POSTFIX" # Release-iphoneos or Release-maccatalyst note that we intentionally *omitted* the sdk-version from the folder name -declare OUTPUT_SHARPIE_HEADER_FILES_PATH="SharpieOutput/SwiftFrameworkProxy.Binding" # contains the resulting files ApiDefinitions.cs and StructsAndEnums.cs +declare OUTPUT_FOLDER_NAME="$SWIFT_BUILD_CONFIGURATION-$OUTPUT_FOLDER_POSTFIX" # Release-iphoneos or Release-maccatalyst note that we intentionally *omitted* the sdk-version +declare OUTPUT_SHARPIE_HEADER_FILES_PATH="SharpieOutput/SwiftFrameworkProxy.Binding" # from the folder name contains the resulting files ApiDefinitions.cs and StructsAndEnums.cs function print_macos_sdks() { echo "** xcode path : '$( "xcode-select" -p )'" @@ -68,6 +70,18 @@ function print_macos_sdks() { echo } +function set_system_wide_default_xcode_ide() { + echo "** Set Xcode IDE path to '$XCODE_IDE_DEV_PATH'" + + sudo xcode-select -s "$XCODE_IDE_DEV_PATH" + local exitCode=$? + + if [ $exitCode -ne 0 ]; then + echo "** [FAILED] Failed to set xcode-select to '$XCODE_IDE_DEV_PATH'" + exit 1 + fi +} + function build() { echo "** Build $OUTPUT_FOLDER_NAME framework for device" @@ -326,6 +340,7 @@ function create_fat_binaries() { function main() { print_macos_sdks + set_system_wide_default_xcode_ide build create_fat_binaries diff --git a/Laerdal.McuMgr.Bindings.iOS/Laerdal.McuMgr.Bindings.iOS.csproj b/Laerdal.McuMgr.Bindings.iOS/Laerdal.McuMgr.Bindings.iOS.csproj index 7342513..bed8fcd 100644 --- a/Laerdal.McuMgr.Bindings.iOS/Laerdal.McuMgr.Bindings.iOS.csproj +++ b/Laerdal.McuMgr.Bindings.iOS/Laerdal.McuMgr.Bindings.iOS.csproj @@ -34,6 +34,9 @@ $([System.IO.Path]::Combine($(MSBuildThisFileDirectory), 'Frameworks')) $(NativeFrameworkParentFolderpath)/McuMgrBindingsiOS.framework + + 17.2 + /Applications/Xcode_15.2.app/Contents/Developer @@ -159,7 +162,18 @@ - + + + + <_CliCommand>$(_Cli) XCODE_IDE_DEV_PATH='$(Laerdal_Bindings_iOS___Xcode_Ide_Dev_Path)' + <_CliCommand>$(_Cli) XCODEBUILD_TARGET_SDK='iphoneos' + <_CliCommand>$(_Cli) XCODEBUILD_TARGET_SDK_VERSION='$(Laerdal_Bindings_iOS___Sdk_Version)' + <_CliCommand>$(_Cli) SWIFT_OUTPUT_PATH='$(NativeFrameworkParentFolderpath)' + <_CliCommand>$(_Cli) ./Laerdal.Mac.CompileAndGenerateFatLibs.sh + + + + diff --git a/Laerdal.Scripts/Laerdal.Builder.targets b/Laerdal.Scripts/Laerdal.Builder.targets index d30f82f..01aa6c8 100644 --- a/Laerdal.Scripts/Laerdal.Builder.targets +++ b/Laerdal.Scripts/Laerdal.Builder.targets @@ -29,6 +29,7 @@ %0A + Release true @@ -42,7 +43,17 @@ true false - + + + + + + + + + + + gradle $(BUILD_SOURCEBRANCH) $(BUILD_REPOSITORY_NAME) @@ -193,6 +204,7 @@ <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters)GradlePath=$(Laerdal_Gradle_Path); <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters)Configuration=$(Configuration); <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters)PackageOutputPath=$(PackageOutputPath); + <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters)ContinuousIntegrationBuild=$(Is_CI_Build); <_Laerdal_Build_Parameters>$(_Laerdal_Build_Parameters)Should_Skip_MacCatalyst=$(Should_Skip_MacCatalyst); @@ -209,14 +221,15 @@ - + - - - + + + + - + diff --git a/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh b/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh index bce7378..d0bb10c 100644 --- a/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh +++ b/Laerdal.Scripts/Laerdal.SetupBuildEnvironment.sh @@ -134,13 +134,13 @@ echo "** XCode Installations:" ls -ld /Applications/Xcode* || exit 90 -sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer -declare exitCode=$? -if [ $exitCode != 0 ]; then - echo "##vso[task.logissue type=error]Failed to apply 'xcode-select'." - exit 90 -fi -echo +#sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer +#declare exitCode=$? +#if [ $exitCode != 0 ]; then +# echo "##vso[task.logissue type=error]Failed to apply 'xcode-select'." +# exit 90 +#fi +#echo echo echo "** XCode SDKs:"