[ECO-5102] Updated README #613
Workflow file for this run
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 }} | |
# 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 }} | |
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" |