[ECO-5702] Fix Xcode 26.4 compilation error #1761
Workflow file for this run
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: Check | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| lint: | |
| runs-on: macos-26 | |
| # From actions/cache documentation linked to below | |
| env: | |
| MINT_PATH: .mint/lib | |
| MINT_LINK_PATH: .mint/bin | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| # This step can be removed once the runners’ default version of Xcode is 26 or above | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: 26.2 | |
| # We use caching for Mint because at the time of writing SwiftLint took about 5 minutes to build in CI, which is unacceptably slow. | |
| # https://github.com/actions/cache/blob/40c3b67b2955d93d83b27ed164edd0756bc24049/examples.md#swift---mint | |
| - uses: actions/cache@v4 | |
| with: | |
| path: .mint | |
| key: ${{ runner.os }}-mint-${{ hashFiles('**/Mintfile') }} | |
| restore-keys: | | |
| ${{ runner.os }}-mint- | |
| - run: npm ci | |
| - run: brew install mint | |
| - run: mint bootstrap | |
| - run: swift run BuildTool lint | |
| spec-coverage: | |
| runs-on: macos-26 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| # This step can be removed once the runners’ default version of Xcode is 16 or above | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: 26.2 | |
| - name: Spec coverage | |
| run: swift run BuildTool spec-coverage | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| generate-matrices: | |
| runs-on: macos-26 | |
| outputs: | |
| matrix: ${{ steps.generation-step.outputs.matrix }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| # This step can be removed once the runners’ default version of Xcode is 16 or above | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: 26.2 | |
| - id: generation-step | |
| run: swift run BuildTool generate-matrices >> $GITHUB_OUTPUT | |
| build-and-test-spm: | |
| name: SPM (Xcode ${{ matrix.tooling.xcodeVersion }}) | |
| runs-on: macos-26 | |
| needs: generate-matrices | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.generate-matrices.outputs.matrix).withoutPlatform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ matrix.tooling.xcodeVersion }} | |
| # https://forums.swift.org/t/warnings-as-errors-for-libraries-frameworks/58393/2 | |
| - run: swift build -Xswiftc -warnings-as-errors | |
| - run: swift test -Xswiftc -warnings-as-errors | |
| build-release-configuration-spm: | |
| name: SPM, `release` configuration (Xcode ${{ matrix.tooling.xcodeVersion }}) | |
| runs-on: macos-26 | |
| needs: generate-matrices | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.generate-matrices.outputs.matrix).withoutPlatform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ matrix.tooling.xcodeVersion }} | |
| # https://forums.swift.org/t/warnings-as-errors-for-libraries-frameworks/58393/2 | |
| - run: swift build -Xswiftc -warnings-as-errors --configuration release | |
| build-and-test-xcode: | |
| name: Xcode, ${{matrix.platform}} (Xcode ${{ matrix.tooling.xcodeVersion }}) | |
| runs-on: macos-26 | |
| needs: generate-matrices | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.generate-matrices.outputs.matrix).withPlatform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ matrix.tooling.xcodeVersion }} | |
| # We run these as two separate steps so that we can easily see the execution time of each step. | |
| - name: Build for testing | |
| run: swift run BuildTool build-library-for-testing --platform ${{ matrix.platform }} | |
| - name: Run tests | |
| run: swift run BuildTool test-library --platform ${{ matrix.platform }} | |
| # TODO: Disabled after this started failing when we switched to Xcode 26; investigate https://github.com/ably/ably-chat-swift/issues/361 | |
| # code-coverage: | |
| # name: Generate code coverage | |
| # runs-on: macos-26 | |
| # | |
| # steps: | |
| # - uses: actions/checkout@v4 | |
| # with: | |
| # submodules: true | |
| # | |
| # # This step can be removed once the runners’ default version of Xcode is 16 or above | |
| # - uses: maxim-lobanov/setup-xcode@v1 | |
| # with: | |
| # xcode-version: 26.2 | |
| # | |
| # - run: swift run BuildTool generate-code-coverage --result-bundle-path CodeCoverage.xcresult | |
| # | |
| # # Generate a Markdown report of the code coverage information and add it to the workflow run. | |
| # # | |
| # # This tool is the best option that I could find after a brief look at the options. There are a few things that I wish it could do: | |
| # # | |
| # # - post a message on the pull request, like they do on Kotlin | |
| # # - offer more fine-grained configuration about which data to include in the report (I only care about code coverage, not test results, and I don't care about code coverage of the AblyChatTests target) | |
| # # | |
| # # but it'll do for now (we can always fork or have another look for tooling later). | |
| # - uses: slidoapp/xcresulttool@v3.1.0 | |
| # with: | |
| # path: CodeCoverage.xcresult | |
| # # This title will be used for the sidebar item that this job adds to GitHub results page for this workflow | |
| # title: Code coverage results | |
| # # Turning off as much non-code-coverage information as it lets me | |
| # show-passed-tests: false | |
| # if: success() || failure() | |
| build-release-configuration-xcode: | |
| name: Xcode, `release` configuration, ${{matrix.platform}} (Xcode ${{ matrix.tooling.xcodeVersion }}) | |
| runs-on: macos-26 | |
| needs: generate-matrices | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.generate-matrices.outputs.matrix).withPlatform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ matrix.tooling.xcodeVersion }} | |
| - name: Build library | |
| run: swift run BuildTool build-library --platform ${{ matrix.platform }} --configuration release | |
| check-example-app: | |
| name: Example app, ${{matrix.platform}} (Xcode ${{ matrix.tooling.xcodeVersion }}) | |
| runs-on: macos-26 | |
| needs: generate-matrices | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJson(needs.generate-matrices.outputs.matrix).withPlatform }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ matrix.tooling.xcodeVersion }} | |
| - name: Build example app | |
| run: swift run BuildTool build-example-app --platform ${{ matrix.platform }} | |
| check-documentation: | |
| runs-on: macos-26 | |
| permissions: | |
| deployments: write | |
| id-token: write | |
| contents: read | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| # This step can be removed once the runners’ default version of Xcode is 16 or above | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: 26.2 | |
| # Dry run upload-action to get base-path url | |
| - name: Dry-Run Upload (to get url) | |
| id: preupload | |
| uses: ably/sdk-upload-action@v2 | |
| with: | |
| mode: preempt | |
| sourcePath: .build/plugins/Swift-DocC/outputs/AblyChat.doccarchive # Path to the Swift DocC output folder | |
| githubToken: ${{ secrets.GITHUB_TOKEN }} | |
| artifactName: AblyChat | |
| # Build the documentation using Swift DocC | |
| - name: Build documentation | |
| run: | | |
| swift package generate-documentation --target AblyChat --disable-indexing \ | |
| --hosting-base-path "${{ steps.preupload.outputs.base-path }}" \ | |
| --transform-for-static-hosting | |
| working-directory: ${{ github.workspace }} | |
| # Configure AWS credentials for uploading documentation | |
| - name: Configure AWS Credentials | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| aws-region: eu-west-2 | |
| role-to-assume: arn:aws:iam::${{ secrets.ABLY_AWS_ACCOUNT_ID_SDK }}:role/ably-sdk-builds-ably-chat-swift | |
| role-session-name: "${{ github.run_id }}-${{ github.run_number }}" | |
| # Upload the generated documentation | |
| - name: Upload Documentation | |
| uses: ably/sdk-upload-action@v2 | |
| with: | |
| sourcePath: .build/plugins/Swift-DocC/outputs/AblyChat.doccarchive # Path to the Swift DocC output folder | |
| githubToken: ${{ secrets.GITHUB_TOKEN }} | |
| artifactName: AblyChat # Optional root-level directory name | |
| landingPagePath: documentation/ablychat | |
| # We use this job as a marker that all of the required checks have completed. | |
| # This allows us to configure a single required status check in our branch | |
| # protection rules instead of having to type loads of different check names | |
| # into the branch protection web UI (and keep this list up to date as we | |
| # tweak the matrices). | |
| all-checks-completed: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - lint | |
| - spec-coverage | |
| - build-and-test-spm | |
| - build-release-configuration-spm | |
| - build-and-test-xcode | |
| - build-release-configuration-xcode | |
| - check-example-app | |
| - check-documentation | |
| # TODO restore | |
| # - code-coverage | |
| steps: | |
| - name: No-op | |
| run: "true" |