Skip to content
name: Deploy iOS to App Store
on:
release:
types:
[prereleased, released]
jobs:
build-ios:
# needs: detox-ios
runs-on: ${{ matrix.os }}
if: |
startsWith(github.ref, 'refs/tags/@quiet/mobile')
strategy:
matrix:
os: [macos-13]
steps:
- name: "Print OS"
run: echo ${{ matrix.os }}
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
submodules: 'recursive'
lfs: true
- name: Install gpg
run: brew install gnupg
- name: Setup XCode
uses: maxim-lobanov/setup-xcode@9a697e2b393340c3cacd97468baa318e4c883d98 # v1.5.1
with:
xcode-version: '15.2'
- name: Setup environment
uses: ./.github/actions/setup-env
with:
cachePrefix: "deploy-ios"
bootstrap-packages: "@quiet/eslint-config,@quiet/logger,@quiet/common,@quiet/types,@quiet/state-manager,@quiet/backend,@quiet/identity,@quiet/mobile,backend-bundle"
- name: Install pod dependencies
run: |
cd ./packages/mobile/ios
pod install
shell: bash
- name: Setup provisioning profile
run: ./.github/secrets/decrypt_secrets.sh
env:
IOS_PROFILE_KEY: ${{ secrets.IOS_PROFILE_KEY }}
IOS_CERTIFICATE_KEY: ${{ secrets.IOS_CERTIFICATE_KEY }}
- name: Build
run: |
cd ./packages/mobile/ios
xcodebuild archive \
-workspace Quiet.xcworkspace \
-scheme Quiet \
-configuration Release \
-archivePath build/Quiet.xcarchive \
PROVISIONING_PROFILE="762df280-302c-4336-a56d-c74914169337" \
CODE_SIGN_IDENTITY="Apple Distribution: A Quiet LLC (CTYKSWN9T4)"
- name: Export .ipa
run: |
cd ./packages/mobile/ios
xcodebuild \
-exportArchive \
-archivePath build/Quiet.xcarchive \
-exportOptionsPlist ci.plist \
-exportPath build/
- name: Upload artifacts
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: Quiet.ipa
path: ./packages/mobile/ios/build/Quiet.ipa
- name: Submit to the store
run: |
cd ./packages/mobile/ios
xcrun altool \
--upload-app \
--type ios \
--file build/Quiet.ipa \
-u $APPSTORE_USER \
-p $APPSTORE_PASSWORD \
--verbose
env:
APPSTORE_USER: ${{ secrets.APPSTORE_USER }}
APPSTORE_PASSWORD: ${{ secrets.APPSTORE_PASSWORD }}