Run Compute in the UI test workflow (#929) #2397
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
| name: Compatibility tests | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| compatibility_tests_macos: | |
| name: Execute compatibility tests for macOS | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [macos-15] | |
| xcode-version: ["26.3"] | |
| release: [2024] | |
| # Limit to self-hosted to reduce action cost | |
| runs-on: | |
| - self-hosted | |
| - ${{ matrix.os }} | |
| env: | |
| OPENSWIFTUI_WERROR: 0 # Disable it to avoid enable OAG's werror and hit conflicts | |
| OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1 | |
| OPENSWIFTUI_SWIFT_LOG: 0 | |
| OPENSWIFTUI_SWIFT_CRYPTO: 0 | |
| OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }} | |
| OPENSWIFTUI_USE_LOCAL_DEPS: 1 | |
| OPENSWIFTUI_LINK_TESTING: 1 | |
| GH_TOKEN: ${{ github.token }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Xcode | |
| uses: OpenSwiftUIProject/setup-xcode@v2 | |
| with: | |
| xcode-version: ${{ matrix.xcode-version }} | |
| - name: Set up build environment | |
| run: Scripts/CI/darwin_setup_build.sh | |
| shell: bash | |
| - name: Install xcbeautify | |
| run: brew install xcbeautify | |
| - name: Run compatibility tests on OpenSwiftUI + macOS | |
| run: | | |
| set -o pipefail | |
| # Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this. | |
| NSUnbufferedIO=YES swift test \ | |
| --disable-experimental-prebuilts \ | |
| --filter OpenSwiftUICompatibilityTests \ | |
| --build-path .build-compatibility-test-debug \ | |
| 2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified | |
| env: | |
| OPENSWIFTUI_COMPATIBILITY_TEST: 0 | |
| - name: Run compatibility tests on SwiftUI + macOS | |
| run: | | |
| set -o pipefail | |
| # Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this. | |
| NSUnbufferedIO=YES swift test \ | |
| --disable-experimental-prebuilts \ | |
| --filter OpenSwiftUICompatibilityTests \ | |
| --build-path .build-compatibility-test-debug \ | |
| 2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified | |
| env: | |
| OPENSWIFTUI_COMPATIBILITY_TEST: 1 | |
| compatibility_tests_ios: | |
| name: Execute compatibility tests for iOS | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [macos-15] | |
| xcode-version: ["26.3"] | |
| release: [2024] | |
| ios-version: ["18.5"] | |
| include: | |
| - ios-version: "18.5" | |
| ios-simulator-name: "iPhone 16 Pro" | |
| # Limit to self-hosted to reduce action cost | |
| runs-on: | |
| - self-hosted | |
| - ${{ matrix.os }} | |
| env: | |
| OPENSWIFTUI_WERROR: 0 # Disable it to avoid enable OAG's werror and hit conflicts | |
| OPENSWIFTUI_OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH: 1 | |
| OPENSWIFTUI_SWIFT_LOG: 0 | |
| OPENSWIFTUI_SWIFT_CRYPTO: 0 | |
| OPENSWIFTUI_TARGET_RELEASE: ${{ matrix.release }} | |
| OPENSWIFTUI_SUPPORT_MULTI_PRODUCTS: 0 | |
| OPENSWIFTUI_USE_LOCAL_DEPS: 1 | |
| OPENSWIFTUI_LINK_TESTING: 1 | |
| GH_TOKEN: ${{ github.token }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Xcode | |
| uses: OpenSwiftUIProject/setup-xcode@v2 | |
| with: | |
| xcode-version: ${{ matrix.xcode-version }} | |
| - name: Set up build environment | |
| run: Scripts/CI/darwin_setup_build.sh | |
| shell: bash | |
| - name: Install xcbeautify | |
| run: brew install xcbeautify | |
| - name: Prepare isolated DerivedData | |
| shell: bash | |
| run: | | |
| openswiftui_derived_data_path="${RUNNER_TEMP:-/tmp}/compatibility-ios-derived-data-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}-openswiftui" | |
| swiftui_derived_data_path="${RUNNER_TEMP:-/tmp}/compatibility-ios-derived-data-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT:-0}-${{ matrix.ios-version }}-${{ matrix.release }}-swiftui" | |
| rm -rf "$openswiftui_derived_data_path" "$swiftui_derived_data_path" | |
| mkdir -p "$openswiftui_derived_data_path" "$swiftui_derived_data_path" | |
| echo "OPENSWIFTUI_DERIVED_DATA_PATH=$openswiftui_derived_data_path" >> "$GITHUB_ENV" | |
| echo "SWIFTUI_DERIVED_DATA_PATH=$swiftui_derived_data_path" >> "$GITHUB_ENV" | |
| - name: Run compatibility tests on OpenSwiftUI + iOS | |
| run: | | |
| set -o pipefail | |
| # Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this. | |
| # Xcode 26.3 + iOS 18.5 fails to launch arm64 SwiftPM package test | |
| # runners with CoreSimulator codesigning errors; force the x86_64 | |
| # simulator slice until that launch path is fixed. | |
| NSUnbufferedIO=YES xcodebuild -IDEPackageEnablePrebuilts=NO test \ | |
| -scheme OpenSwiftUI \ | |
| -configuration Debug \ | |
| -destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }},arch=x86_64" \ | |
| -only-testing:OpenSwiftUICompatibilityTests \ | |
| -derivedDataPath "$OPENSWIFTUI_DERIVED_DATA_PATH" \ | |
| -skipMacroValidation \ | |
| -skipPackagePluginValidation \ | |
| ONLY_ACTIVE_ARCH=YES \ | |
| 2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified | |
| env: | |
| OPENSWIFTUI_COMPATIBILITY_TEST: 0 | |
| - name: Run compatibility tests on SwiftUI + iOS | |
| run: | | |
| set -o pipefail | |
| # Swift 6.2 can duplicate-link swift-syntax macro prebuilts; Swift 6.3 fixes this. | |
| # See the OpenSwiftUI iOS compatibility step above: force x86_64 to | |
| # avoid the arm64 package test runner launch/codesigning failure. | |
| NSUnbufferedIO=YES xcodebuild -IDEPackageEnablePrebuilts=NO test \ | |
| -scheme OpenSwiftUI \ | |
| -configuration Debug \ | |
| -destination "platform=iOS Simulator,OS=${{ matrix.ios-version }},name=${{ matrix.ios-simulator-name }},arch=x86_64" \ | |
| -only-testing:OpenSwiftUICompatibilityTests \ | |
| -derivedDataPath "$SWIFTUI_DERIVED_DATA_PATH" \ | |
| -skipMacroValidation \ | |
| -skipPackagePluginValidation \ | |
| ONLY_ACTIVE_ARCH=YES \ | |
| 2>&1 | xcbeautify --renderer github-actions --preserve-unbeautified | |
| env: | |
| OPENSWIFTUI_COMPATIBILITY_TEST: 1 | |
| - name: Clean up isolated DerivedData | |
| if: always() | |
| shell: bash | |
| run: | | |
| if [[ -n "${OPENSWIFTUI_DERIVED_DATA_PATH:-}" ]]; then | |
| rm -rf "$OPENSWIFTUI_DERIVED_DATA_PATH" | |
| fi | |
| if [[ -n "${SWIFTUI_DERIVED_DATA_PATH:-}" ]]; then | |
| rm -rf "$SWIFTUI_DERIVED_DATA_PATH" | |
| fi |