Adding WASM support, Mise migration, swift-format, workflow updates, and openapi.yaml improvements #104
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: | |
| 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 | |
| - id: build | |
| uses: brightdigit/swift-build@v1 | |
| with: | |
| type: ${{ matrix.type }} | |
| wasm-swift-flags: >- | |
| -Xcc -D_WASI_EMULATED_SIGNAL | |
| -Xcc -D_WASI_EMULATED_MMAN | |
| -Xlinker -lwasi-emulated-signal | |
| -Xlinker -lwasi-emulated-mman | |
| - name: Install curl for Codecov | |
| if: steps.build.outputs.contains-code-coverage == 'true' | |
| run: | | |
| apt-get update | |
| apt-get install -y curl | |
| - name: Process Coverage | |
| if: ${{ steps.build.outputs.contains-code-coverage == 'true' }} | |
| uses: sersoft-gmbh/swift-coverage-action@v5 | |
| with: | |
| fail-on-empty-output: true | |
| - name: Upload coverage reports to Codecov | |
| if: ${{ steps.build.outputs.contains-code-coverage == 'true' }} | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| flags: spm,${{ matrix.os }},${{ matrix.swift.version }} | |
| build-macos: | |
| name: Build on macOS | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| include: | |
| # macOS 15 / Xcode 16.4 SPM Build | |
| - os: macos-15 | |
| xcode: "/Applications/Xcode_16.4.app" | |
| - type: macos | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.4.app" | |
| # macOS 15 iOS Build | |
| - type: ios | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.4.app" | |
| deviceName: "iPhone 16" | |
| osVersion: "18.5" | |
| download-platform: true | |
| # macOS 15 watchOS Build | |
| - type: watchos | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.4.app" | |
| deviceName: "Apple Watch Ultra 2 (49mm)" | |
| osVersion: "11.5" | |
| download-platform: true | |
| # macOS 15 visionOS Build | |
| - type: visionos | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.4.app" | |
| deviceName: "Apple Vision Pro" | |
| osVersion: "2.5" | |
| download-platform: true | |
| # macOS 15 tvOS Build | |
| - type: tvos | |
| os: macos-15 | |
| xcode: "/Applications/Xcode_16.4.app" | |
| deviceName: "Apple TV 4K (3rd generation)" | |
| osVersion: "18.5" | |
| download-platform: true | |
| # macOS 26 / Xcode 26.4 SPM Build | |
| - os: macos-26 | |
| xcode: "/Applications/Xcode_26.4.app" | |
| - type: macos | |
| 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 17" | |
| 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 3 (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 | |
| - id: build | |
| 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 | |
| if: ${{ steps.build.outputs.contains-code-coverage == 'true' }} | |
| uses: sersoft-gmbh/swift-coverage-action@v5 | |
| with: | |
| fail-on-empty-output: true | |
| search-paths: | | |
| ./.build | |
| /Users/runner/work/_temp/DerivedData | |
| - name: Upload Coverage | |
| if: ${{ steps.build.outputs.contains-code-coverage == 'true' }} | |
| uses: codecov/codecov-action@v6 | |
| 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: | |
| 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: | |
| 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 | |
| - uses: brightdigit/swift-build@v1 | |
| with: | |
| windows-swift-version: ${{ matrix.swift.version }} | |
| windows-swift-build: ${{ matrix.swift.build }} | |
| lint: | |
| name: Linting | |
| if: ${{ always() && !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 |