// Intentionally doing a depth of 2 as libSession-util has it's own submodules (and libLokinet likely will as well) local clone_submodules = { name: 'Clone Submodules', commands: ['git fetch --tags', 'git submodule update --init --recursive --depth=2'] }; // cmake options for static deps mirror local ci_dep_mirror(want_mirror) = (if want_mirror then ' -DLOCAL_MIRROR=https://oxen.rocks/deps ' else ''); // Cocoapods // // Unfortunately Cocoapods has a dumb restriction which requires you to use UTF-8 for the // 'LANG' env var so we need to work around the with https://github.com/CocoaPods/CocoaPods/issues/6333 local install_cocoapods = { name: 'Install CocoaPods', commands: ['LANG=en_US.UTF-8 pod install'] }; // Load from the cached CocoaPods directory (to speed up the build) local load_cocoapods_cache = { name: 'Load CocoaPods Cache', commands: [ ||| while test -e /Users/drone/.cocoapods_cache.lock; do sleep 1 done |||, 'touch /Users/drone/.cocoapods_cache.lock', ||| if [[ -d /Users/drone/.cocoapods_cache ]]; then cp -r /Users/drone/.cocoapods_cache ./Pods fi |||, 'rm /Users/drone/.cocoapods_cache.lock' ] }; // Override the cached CocoaPods directory (to speed up the next build) local update_cocoapods_cache = { name: 'Update CocoaPods Cache', commands: [ ||| while test -e /Users/drone/.cocoapods_cache.lock; do sleep 1 done |||, 'touch /Users/drone/.cocoapods_cache.lock', ||| if [[ -d ./Pods ]]; then rm -rf /Users/drone/.cocoapods_cache cp -r ./Pods /Users/drone/.cocoapods_cache fi |||, 'rm /Users/drone/.cocoapods_cache.lock' ] }; [ // Unit tests { kind: 'pipeline', type: 'exec', name: 'Unit Tests', platform: { os: 'darwin', arch: 'amd64' }, steps: [ clone_submodules, load_cocoapods_cache, install_cocoapods, { name: 'Run Unit Tests', commands: [ 'mkdir build', 'NSUnbufferedIO=YES set -o pipefail && xcodebuild test -workspace Session.xcworkspace -scheme Session -destination "platform=iOS Simulator,name=iPhone 14" -destination "platform=iOS Simulator,name=iPhone 14 Pro Max" -parallel-testing-enabled YES -test-timeouts-enabled YES -maximum-test-execution-time-allowance 2 -collect-test-diagnostics never 2>&1 | ./Pods/xcbeautify/xcbeautify --is-ci --report junit --report-path ./build/reports --junit-report-filename junit2.xml' ], }, update_cocoapods_cache ], }, // Simulator build { kind: 'pipeline', type: 'exec', name: 'Simulator Build', platform: { os: 'darwin', arch: 'amd64' }, steps: [ clone_submodules, load_cocoapods_cache, install_cocoapods, { name: 'Build', commands: [ 'mkdir build', 'xcodebuild archive -workspace Session.xcworkspace -scheme Session -configuration "App Store Release" -sdk iphonesimulator -archivePath ./build/Session_sim.xcarchive -destination "generic/platform=iOS Simulator" | ./Pods/xcbeautify/xcbeautify --is-ci' ], }, update_cocoapods_cache, { name: 'Upload artifacts', environment: { SSH_KEY: { from_secret: 'SSH_KEY' } }, commands: [ './Scripts/drone-static-upload.sh' ] }, ], }, // AppStore build (generate an archive to be signed later) { kind: 'pipeline', type: 'exec', name: 'AppStore Build', platform: { os: 'darwin', arch: 'amd64' }, steps: [ clone_submodules, load_cocoapods_cache, install_cocoapods, { name: 'Build', commands: [ 'mkdir build', 'xcodebuild archive -workspace Session.xcworkspace -scheme Session -configuration "App Store Release" -sdk iphoneos -archivePath ./build/Session.xcarchive -destination "generic/platform=iOS" -allowProvisioningUpdates' ], }, update_cocoapods_cache, { name: 'Upload artifacts', environment: { SSH_KEY: { from_secret: 'SSH_KEY' } }, commands: [ './Scripts/drone-static-upload.sh' ] }, ], }, ]