Skip to content

Conversation

@rmarinho
Copy link
Member

Description of Change

This pull request updates the build and test infrastructure to improve platform-specific builds, streamline build conditions, and enhance macOS integration test reliability. The changes reorganize project selection logic in Build.props, update build pipeline pool configurations to use a shared macOS pool, and adjust environment variable handling for integration tests.

Build system and pipeline improvements:

  • Refactored eng/Build.props to separate build logic for pack-only, full build, and device test scenarios, adding more precise conditions and additional build properties for macOS and Windows builds.
  • Updated Azure DevOps pipeline pool configurations in eng/pipelines/ci.yml to use the AcesShared pool with specific demands for macOS jobs, replacing previous references to Azure Pipelines and hosted images. [1] [2]
  • Removed the Agent.OSVersion demand for macOS device test pools in eng/pipelines/device-tests.yml, simplifying agent selection. [1] [2]

Integration test and environment variable handling:

  • Changed integration test pipeline logic in eng/pipelines/arcade/stage-integration-tests.yml to always set SKIP_XCODE_VERSION_CHECK=true for macOS jobs, and refactored the logic for setting IOS_TEST_DEVICE to be more precise for iOS test categories.
  • Updated TestEnvironment.SkipXcodeVersionCheck in TestEnvironment.cs to always return true (unless overridden by environment variable), ensuring Xcode version checks are always skipped locally and in CI.

Build script adjustments:

  • Removed explicit build properties from the Microsoft.Maui.sln build command in the arcade build pipeline, relying on the new logic in Build.props for property management.

Copilot AI review requested due to automatic review settings January 27, 2026 13:16
@rmarinho rmarinho changed the title Try aces dnceng [ci] MOVE to ACES dnceng Jan 27, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the build and test infrastructure to improve macOS CI reliability and streamline build configuration logic. The changes primarily focus on migrating macOS CI jobs to a dedicated shared pool, consolidating build property management, and ensuring Xcode version checks are consistently skipped in CI environments.

Changes:

  • Migrated macOS CI pools from Azure Pipelines hosted agents to the AcesShared pool with Tahoe image demands
  • Refactored Build.props to separate pack-only, full build, and device test scenarios with centralized build property management
  • Updated integration tests to always skip Xcode version checks on macOS and simplified iOS test device configuration

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
eng/Build.props Reorganized project selection logic into distinct scenarios (pack-only, full build, device tests) with platform-specific build properties moved from pipeline scripts to centralized configuration
eng/pipelines/arcade/stage-build.yml Removed explicit build properties from sln build command, now relying on Build.props for property management
eng/pipelines/arcade/stage-integration-tests.yml Added SKIP_XCODE_VERSION_CHECK environment variable for all macOS jobs and updated iOS test device specification
eng/pipelines/ci.yml Changed macOS pool configurations to use AcesShared pool with Tahoe image demands instead of Azure Pipelines hosted images
eng/pipelines/device-tests.yml Removed Agent.OSVersion demands from iOS and MacCatalyst device test pools
src/TestUtils/src/Microsoft.Maui.IntegrationTests/Utilities/TestEnvironment.cs Changed default value for SkipXcodeVersionCheck from false to true

envVariables:
IOS_TEST_DEVICE: ios-simulator-64_18.5
SKIP_XCODE_VERSION_CHECK: 'true'
IOS_TEST_DEVICE: ios-simulator-64
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The iOS test device specification changed from ios-simulator-64_18.5 to ios-simulator-64, removing the iOS version. Please verify this change is documented in the relevant XML files in the /docs/ folders and that the behavior matches the intended feature description. This is a potentially breaking change for tests that rely on specific iOS simulator versions.

Copilot uses AI. Check for mistakes.
<!-- Pack only: Microsoft.Maui.Packages -->
<ItemGroup Condition="'$(BuildDeviceTests)' != 'true' and '$(Pack)' == 'true'">
<ProjectToBuild Include="$(RepoRoot)eng/Microsoft.Maui.Packages-mac.slnf" Condition="'$(OS)' != 'Windows_NT'" BuildInParallel="false">
<AdditionalProperties>ValidateXcodeVersion=false</AdditionalProperties>
Copy link

Copilot AI Jan 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ValidateXcodeVersion=false property is duplicated across multiple ProjectToBuild items (lines 10, 18, 21). Consider extracting this as a common property group to reduce duplication and ensure consistent behavior across build scenarios.

Copilot uses AI. Check for mistakes.
@rmarinho
Copy link
Member Author

/azp run maui-pr-devicetests

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@rmarinho rmarinho removed the do-not-merge Don't merge this PR label Jan 29, 2026
@rmarinho rmarinho merged commit 5ade6a2 into main Jan 30, 2026
36 of 42 checks passed
@rmarinho rmarinho deleted the try-aces-dnceng branch January 30, 2026 10:44
kubaflo pushed a commit to kubaflo/maui that referenced this pull request Feb 2, 2026
### Description of Change

This pull request updates the build and test infrastructure to improve
platform-specific builds, streamline build conditions, and enhance macOS
integration test reliability. The changes reorganize project selection
logic in `Build.props`, update build pipeline pool configurations to use
a shared macOS pool, and adjust environment variable handling for
integration tests.

**Build system and pipeline improvements:**

* Refactored `eng/Build.props` to separate build logic for pack-only,
full build, and device test scenarios, adding more precise conditions
and additional build properties for macOS and Windows builds.
* Updated Azure DevOps pipeline pool configurations in
`eng/pipelines/ci.yml` to use the `AcesShared` pool with specific
demands for macOS jobs, replacing previous references to `Azure
Pipelines` and hosted images.
[[1]](diffhunk://#diff-07a82fab001c5b336d89cb64918f0a88b6b66f03d88d67e0fa13c65202455120L77-R79)
[[2]](diffhunk://#diff-07a82fab001c5b336d89cb64918f0a88b6b66f03d88d67e0fa13c65202455120L100-R113)
* Removed the `Agent.OSVersion` demand for macOS device test pools in
`eng/pipelines/device-tests.yml`, simplifying agent selection.
[[1]](diffhunk://#diff-d2d1c388a0fb3196dbfcdab96421bc88336637a3d44480c96717f92d000facaeL74)
[[2]](diffhunk://#diff-d2d1c388a0fb3196dbfcdab96421bc88336637a3d44480c96717f92d000facaeL83)

**Integration test and environment variable handling:**

* Changed integration test pipeline logic in
`eng/pipelines/arcade/stage-integration-tests.yml` to always set
`SKIP_XCODE_VERSION_CHECK=true` for macOS jobs, and refactored the logic
for setting `IOS_TEST_DEVICE` to be more precise for iOS test
categories.
* Updated `TestEnvironment.SkipXcodeVersionCheck` in
`TestEnvironment.cs` to always return `true` (unless overridden by
environment variable), ensuring Xcode version checks are always skipped
locally and in CI.

**Build script adjustments:**

* Removed explicit build properties from the Microsoft.Maui.sln build
command in the arcade build pipeline, relying on the new logic in
`Build.props` for property management.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants