Skip to content

Adding WASM support, Mise migration, swift-format, workflow updates, and openapi.yaml improvements #84

Adding WASM support, Mise migration, swift-format, workflow updates, and openapi.yaml improvements

Adding WASM support, Mise migration, swift-format, workflow updates, and openapi.yaml improvements #84

Workflow file for this run

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