feat: [JWT-5] bind each Delta to the user that owns it #1144
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: iOS CI | |
| on: | |
| pull_request: | |
| branches: | |
| - '**' | |
| paths-ignore: | |
| - '.github/**' | |
| - 'README.md' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| KMP_XCFRAMEWORK_PATH: OneSignal-KMP-SDK/kmp/build/XCFrameworks/release/OneSignalKMP.xcframework | |
| jobs: | |
| lint: | |
| name: Swift Lint | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout OneSignal-iOS-SDK | |
| uses: actions/checkout@v7 | |
| - name: Run Swift Lint | |
| uses: cirruslabs/swiftlint-action@v1 | |
| with: | |
| version: latest | |
| kmp-xcframework: | |
| name: Build OneSignalKMP XCFramework | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout OneSignal-iOS-SDK | |
| uses: actions/checkout@v7 | |
| with: | |
| submodules: recursive | |
| - name: Create KMP cache key | |
| id: kmp | |
| run: | | |
| kmp_sha="$(git rev-parse HEAD:OneSignal-KMP-SDK)" | |
| xcode_hash="$(xcodebuild -version | shasum -a 256 | awk '{print $1}')" | |
| echo "cache-key=kmp-xcframework-${{ runner.os }}-${{ runner.arch }}-${xcode_hash}-${kmp_sha}" >> "$GITHUB_OUTPUT" | |
| - name: Restore OneSignalKMP XCFramework | |
| id: kmp-cache | |
| uses: actions/cache/restore@v6 | |
| with: | |
| path: ${{ env.KMP_XCFRAMEWORK_PATH }} | |
| key: ${{ steps.kmp.outputs.cache-key }} | |
| - name: Setup JDK 17 | |
| if: steps.kmp-cache.outputs.cache-hit != 'true' | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: "17" | |
| - name: Setup Gradle | |
| if: steps.kmp-cache.outputs.cache-hit != 'true' | |
| uses: gradle/actions/setup-gradle@v6 | |
| - name: Assemble OneSignalKMP XCFramework | |
| if: steps.kmp-cache.outputs.cache-hit != 'true' | |
| run: | | |
| iOS_SDK/OneSignalSDK/build_kmp_xcframework.sh \ | |
| :kmp:assembleOneSignalKMPReleaseXCFramework | |
| - name: Save OneSignalKMP XCFramework | |
| if: steps.kmp-cache.outputs.cache-hit != 'true' | |
| uses: actions/cache/save@v6 | |
| with: | |
| path: ${{ env.KMP_XCFRAMEWORK_PATH }} | |
| key: ${{ steps.kmp.outputs.cache-key }} | |
| - name: Package OneSignalKMP XCFramework | |
| run: | | |
| tar -czf "$RUNNER_TEMP/OneSignalKMP.xcframework.tar.gz" \ | |
| -C "$(dirname "$KMP_XCFRAMEWORK_PATH")" \ | |
| "$(basename "$KMP_XCFRAMEWORK_PATH")" | |
| - name: Upload OneSignalKMP XCFramework | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: OneSignalKMP-XCFramework | |
| path: ${{ runner.temp }}/OneSignalKMP.xcframework.tar.gz | |
| retention-days: 1 | |
| ios-simulator: | |
| name: Build and Test using any available iPhone simulator | |
| runs-on: macos-latest | |
| needs: kmp-xcframework | |
| steps: | |
| - name: Checkout OneSignal-iOS-SDK | |
| uses: actions/checkout@v7 | |
| - name: Download OneSignalKMP XCFramework | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: OneSignalKMP-XCFramework | |
| path: ${{ runner.temp }} | |
| - name: Extract OneSignalKMP XCFramework | |
| run: | | |
| mkdir -p "$(dirname "$KMP_XCFRAMEWORK_PATH")" | |
| tar -xzf "$RUNNER_TEMP/OneSignalKMP.xcframework.tar.gz" \ | |
| -C "$(dirname "$KMP_XCFRAMEWORK_PATH")" | |
| - name: Select iPhone simulator | |
| id: simulator | |
| run: | | |
| runtime_id="$(xcrun simctl list runtimes available --json | jq -r \ | |
| '[.runtimes[] | select(.platform == "iOS")] | sort_by(.version | split(".") | map(tonumber)) | last.identifier')" | |
| device_id="$(xcrun simctl list devices available --json | jq -r --arg runtime "$runtime_id" \ | |
| '.devices[$runtime] | map(select(.name | startswith("iPhone"))) | first.udid')" | |
| if [[ -z "$device_id" || "$device_id" == "null" ]]; then | |
| echo "No available iPhone simulator found" >&2 | |
| exit 1 | |
| fi | |
| echo "device-id=$device_id" >> "$GITHUB_OUTPUT" | |
| - name: Build | |
| env: | |
| scheme: ${{ 'UnitTestApp' }} | |
| file_to_build: ${{ 'iOS_SDK/OneSignalSDK/OneSignal.xcodeproj' }} | |
| filetype_parameter: ${{ 'project' }} | |
| run: | | |
| xcodebuild build-for-testing \ | |
| -quiet \ | |
| -scheme "$scheme" \ | |
| -"$filetype_parameter" "$file_to_build" \ | |
| -destination "generic/platform=iOS Simulator" \ | |
| -enableCodeCoverage NO \ | |
| ARCHS=arm64 \ | |
| ONLY_ACTIVE_ARCH=YES | |
| - name: Start simulator boot | |
| env: | |
| device_id: ${{ steps.simulator.outputs.device-id }} | |
| run: | | |
| device_state="$(xcrun simctl list devices --json | jq -r --arg device "$device_id" \ | |
| '[.devices[][] | select(.udid == $device)] | first.state')" | |
| if [[ "$device_state" != "Booted" ]]; then | |
| xcrun simctl boot "$device_id" | |
| fi | |
| - name: Wait for simulator boot | |
| env: | |
| device_id: ${{ steps.simulator.outputs.device-id }} | |
| run: xcrun simctl bootstatus "$device_id" -b | |
| - name: Test | |
| env: | |
| scheme: ${{ 'UnitTestApp' }} | |
| test_plan: ${{ 'UnitTestApp_TestPlan_Reduced' }} | |
| platform: ${{ 'iOS Simulator' }} | |
| file_to_build: ${{ 'iOS_SDK/OneSignalSDK/OneSignal.xcodeproj' }} | |
| filetype_parameter: ${{ 'project' }} | |
| device_id: ${{ steps.simulator.outputs.device-id }} | |
| run: | | |
| xcodebuild test-without-building \ | |
| -quiet \ | |
| -scheme "$scheme" \ | |
| -testPlan "$test_plan" \ | |
| -"$filetype_parameter" "$file_to_build" \ | |
| -destination "platform=$platform,id=$device_id,arch=arm64" \ | |
| -maximum-parallel-testing-workers 1 \ | |
| -enableCodeCoverage NO | |
| catalyst: | |
| name: KMP logger Mac Catalyst integration | |
| runs-on: macos-latest | |
| needs: kmp-xcframework | |
| steps: | |
| - name: Checkout OneSignal-iOS-SDK | |
| uses: actions/checkout@v7 | |
| - name: Download OneSignalKMP XCFramework | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: OneSignalKMP-XCFramework | |
| path: ${{ runner.temp }} | |
| - name: Extract OneSignalKMP XCFramework | |
| run: | | |
| mkdir -p "$(dirname "$KMP_XCFRAMEWORK_PATH")" | |
| tar -xzf "$RUNNER_TEMP/OneSignalKMP.xcframework.tar.gz" \ | |
| -C "$(dirname "$KMP_XCFRAMEWORK_PATH")" | |
| - name: Archive OneSignalFramework for Catalyst | |
| run: | | |
| xcodebuild archive \ | |
| -scheme OneSignalFramework \ | |
| -configuration Release \ | |
| -project iOS_SDK/OneSignalSDK/OneSignal.xcodeproj \ | |
| -destination 'generic/platform=macOS,variant=Mac Catalyst' \ | |
| -archivePath "$RUNNER_TEMP/OneSignalFramework-Catalyst.xcarchive" \ | |
| SKIP_INSTALL=NO \ | |
| BUILD_LIBRARY_FOR_DISTRIBUTION=YES \ | |
| CODE_SIGN_IDENTITY= \ | |
| CODE_SIGNING_REQUIRED=NO \ | |
| CODE_SIGNING_ALLOWED=NO | |
| - name: Run KMP logger Catalyst host | |
| run: | | |
| frameworks="$RUNNER_TEMP/OneSignalFramework-Catalyst.xcarchive/Products/Library/Frameworks" | |
| host="$RUNNER_TEMP/CatalystLoggerHost" | |
| xcrun --sdk macosx swiftc \ | |
| -target "$(uname -m)-apple-ios14.0-macabi" \ | |
| -F "$frameworks" \ | |
| -framework OneSignalOSCore \ | |
| -framework OneSignalCore \ | |
| -Xlinker -rpath \ | |
| -Xlinker "$frameworks" \ | |
| iOS_SDK/OneSignalSDK/CatalystLoggerHost/main.swift \ | |
| -o "$host" | |
| DYLD_FRAMEWORK_PATH="$frameworks" "$host" |