Adding WASM support, Mise migration, swift-format, workflow updates, and openapi.yaml improvements #84
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: AviaryInsights | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - 'v[0-9]+.[0-9]+.[0-9]+' | |
| paths-ignore: | |
| - '**.md' | |
| - 'docs/**' | |
| - 'LICENSE' | |
| - '.github/ISSUE_TEMPLATE/**' | |
| pull_request: | |
| paths-ignore: | |
| - '**.md' | |
| - 'docs/**' | |
| - 'LICENSE' | |
| - '.github/ISSUE_TEMPLATE/**' | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }} | |
| cancel-in-progress: true | |
| env: | |
| PACKAGE_NAME: AviaryInsights | |
| jobs: | |
| configure: | |
| name: Configure Matrix | |
| runs-on: ubuntu-latest | |
| outputs: | |
| full-matrix: ${{ steps.matrix.outputs.full-matrix }} | |
| ubuntu-os: ${{ steps.matrix.outputs.ubuntu-os }} | |
| ubuntu-swift: ${{ steps.matrix.outputs.ubuntu-swift }} | |
| ubuntu-type: ${{ steps.matrix.outputs.ubuntu-type }} | |
| steps: | |
| - id: check | |
| name: Determine matrix scope | |
| run: | | |
| FULL=false | |
| REF="${{ github.ref }}" | |
| EVENT="${{ github.event_name }}" | |
| BASE_REF="${{ github.base_ref }}" | |
| if [[ "$REF" == "refs/heads/main" ]]; then | |
| FULL=true | |
| elif [[ "$REF" =~ ^refs/heads/v?[0-9]+\.[0-9]+\.[0-9]+ ]]; then | |
| FULL=true | |
| elif [[ "$EVENT" == "workflow_dispatch" ]]; then | |
| FULL=true | |
| elif [[ "$EVENT" == "pull_request" ]]; then | |
| if [[ "$BASE_REF" == "main" || "$BASE_REF" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+ ]]; then | |
| FULL=true | |
| fi | |
| fi | |
| echo "full=$FULL" >> "$GITHUB_OUTPUT" | |
| - id: matrix | |
| name: Build matrix values | |
| run: | | |
| if [[ "${{ steps.check.outputs.full }}" == "true" ]]; then | |
| echo 'full-matrix=true' >> "$GITHUB_OUTPUT" | |
| echo 'ubuntu-os=["noble","jammy"]' >> "$GITHUB_OUTPUT" | |
| echo 'ubuntu-swift=[{"version":"6.1"},{"version":"6.2"},{"version":"6.3"}]' >> "$GITHUB_OUTPUT" | |
| echo 'ubuntu-type=["","wasm","wasm-embedded"]' >> "$GITHUB_OUTPUT" | |
| else | |
| echo 'full-matrix=false' >> "$GITHUB_OUTPUT" | |
| echo 'ubuntu-os=["noble"]' >> "$GITHUB_OUTPUT" | |
| echo 'ubuntu-swift=[{"version":"6.3"}]' >> "$GITHUB_OUTPUT" | |
| echo 'ubuntu-type=[""]' >> "$GITHUB_OUTPUT" | |
| fi | |
| build-ubuntu: | |
| name: Build on Ubuntu | |
| needs: configure | |
| runs-on: ubuntu-latest | |
| container: swift:${{ matrix.swift.version }}-${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: ${{ fromJSON(needs.configure.outputs.ubuntu-os) }} | |
| swift: ${{ fromJSON(needs.configure.outputs.ubuntu-swift) }} | |
| type: ${{ fromJSON(needs.configure.outputs.ubuntu-type) }} | |
| exclude: | |
| - swift: {version: "6.1"} | |
| type: wasm | |
| - swift: {version: "6.1"} | |
| type: wasm-embedded | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: brightdigit/swift-build@v1 | |
| with: | |
| type: ${{ matrix.type }} | |
| - name: Process Coverage | |
| if: ${{ matrix.type == '' }} | |
| uses: sersoft-gmbh/swift-coverage-action@v4 | |
| with: | |
| fail-on-empty-output: true | |
| - name: Upload coverage reports to Codecov | |
| if: ${{ matrix.type == '' }} | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| flags: spm,${{ matrix.os }},${{ matrix.swift.version }} | |
| build-macos: | |
| name: Build on macOS | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # SPM Build Matrix | |
| - os: macos-14 | |
| xcode: "/Applications/Xcode_15.0.1.app" | |
| - os: macos-14 | |
| xcode: "/Applications/Xcode_15.1.app" | |
| - os: macos-14 | |
| xcode: "/Applications/Xcode_15.2.app" | |
| - os: macos-15 | |
| xcode: "/Applications/Xcode_16.1.app" | |
| - os: macos-15 | |
| xcode: "/Applications/Xcode_16.2.app" | |
| # iOS Build Matrix | |
| - type: ios | |
| os: macos-14 | |
| xcode: "/Applications/Xcode_15.0.1.app" | |
| deviceName: "iPhone 15" | |
| osVersion: "17.0.1" | |
| download-platform: true | |
| - type: ios | |
| os: macos-14 | |
| xcode: "/Applications/Xcode_15.1.app" | |
| deviceName: "iPhone 15 Pro" | |
| osVersion: "17.2" | |
| download-platform: true | |
| - type: ios | |
| os: macos-14 | |
| xcode: "/Applications/Xcode_15.2.app" | |
| deviceName: "iPhone 15 Pro Max" | |
| osVersion: "17.2" | |
| download-platform: true | |
| - type: ios | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.1.app" | |
| deviceName: "iPhone 16" | |
| osVersion: "18.1" | |
| download-platform: true | |
| - type: ios | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.2.app" | |
| deviceName: "iPhone 16 Pro" | |
| osVersion: "18.2" | |
| download-platform: true | |
| # watchOS Build Matrix | |
| - type: watchos | |
| os: macos-14 | |
| xcode: "/Applications/Xcode_15.0.1.app" | |
| deviceName: "Apple Watch Series 9 (41mm)" | |
| osVersion: "10.0" | |
| download-platform: true | |
| - type: watchos | |
| os: macos-14 | |
| xcode: "/Applications/Xcode_15.1.app" | |
| deviceName: "Apple Watch Series 9 (45mm)" | |
| osVersion: "10.2" | |
| download-platform: true | |
| - type: watchos | |
| os: macos-14 | |
| xcode: "/Applications/Xcode_15.2.app" | |
| deviceName: "Apple Watch Ultra 2 (49mm)" | |
| osVersion: "10.2" | |
| download-platform: true | |
| - type: watchos | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.1.app" | |
| deviceName: "Apple Watch Ultra 2 (49mm)" | |
| osVersion: "11.1" | |
| download-platform: true | |
| - type: watchos | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.2.app" | |
| deviceName: "Apple Watch Ultra 2 (49mm)" | |
| osVersion: "11.2" | |
| download-platform: true | |
| # visionOS Build Matrix | |
| - type: visionos | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.2.app" | |
| deviceName: "Apple Vision Pro" | |
| osVersion: "2.1" | |
| download-platform: true | |
| # tvOS Build Matrix | |
| - type: tvos | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.2.app" | |
| deviceName: "Apple TV 4K (3rd generation)" | |
| osVersion: "18.2" | |
| download-platform: true | |
| # macOS 26 / Xcode 26.4 SPM Build | |
| - os: macos-26 | |
| xcode: "/Applications/Xcode_26.4.app" | |
| # macOS 26 iOS Build | |
| - type: ios | |
| os: macos-26 | |
| xcode: "/Applications/Xcode_26.4.app" | |
| deviceName: "iPhone 16 Pro" | |
| osVersion: "26.4" | |
| download-platform: true | |
| # macOS 26 watchOS Build | |
| - type: watchos | |
| os: macos-26 | |
| xcode: "/Applications/Xcode_26.4.app" | |
| deviceName: "Apple Watch Ultra 2 (49mm)" | |
| osVersion: "26.4" | |
| download-platform: true | |
| # macOS 26 visionOS Build | |
| - type: visionos | |
| os: macos-26 | |
| xcode: "/Applications/Xcode_26.4.app" | |
| deviceName: "Apple Vision Pro" | |
| osVersion: "26.4" | |
| download-platform: true | |
| # macOS 26 tvOS Build | |
| - type: tvos | |
| os: macos-26 | |
| xcode: "/Applications/Xcode_26.4.app" | |
| deviceName: "Apple TV 4K (3rd generation)" | |
| osVersion: "26.4" | |
| download-platform: true | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build and Test | |
| uses: brightdigit/swift-build@v1 | |
| with: | |
| type: ${{ matrix.type }} | |
| xcode: ${{ matrix.xcode }} | |
| deviceName: ${{ matrix.deviceName }} | |
| osVersion: ${{ matrix.osVersion }} | |
| download-platform: ${{ matrix.download-platform }} | |
| scheme: ${{ env.PACKAGE_NAME }} | |
| - name: Process Coverage | |
| uses: sersoft-gmbh/swift-coverage-action@v4 | |
| with: | |
| fail-on-empty-output: true | |
| search-paths: | | |
| ./.build | |
| /Users/runner/work/_temp/DerivedData | |
| - name: Upload Coverage | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| flags: ${{ matrix.type && format('{0}{1}', matrix.type, matrix.osVersion) || 'spm' }} | |
| build-android: | |
| name: Build on Android | |
| needs: [configure] | |
| if: needs.configure.outputs.full-matrix == 'true' | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| swift: | |
| - version: "6.2" | |
| - version: "6.3" | |
| android-api-level: [33, 34, 35, 36] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: brightdigit/swift-build@v1 | |
| with: | |
| type: android | |
| android-swift-version: ${{ matrix.swift.version }} | |
| android-api-level: ${{ matrix.android-api-level }} | |
| android-run-tests: true | |
| build-windows: | |
| name: Build on Windows | |
| needs: [configure] | |
| if: needs.configure.outputs.full-matrix == 'true' | |
| runs-on: ${{ matrix.runs-on }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| runs-on: [windows-2022, windows-2025] | |
| swift: | |
| - version: swift-6.3-release | |
| build: 6.3-RELEASE | |
| - version: swift-6.2-release | |
| build: 6.2-RELEASE | |
| - version: swift-6.1-release | |
| build: 6.1-RELEASE | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Enable git symlinks | |
| shell: pwsh | |
| run: git config --global core.symlinks true | |
| - uses: brightdigit/swift-build@v1 | |
| with: | |
| windows-swift-version: ${{ matrix.swift.version }} | |
| windows-swift-build: ${{ matrix.swift.build }} | |
| lint: | |
| name: Linting | |
| if: ${{ !cancelled() && !failure() }} | |
| runs-on: ubuntu-latest | |
| needs: [build-ubuntu, build-macos, build-android, build-windows] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: jdx/mise-action@v4 | |
| with: | |
| install: true | |
| cache: true | |
| - name: Lint | |
| run: CI=true LINT_MODE=STRICT ./Scripts/lint.sh |