Skip to content

Removed unneeded line #8417

Removed unneeded line

Removed unneeded line #8417

Workflow file for this run

name: iOS Build
on:
push:
paths:
- 'vcpkg/**'
- 'vcpkg.json'
- 'VCPKG_BASELINE'
- 'app/**'
- 'core/**'
- 'scripts/**'
- 'cmake/**'
- 'cmake_templates/**'
- 'CMakeLists.txt'
- '.github/workflows/ios.yml'
- '.github/secrets/ios/**'
release:
types:
- published
env:
CMAKE_VERSION: '3.31.6'
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
VCPKG_ROOT: '${{ github.workspace }}/vcpkg'
XC_VERSION: ${{ '16.4' }}
DEPLOYMENT_TARGET: '14.0'
TRIPLET: arm64-ios
IOS_PROVISIONING_PROFILE_UUID: 59aaa8d7-516a-4592-8c58-d7d1c1f81610
KEYCHAIN: ${{ 'inputapp.keychain' }}
concurrency:
group: ci-${{github.ref}}-ios
cancel-in-progress: true
jobs:
ios_build:
if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate '))
runs-on: macos-15
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: mm
- name: Install brew deps
run: |
brew uninstall cmake
brew install automake bison flex gnu-sed autoconf-archive libtool gettext lcov openssl create-dmg mono
brew install gnupg
echo $(brew --prefix bison)/bin >> $GITHUB_PATH
echo $(brew --prefix flex)/bin >> $GITHUB_PATH
echo $(brew --prefix gettext)/bin >> $GITHUB_PATH
- name: Install CMake and Ninja
uses: lukka/get-cmake@latest
with:
cmakeVersion: ${{ env.CMAKE_VERSION }}
- name: Setup XCode
uses: maxim-lobanov/setup-xcode@v1.6.0
with:
xcode-version: ${{ env.XC_VERSION }}
- name: ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
key: ccache-${{ env.TRIPLET }}
max-size: 200M
- name: Install vcpkg
shell: bash
run: |
mkdir -p "${{ env.VCPKG_ROOT }}"
cd "${{ env.VCPKG_ROOT }}"
git init
git remote add origin https://github.com/microsoft/vcpkg.git
git pull origin master
VCPKG_TAG=`cat ${{ github.workspace }}/mm/VCPKG_BASELINE`
git checkout ${VCPKG_TAG}
cd "${{ env.VCPKG_ROOT }}"
chmod +x ./bootstrap-vcpkg.sh
./bootstrap-vcpkg.sh
- name: Setup NuGet Credentials
shell: bash
run: |
mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | tail -n 1` \
sources add \
-source "https://nuget.pkg.github.com/merginmaps/index.json" \
-storepasswordincleartext \
-name "GitHub" \
-username "mergin-maps-bot" \
-password "${{ secrets.MERGIN_MAPS_BOT_GITHUB_TOKEN }}"
mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | tail -n 1` \
setapikey "${{ secrets.MERGIN_MAPS_BOT_GITHUB_TOKEN }}" \
-source "https://nuget.pkg.github.com/merginmaps/index.json"
- name: Extract Mergin API_KEY
env:
MERGINSECRETS_DECRYPT_KEY: ${{ secrets.MERGINSECRETS_DECRYPT_KEY }}
run: |
cd mm/core/
$HOMEBREW_PREFIX/bin/openssl \
aes-256-cbc -d \
-in merginsecrets.cpp.enc \
-out merginsecrets.cpp \
-k "$MERGINSECRETS_DECRYPT_KEY" \
-md md5
- name: Configure Keychain
run: |
security create-keychain -p "" "$KEYCHAIN"
security list-keychains -s "$KEYCHAIN"
security default-keychain -s "$KEYCHAIN"
security unlock-keychain -p "" "$KEYCHAIN"
security set-keychain-settings
security list-keychains
- name: Configure Code Signing
env:
IOS_GPG_KEY: ${{ secrets.IOS_GPG_KEY }}
IOS_CERT_KEY: ${{ secrets.IOS_CERT_KEY }}
run: |
gpg --quiet --batch --yes --decrypt --passphrase="$IOS_GPG_KEY" --output ./mm/.github/secrets/ios/Certificates_ios_dist.p12 ./mm/.github/secrets/ios/Certificates_ios_dist.p12.gpg
security import "./mm/.github/secrets/ios/Certificates_ios_dist.p12" -k "$KEYCHAIN" -P "$IOS_CERT_KEY" -A
security set-key-partition-list -S apple-tool:,apple: -s -k "" "$KEYCHAIN"
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
gpg --quiet --batch --yes --decrypt --passphrase="$IOS_GPG_KEY" --output ./mm/.github/secrets/ios/LutraConsultingLtdInputAppStore.mobileprovision ./mm/.github/secrets/ios/LutraConsultingLtdInputAppStore.mobileprovision.gpg
cp ./mm/.github/secrets/ios/LutraConsultingLtdInputAppStore.mobileprovision ~/Library/MobileDevice/Provisioning\ Profiles/${IOS_PROVISIONING_PROFILE_UUID}.mobileprovision
- name: Calculate a build number
env:
OFFFSET: 10 # offset for build number - due to previous builds ~ new builds must always have a higher number
run: |
BUILD_NUM=$GITHUB_RUN_NUMBER$((GITHUB_RUN_ATTEMPT + OFFFSET))
TIMESTAMP=`date "+%y.%-m"`
CF_BUNDLE_VERSION=${TIMESTAMP}.${BUILD_NUM}
echo "MM_VERSION_CODE=${CF_BUNDLE_VERSION}" >> $GITHUB_ENV
echo "Build number: ${CF_BUNDLE_VERSION}"
# add build number to summary
echo ":rocket: Build number: ${CF_BUNDLE_VERSION}" >> $GITHUB_STEP_SUMMARY
- name: Create build system with cmake
run: |
mkdir -p install-mm
mkdir -p build-mm
cd build-mm
# run cmake
cmake \
-DIOS_USE_PRODUCTION_SIGNING=TRUE \
-DVCPKG_HOST_TRIPLET=arm64-osx \
-DVCPKG_TARGET_TRIPLET=${{ env.TRIPLET }} \
-DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake \
-D ENABLE_BITCODE=OFF \
-D ENABLE_ARC=ON \
-D CMAKE_CXX_VISIBILITY_PRESET=hidden \
-D CMAKE_SYSTEM_NAME=iOS \
-D CMAKE_SYSTEM_PROCESSOR=aarch64 \
-D CMAKE_OSX_DEPLOYMENT_TARGET=${{ env.DEPLOYMENT_TARGET }} \
-DIOS=TRUE \
-DUSE_MM_SERVER_API_KEY=TRUE \
-DUSE_KEYCHAIN=No \
-DCMAKE_INSTALL_PREFIX:PATH=../install-mm \
-G "Xcode" \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-S ${{ github.workspace }}/mm \
-B ./
- name: Build app (release)
run: |
cd build-mm
xcodebuild \
-project MerginMaps.xcodeproj/ \
-scheme MerginMaps \
-sdk iphoneos \
-configuration Release \
archive -archivePath MerginMaps.xcarchive \
"OTHER_CODE_SIGN_FLAGS=--keychain '$KEYCHAIN'"
- name: Create package
run: |
INPUT_DIR=`pwd`/mm
cd build-mm
xcodebuild \
-archivePath MerginMaps.xcarchive \
-exportOptionsPlist $INPUT_DIR/scripts/ci/ios/exportOptions.plist \
-exportPath $PWD \
-allowProvisioningUpdates \
-exportArchive
- name: Upload .ipa to TestFlight
env:
INPUTAPP_BOT_APPLEID_PASS: ${{ secrets.INPUTAPP_BOT_APPLEID_PASS }}
INPUTAPP_BOT_APPLEID_USER: ${{ secrets.INPUTAPP_BOT_APPLEID_USER }}
INPUTAPP_BOT_GITHUB_TOKEN: ${{ secrets.INPUTAPP_BOT_GITHUB_TOKEN }}
if: success()
run: |
CF_BUNDLE_VERSION=`/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" build-mm/app/CMakeFiles/MerginMaps.dir/Info.plist`
echo "Publishing ios ${CF_BUNDLE_VERSION}"
xcrun altool --upload-app -t ios -f build-mm/MerginMaps.ipa -u "$INPUTAPP_BOT_APPLEID_USER" -p "$INPUTAPP_BOT_APPLEID_PASS" --verbose