name: iOS Check on: workflow_dispatch: # Manual trigger push: branches: - main jobs: ios-check: name: Build iOS runs-on: macos-15 env: DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII. LANGUAGE: en_US.UTF-8 LC_ALL: en_US.UTF-8 TEST_RESULTS_BUNDLE_NAME: CoMaps-Test-Results SIMULATOR_DEVICE: 'iPhone 16 Pro Max' strategy: fail-fast: false matrix: buildType: [Debug, Release] # Cancels previous jobs if the same branch or PR was updated again. concurrency: group: ${{ github.workflow }}-${{ matrix.buildType }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true steps: - name: Install dependencies run: | brew install qt \ optipng pip3 install "protobuf<3.21" --break-system-packages - name: Checkout sources uses: actions/checkout@v4 - name: Parallel submodules checkout shell: bash run: git submodule update --depth 1 --init --recursive --jobs=$(($(sysctl -n hw.logicalcpu) * 20)) - name: Configure repository shell: bash run: ./configure.sh - name: Configure XCode cache uses: irgaly/xcode-cache@v1 with: key: xcode-cache-deriveddata-${{ github.workflow }}-${{ matrix.buildType }}-${{ github.sha }} restore-keys: xcode-cache-deriveddata-${{ github.workflow }}-${{ matrix.buildType }} - name: Build and Run Tests (Debug) if: matrix.buildType == 'Debug' shell: bash run: | # Start sim before the build to make sure it's booted when tests start. xcrun simctl boot "${{ env.SIMULATOR_DEVICE }}" || true xcrun simctl bootstatus "${{ env.SIMULATOR_DEVICE }}" -b xcodebuild test \ -workspace xcode/CoMaps.xcworkspace \ -scheme CoMaps \ -configuration Debug \ -sdk iphonesimulator \ -destination "platform=iOS Simulator,name=${{ env.SIMULATOR_DEVICE }},OS=latest" \ -quiet \ -resultBundlePath ${{ env.TEST_RESULTS_BUNDLE_NAME }}.xcresult \ CODE_SIGNING_REQUIRED=NO \ CODE_SIGNING_ALLOWED=NO - name: Upload Test Results On Failure (Debug) if: ${{ matrix.buildType == 'Debug' && failure() }} uses: actions/upload-artifact@v4 with: name: ${{ env.TEST_RESULTS_BUNDLE_NAME }}-${{ github.run_number }}.xcresult path: ${{ env.TEST_RESULTS_BUNDLE_NAME }}.xcresult if-no-files-found: error - name: Build (Release) if: matrix.buildType == 'Release' shell: bash run: | xcodebuild build \ -workspace xcode/CoMaps.xcworkspace \ -scheme CoMaps \ -configuration Release \ -destination 'generic/platform=iOS' \ -quiet \ CODE_SIGNING_REQUIRED=NO \ CODE_SIGNING_ALLOWED=NO