mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-03 01:50:24 +08:00
* iOS CI * g2o hard-coded path * bump ios version * Fixed opencv 4.10.0 build on docker resolute
115 lines
3.7 KiB
YAML
115 lines
3.7 KiB
YAML
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
|
|
|
|
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 }}
|