[Minor][Feature]: Update min ios and Xcode versions#2918
Open
[Minor][Feature]: Update min ios and Xcode versions#2918
Conversation
Update Xcode project settings to raise the iOS minimum deployment target to 17.0 across MSAL and sample apps. Also remove explicit ENABLE_BITCODE = NO entries where present. Files updated: MSAL/MSAL.xcodeproj/project.pbxproj, Samples/ios/SampleApp/SampleAppiOS.xcodeproj/project.pbxproj, and Samples/ios/SampleAppiOS-Swift/SampleAppiOS-Swift.xcodeproj/project.pbxproj to align targets and clean up deprecated bitcode flags.
Increase iOS deployment target to 17.0 (MSAL.podspec and Package.swift) and update Azure Pipelines to use macos-latest images and Xcode_26.3. Adjust simulator destinations to iPhone 17 Pro Max and update xcode-select invocations across automation, broker_submodule_check, pr-validation, tests-with-conf-file, and visionos-validation pipeline files to align CI with the newer Xcode/macOS environment.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the project’s minimum iOS deployment target and attempts to align CI/build tooling to newer Apple toolchain settings across MSAL, distribution manifests (SPM/CocoaPods), sample apps, and Azure Pipelines.
Changes:
- Bump
IPHONEOS_DEPLOYMENT_TARGETto iOS 17.0 across MSAL and sample Xcode projects. - Update distribution minimums (SPM
Package.swift, CocoaPodsMSAL.podspec) to iOS 17.0. - Adjust Azure Pipelines to use
macos-latest, switch to a newer Xcode selection, and update iOS simulator destinations.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| Samples/ios/SampleAppiOS-Swift/SampleAppiOS-Swift.xcodeproj/project.pbxproj | Raises sample Swift app deployment target(s) to iOS 17.0. |
| Samples/ios/SampleApp/SampleAppiOS.xcodeproj/project.pbxproj | Raises sample ObjC app deployment target(s) to iOS 17.0. |
| Package.swift | Updates SPM platform minimum to iOS 17 (and keeps macOS/visionOS entries). |
| MSAL/MSAL.xcodeproj/project.pbxproj | Raises MSAL iOS deployment target(s) to 17.0 and removes explicit Bitcode settings. |
| MSAL.podspec | Raises CocoaPods iOS deployment target to 17.0. |
| azure_pipelines/visionos-validation.yml | Switches pool image to macos-latest and updates Xcode selection in visionOS validation jobs. |
| azure_pipelines/templates/tests-with-conf-file.yml | Updates Xcode selection used by automation test template. |
| azure_pipelines/pr-validation.yml | Switches pool image to macos-latest, updates Xcode selection, and changes iOS simulator destination used for E2E runs. |
| azure_pipelines/broker_submodule_check.yml | Switches pool image to macos-latest and updates Xcode selection. |
| azure_pipelines/automation.yml | Switches pool image to macos-latest and changes iOS simulator destination used for scheduled automation runs. |
Update Azure Pipelines YAML to select Xcode 26.3 and create a stable /Applications/Xcode.app symlink. Replaces the single-line '/bin/bash -c' invocations with multiline script blocks and adds `sudo ln -sfn /Applications/Xcode_26.3.app /Applications/Xcode.app` to ensure CI tools reference the intended Xcode installation. Modified files: broker_submodule_check.yml, pr-validation.yml, templates/tests-with-conf-file.yml, visionos-validation.yml.
Co-authored-by: Copilot <[email protected]>
Samples/ios/SampleAppiOS-Swift/SampleAppiOS-Swift.xcodeproj/project.pbxproj
Show resolved
Hide resolved
Add a Bash step to locate the generated .xctestrun in build/Build/Products, set XCTESTRUN_PATH as a pipeline variable, and fail with a clear error if none is found. Replace hardcoded full_path parameters in automation and pr-validation pipelines with the discovered $(XCTESTRUN_PATH) so xcodebuild uses the dynamically found file. This removes brittle, machine-specific xctestrun paths and improves pipeline resilience.
Update simulator device and OS version used for tests. Modified azure_pipelines/automation.yml and azure_pipelines/pr-validation.yml to include OS=26.2 in the simulator -destination, and updated build.py simulator constants (device type, exact name, and destination string) to match iPhone 17 Pro Max (26.2). This aligns CI and local build scripts to run against the same simulator version.
Broaden and harden .xctestrun discovery in the Azure Pipelines test template: print search results, search the entire build tree for .xctestrun files, and provide clearer error logging and recursive listing when none are found. Also update the SPM integration test xcodebuild destination to an iPhone 17 Pro Max with iOS 26.2 to use the newer simulator configuration.
Update Azure Pipelines to use macOS-26.3.0 instead of macos-latest across pipeline files. Provide explicit full_path parameters for generated .xctestrun files in automation and PR validation jobs and use that parameter in the tests-with-conf-file template instead of dynamically discovering the file. Improve the xcodebuild step by enabling pipefail and redirecting stderr to tee|xcpretty for better logging, and remove the separate discovery step. Files updated: azure_pipelines/{automation.yml,broker_submodule_check.yml,pr-validation.yml,visionos-validation.yml,templates/tests-with-conf-file.yml}.
Replace explicit 'macOS-26.3.0' vmImage with the generic 'macOS-26' across Azure Pipeline YAMLs. Updated azure_pipelines/automation.yml, broker_submodule_check.yml, pr-validation.yml, and visionos-validation.yml to standardize the macOS agent image reference.
Replace occurrences of 'macOS-26' with 'macos-26' in Azure Pipelines YAML files to ensure consistent VM image identifiers and avoid potential agent pool lookup issues. Changes applied to azure_pipelines/automation.yml, broker_submodule_check.yml, pr-validation.yml, and visionos-validation.yml.
Replace deprecated 'macos-26' VM image with 'macos-latest' across Azure Pipelines to ensure CI uses the current macOS hosted runner. Updated files: azure_pipelines/automation.yml, broker_submodule_check.yml, pr-validation.yml, and visionos-validation.yml.
Update the full_path for MSAL Mac Native Auth E2E Tests from macosx26.3 to macosx26.2 in azure_pipelines/automation.yml and azure_pipelines/pr-validation.yml so the pipelines point to the correct .xctestrun build artifact (aligns with current SDK/Xcode build output).
Remove hard-coded .xctestrun/full_path parameters from CI job configs and update the test template to invoke xcodebuild using the workspace, scheme and sdk with a derivedDataPath. This makes test runs less dependent on generated .xctestrun product paths and consolidates test invocation options (retry, destination, parallel/iterations, result bundle). Files changed: azure_pipelines/automation.yml, azure_pipelines/pr-validation.yml, and azure_pipelines/templates/tests-with-conf-file.yml.
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 13 out of 13 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (2)
azure_pipelines/pr-validation.yml:183
- Issue: The macOS E2E test job references an .xctestrun path containing macosx26.2. Impact: This SDK version naming is unlikely to match any real Xcode-generated .xctestrun output, so test execution can fail due to missing file. Recommendation: Use the actual macOS SDK version string produced by xcodebuild for the selected Xcode (or derive the .xctestrun filename instead of hard-coding the SDK version).
parameters:
schema: 'MSAL Mac Native Auth E2E Tests'
destination: 'platform=macOS'
sdk: 'macosx'
retry_tests: false
azure_pipelines/automation.yml:81
- Issue: The macOS native auth E2E job uses an .xctestrun path containing macosx26.2. Impact: That SDK version is not valid and likely won’t match the file produced by xcodebuild build-for-testing, causing test execution failures. Recommendation: Update the expected .xctestrun path to match a real macOS SDK version for the selected Xcode, or capture the generated .xctestrun path from the build output instead of hard-coding it.
schema: 'MSAL Mac Native Auth E2E Tests'
destination: 'platform=macOS'
sdk: 'macosx'
retry_tests: 'false'
- job: cocoapods_lib_lint
displayName: Run Cocoapods lib lint
Remove reliance on `set -o pipefail` and add an explicit check for xcodebuild's exit status. Capture BUILD_EXIT from ${PIPESTATUS[0]}; if non-zero, emit an error, print the last 200 lines of the raw xcodebuild log in a grouped section, and exit with the original code. This ensures build-for-testing failures are surfaced clearly and cause the job to fail.
This reverts commit 2f68dde.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Title Format
Required Format:
[Keyword1] [Keyword2]: Descriptionmajor,minor, orpatch(case-insensitive)feature,bugfix,engg, ortests(case-insensitive)Examples:
[MAJOR] [Feature]: new API[minor] [bugfix]: fix crash[PATCH] [tests]: add coverageProposed changes
Describe what this PR is trying to do.
Type of change
Risk
Additional information