Update scripts, docs, and workflows to latest and greatest #96
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: Verify Changes | |
| on: | |
| merge_group: | |
| pull_request: | |
| branches: "**" | |
| push: | |
| branches: ["main"] | |
| env: | |
| XCODE_VERSION: 26.3 | |
| jobs: | |
| lint: | |
| name: Lint | |
| runs-on: macos-26 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Select Xcode ${{ env.XCODE_VERSION }} | |
| run: sudo xcode-select -s /Applications/Xcode_${{ env.XCODE_VERSION }}.app | |
| - name: Lint | |
| run: | | |
| Scripts/lint | |
| build-and-test: | |
| name: Build and Test (${{ matrix.platform }}) | |
| needs: lint | |
| runs-on: macos-26 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - platform: iOS | |
| xcode_destination: "platform=iOS Simulator,name=GitHub_Actions_Simulator" | |
| simulator_device_type: "com.apple.CoreSimulator.SimDeviceType.iPhone-17-Pro" | |
| simulator_runtime: "com.apple.CoreSimulator.SimRuntime.iOS-26-2" | |
| - platform: macOS | |
| xcode_destination: "platform=macOS,arch=arm64" | |
| - platform: tvOS | |
| xcode_destination: "platform=tvOS Simulator,name=GitHub_Actions_Simulator" | |
| simulator_device_type: "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-3rd-generation-4K" | |
| simulator_runtime: "com.apple.CoreSimulator.SimRuntime.tvOS-26-2" | |
| - platform: watchOS | |
| xcode_destination: "platform=watchOS Simulator,name=GitHub_Actions_Simulator" | |
| simulator_device_type: "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-10-46mm" | |
| simulator_runtime: "com.apple.CoreSimulator.SimRuntime.watchOS-26-2" | |
| env: | |
| DEV_BUILDS: DevBuilds/Sources | |
| OTHER_XCBEAUTIFY_FLAGS: --renderer github-actions | |
| XCCOV_PRETTY_VERSION: 1.2.0 | |
| XCODE_SCHEME: DevFoundation-Package | |
| XCODE_DESTINATION: ${{ matrix.xcode_destination }} | |
| XCODE_TEST_PLAN: AllTests | |
| XCODE_TEST_PRODUCTS_PATH: .build/DevFoundation.xctestproducts | |
| steps: | |
| - name: Select Xcode ${{ env.XCODE_VERSION }} | |
| run: sudo xcode-select -s /Applications/Xcode_${{ env.XCODE_VERSION }}.app | |
| - name: Create Simulator | |
| if: matrix.simulator_device_type | |
| run: xcrun simctl create GitHub_Actions_Simulator "${{ matrix.simulator_device_type }}" "${{ matrix.simulator_runtime }}" | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Checkout DevBuilds | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: DevKitOrganization/DevBuilds | |
| path: DevBuilds | |
| - name: Restore XCTestProducts | |
| if: github.event_name != 'push' | |
| id: cache-xctestproducts-restore | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: ${{ env.XCODE_TEST_PRODUCTS_PATH }} | |
| key: cache-xctestproducts-${{ github.workflow }}-${{ matrix.platform }}-${{ env.XCODE_VERSION }}-${{ github.sha }} | |
| - uses: irgaly/xcode-cache@v1 | |
| if: steps.cache-xctestproducts-restore.outputs.cache-hit != 'true' | |
| with: | |
| key: xcode-cache-deriveddata-${{ env.XCODE_VERSION }}-${{ github.workflow }}-${{ matrix.platform }}-${{ github.sha }} | |
| restore-keys: | | |
| xcode-cache-deriveddata-${{ env.XCODE_VERSION }}-${{ github.workflow }}-${{ matrix.platform }}- | |
| xcode-cache-deriveddata-${{ env.XCODE_VERSION }} | |
| deriveddata-directory: .build/DerivedData | |
| sourcepackages-directory: .build/DerivedData/SourcePackages | |
| swiftpm-package-resolved-file: Package.resolved | |
| - name: Build for Testing | |
| id: build-for-testing | |
| if: steps.cache-xctestproducts-restore.outputs.cache-hit != 'true' | |
| run: ${{ env.DEV_BUILDS }}/build_and_test.sh --action build-for-testing | |
| - name: Test Without Building | |
| id: test-without-building | |
| if: github.event_name != 'push' | |
| run: ${{ env.DEV_BUILDS }}/build_and_test.sh --action test-without-building | |
| - name: Save XCTestProducts | |
| if: (cancelled() || failure()) && steps.cache-xctestproducts-restore.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v5 | |
| with: | |
| path: ${{ env.XCODE_TEST_PRODUCTS_PATH }} | |
| key: ${{ steps.cache-xctestproducts-restore.outputs.cache-primary-key }} | |
| - name: Log Code Coverage | |
| if: github.event_name != 'push' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| gh release download ${{ env.XCCOV_PRETTY_VERSION }} \ | |
| --repo DevKitOrganization/xccovPretty \ | |
| --pattern "xccovPretty-macos.tar.gz" \ | |
| -O - \ | |
| | tar -xz | |
| chmod +x xccovPretty | |
| xcrun xccov view --report .build/${XCODE_SCHEME}_test-without-building.xcresult --json \ | |
| | ./xccovPretty --github-comment \ | |
| > .build/xccovPretty-${{ matrix.platform }}.output | |
| - name: Upload Logs and XCResults | |
| if: success() || failure() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: Logs_and_XCResults-${{ matrix.platform }} | |
| path: | | |
| .build/*.log | |
| .build/*.xcresult | |
| include-hidden-files: true | |
| - name: Upload xccovPretty output | |
| if: github.event_name != 'push' | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: xccovPrettyOutput-${{ matrix.platform }} | |
| path: .build/xccovPretty-${{ matrix.platform }}.output | |
| include-hidden-files: true | |
| post-pr-comments: | |
| name: Post PR Comments | |
| needs: build-and-test | |
| if: ${{ github.event_name == 'pull_request' }} | |
| permissions: | |
| pull-requests: write | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download xccovPretty output | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: xccovPrettyOutput-macOS | |
| - name: Post Code Coverage Comment | |
| uses: thollander/actions-comment-pull-request@v3 | |
| with: | |
| file-path: xccovPretty-macOS.output | |
| comment-tag: codeCoverage-macOS |