[ECO-4948] [DRAFT] Spec complete for Presence #407
This file contains 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-15 | |
# 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 16 or above | |
- uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: 16 | |
# 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-15 | |
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: 16 | |
- name: Spec coverage | |
run: swift run BuildTool spec-coverage | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
generate-matrices: | |
runs-on: macos-15 | |
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: 16 | |
- id: generation-step | |
run: swift run BuildTool generate-matrices >> $GITHUB_OUTPUT | |
check-spm: | |
name: SPM (Xcode ${{ matrix.tooling.xcodeVersion }}) | |
runs-on: macos-15 | |
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 | |
check-xcode: | |
name: Xcode, ${{matrix.platform}} (Xcode ${{ matrix.tooling.xcodeVersion }}) | |
runs-on: macos-15 | |
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 and run tests | |
run: swift run BuildTool build-and-test-library --platform ${{ matrix.platform }} | |
check-example-app: | |
name: Example app, ${{matrix.platform}} (Xcode ${{ matrix.tooling.xcodeVersion }}) | |
runs-on: macos-15 | |
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 }} | |
# 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 | |
- check-spm | |
- check-xcode | |
- check-example-app | |
steps: | |
- name: No-op | |
run: "true" |