Parallelize cloud generation in export/view clouds dialog and rtabmap-export #201
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: iOS | |
| on: | |
| push: | |
| branches: | |
| - master | |
| paths: &ios_paths | |
| - '.github/workflows/ios.yml' | |
| - 'app/ios/**' | |
| - 'app/android/jni/**' | |
| - 'corelib/**' | |
| - 'utilite/**' | |
| - 'cmake_modules/**' | |
| - 'CMakeLists.txt' | |
| pull_request: | |
| branches: | |
| - '**' | |
| paths: *ios_paths | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| env: | |
| # Pre-built iOS dependencies (content of app/ios/RTABMapApp/Libraries, generated by install_deps.sh). | |
| # Bump this when the dependency set changes (must match the Xcode toolchain below). | |
| DEPS_URL: https://github.com/introlab/rtabmap/releases/download/0.23.1/libraries-ios-xcode26.5.zip | |
| XCODE_VERSION: '26.5' | |
| jobs: | |
| build: | |
| name: build-ios | |
| # macos-26 (Tahoe) ships Xcode 26.x, matching the toolchain used to build the prebuilt libraries. | |
| runs-on: macos-26 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Select Xcode ${{ env.XCODE_VERSION }} | |
| uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ env.XCODE_VERSION }} | |
| - name: Versions | |
| run: | | |
| xcodebuild -version | |
| cmake --version || brew install cmake | |
| - name: Cache prebuilt dependencies archive | |
| id: deps-cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: deps.zip | |
| # Keyed on the archive URL (release tag + filename), so the cache is | |
| # reused until DEPS_URL is bumped, regardless of other workflow edits. | |
| key: ${{ runner.os }}-ios-deps-${{ env.DEPS_URL }} | |
| - name: Download prebuilt dependencies | |
| if: steps.deps-cache.outputs.cache-hit != 'true' | |
| run: curl -L "$DEPS_URL" -o deps.zip | |
| - name: Extract dependencies into Libraries | |
| run: | | |
| set -eux | |
| mkdir -p app/ios/RTABMapApp/Libraries | |
| rm -rf deps_extract && mkdir -p deps_extract | |
| unzip -q deps.zip -d deps_extract | |
| # The archive holds the *content* of the Libraries folder (include/ lib/ share/), | |
| # but tolerate an extra top-level Libraries/ wrapper just in case. | |
| if [ -d deps_extract/Libraries ]; then | |
| SRC=deps_extract/Libraries | |
| else | |
| SRC=deps_extract | |
| fi | |
| cp -R "$SRC"/. app/ios/RTABMapApp/Libraries/ | |
| test -d app/ios/RTABMapApp/Libraries/include | |
| test -d app/ios/RTABMapApp/Libraries/lib | |
| - name: Build rtabmap core (third-party deps are skipped, already provided by the archive) | |
| working-directory: app/ios/RTABMapApp | |
| run: ./install_deps.sh | |
| - name: Build RTABMapApp | |
| run: | | |
| xcodebuild \ | |
| -project app/ios/RTABMapApp.xcodeproj \ | |
| -scheme RTABMapApp \ | |
| -configuration Release \ | |
| -sdk iphoneos \ | |
| -destination 'generic/platform=iOS' \ | |
| -derivedDataPath build \ | |
| CODE_SIGNING_ALLOWED=NO \ | |
| CODE_SIGNING_REQUIRED=NO \ | |
| CODE_SIGN_IDENTITY="" \ | |
| DEVELOPMENT_TEAM="" \ | |
| build | |
| - name: Package app (unsigned .ipa) | |
| run: | | |
| set -eux | |
| APP_DIR="build/Build/Products/Release-iphoneos" | |
| rm -rf Payload && mkdir Payload | |
| cp -R "$APP_DIR/RTABMapApp.app" Payload/ | |
| # Unsigned .ipa: not installable as-is, but ready for later (re)signing. | |
| zip -q -r RTABMapApp-unsigned.ipa Payload | |
| - name: Upload app artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: RTABMapApp-ios-unsigned | |
| path: RTABMapApp-unsigned.ipa | |
| compression-level: 0 | |
| if-no-files-found: error | |
| retention-days: ${{ github.event_name == 'pull_request' && 1 || 90 }} |