From db8a70c8a5988067219d31a9ab5db91ce042990a Mon Sep 17 00:00:00 2001 From: Jamie Ruderman Date: Tue, 2 Jun 2026 11:18:28 -0700 Subject: [PATCH 1/2] ci(ios): bump to Xcode 26 / macOS 15 for iOS 26 SDK requirement --- .github/workflows/build-ios.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml index da45e28b7..c63819b0c 100644 --- a/.github/workflows/build-ios.yml +++ b/.github/workflows/build-ios.yml @@ -16,16 +16,16 @@ jobs: strategy: # fail-fast: false matrix: - os: [macos-14] + os: [macos-15] steps: - name: Check out Git repository uses: actions/checkout@v3 - - name: Set up Xcode 16 + - name: Set up Xcode 26 uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '16' + with: + xcode-version: '26' - name: Confirm Xcode version run: xcodebuild -version From 31d7328497c84ba2fcb425103480b19c67f0778f Mon Sep 17 00:00:00 2001 From: Jamie Ruderman Date: Tue, 2 Jun 2026 11:33:57 -0700 Subject: [PATCH 2/2] ci(ios): switch altool auth to App Store Connect API key --- .github/workflows/build-ios.yml | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-ios.yml b/.github/workflows/build-ios.yml index c63819b0c..0e4633df4 100644 --- a/.github/workflows/build-ios.yml +++ b/.github/workflows/build-ios.yml @@ -56,7 +56,6 @@ jobs: PROVISION_PROFILE_DEV_BASE64: ${{ secrets.PROVISION_PROFILE_DEV_BASE64 }} PROVISION_PROFILE_DIST_BASE64: ${{ secrets.PROVISION_PROFILE_DIST_BASE64 }} KEYCHAIN_PASSWORD: ${{ secrets.MAC_CERTS_PASSWORD }} - APPLE_MOBILE_APP_PASSWORD: ${{ secrets.APPLE_MOBILE_APP_PASSWORD }} BUILD_PATH: $RUNNER_TEMP/build run: | # create variables @@ -82,8 +81,6 @@ jobs: # import certificate to keychain security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - # add remoteit-mobile-desktop to keychain list - xcrun altool --store-password-in-keychain-item 'remoteit-mobile-desktop' -u 'appledeveloper@remote.it' -p $APPLE_MOBILE_APP_PASSWORD --keychain $KEYCHAIN_PATH # list the keychain items security list-keychain -d user -s $KEYCHAIN_PATH @@ -117,12 +114,32 @@ jobs: run: | xcodebuild -exportArchive -archivePath $BUILD_PATH/remoteit.xcarchive -exportOptionsPlist ./ExportOptions.plist -exportPath $BUILD_PATH + - name: Install App Store Connect API key + env: + APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }} + APP_STORE_CONNECT_API_KEY_BASE64: ${{ secrets.APP_STORE_CONNECT_API_KEY_BASE64 }} + run: | + mkdir -p ~/.appstoreconnect/private_keys + echo -n "$APP_STORE_CONNECT_API_KEY_BASE64" | base64 --decode > ~/.appstoreconnect/private_keys/AuthKey_${APP_STORE_CONNECT_API_KEY_ID}.p8 + - name: Validate ipa working-directory: ./ios/App + env: + APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }} + APP_STORE_CONNECT_API_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_ISSUER_ID }} run: | - xcrun altool --validate-app -f "$BUILD_PATH/Remote.It.ipa" -t ios --keychain "$RUNNER_TEMP/app-signing.keychain-db" -p '@keychain:remoteit-mobile-desktop' --output-format xml + xcrun altool --validate-app -f "$BUILD_PATH/Remote.It.ipa" -t ios \ + --apiKey "$APP_STORE_CONNECT_API_KEY_ID" \ + --apiIssuer "$APP_STORE_CONNECT_API_ISSUER_ID" \ + --output-format xml - name: Upload ipa working-directory: ./ios/App + env: + APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }} + APP_STORE_CONNECT_API_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_ISSUER_ID }} run: | - xcrun altool --upload-app -f "$BUILD_PATH/Remote.It.ipa" -t ios --keychain "$RUNNER_TEMP/app-signing.keychain-db" -p '@keychain:remoteit-mobile-desktop' --output-format xml + xcrun altool --upload-app -f "$BUILD_PATH/Remote.It.ipa" -t ios \ + --apiKey "$APP_STORE_CONNECT_API_KEY_ID" \ + --apiIssuer "$APP_STORE_CONNECT_API_ISSUER_ID" \ + --output-format xml