iOS Build/Archive/Upload to AppStore Connect #267
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: iOS Build/Archive/Upload to AppStore Connect | |
on: | |
push: | |
tags: | |
- mobile-** | |
jobs: | |
build: | |
name: Build, archive, and upload iOS app | |
runs-on: macos-14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Clear unused NDKs | |
run: | | |
ls -1 "$ANDROID_SDK_ROOT/ndk" | | |
awk '{ | |
if (system("git grep " $0 " > /dev/null")) { | |
system("rm -rf '"$ANDROID_SDK_ROOT/ndk/"'" $0); | |
} | |
}' | |
- name: Delete all iOS simulators | |
run: xcrun simctl delete all | |
- name: Delete iOS simulator caches | |
run: sudo rm -rf ~/Library/Developer/CoreSimulator/Caches/* | |
- name: Install Developer certificate | |
env: | |
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} | |
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
run: | | |
# create variables | |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
# import certificate from secrets | |
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH | |
# create temporary keychain | |
security create-keychain -p "123456" $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security unlock-keychain -p "123456" $KEYCHAIN_PATH | |
# import certificate to keychain | |
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
security list-keychain -d user -s $KEYCHAIN_PATH | |
- name: brew install protobuf | |
run: brew install protobuf | |
- name: Set up Python 3.12 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.12 | |
- name: Fix node-gyp | |
run: python -m pip install packaging setuptools | |
- name: yarn ci-cleaninstall | |
run: yarn ci-cleaninstall | |
- name: Save ALCHEMY_API_KEY to file | |
working-directory: ./native | |
env: | |
ALCHEMY_API_KEY: ${{secrets.ALCHEMY_API_KEY}} | |
run: mkdir -p facts && echo '{"key":"'"$ALCHEMY_API_KEY"'"}' > facts/alchemy.json | |
- name: Save NEYNAR_API_KEY to file | |
working-directory: ./native | |
env: | |
NEYNAR_API_KEY: ${{secrets.NEYNAR_API_KEY}} | |
run: mkdir -p facts && echo '{"key":"'"$NEYNAR_API_KEY"'"}' > facts/neynar.json | |
- name: Save auth_key to file | |
working-directory: ./native/ios | |
env: | |
AUTH_KEY: ${{secrets.AUTH_KEY}} | |
run: echo "$AUTH_KEY" > AUTH_KEY.p8 | |
- name: Archive | |
working-directory: ./native/ios | |
env: | |
AUTH_KEY_ID: ${{secrets.AUTH_KEY_ID}} | |
AUTH_KEY_ISSUER_ID: ${{secrets.AUTH_KEY_ISSUER_ID}} | |
run: xcodebuild archive -workspace Comm.xcworkspace -scheme Comm -configuration Release -archivePath archives/Comm.xcarchive -destination generic/platform=iOS -allowProvisioningUpdates -authenticationKeyIssuerID "$AUTH_KEY_ISSUER_ID" -authenticationKeyID "$AUTH_KEY_ID" -authenticationKeyPath $PWD/AUTH_KEY.p8 | |
- name: Export IPA | |
working-directory: ./native/ios | |
env: | |
AUTH_KEY_ID: ${{secrets.AUTH_KEY_ID}} | |
AUTH_KEY_ISSUER_ID: ${{secrets.AUTH_KEY_ISSUER_ID}} | |
run: xcodebuild -exportArchive -archivePath archives/Comm.xcarchive -exportOptionsPlist exportOptions.plist -exportPath output -allowProvisioningUpdates -authenticationKeyIssuerID "$AUTH_KEY_ISSUER_ID" -authenticationKeyID "$AUTH_KEY_ID" -authenticationKeyPath $PWD/AUTH_KEY.p8 | |
- name: Upload IPA to TestFlight | |
working-directory: ./native/ios | |
env: | |
APPLE_USER_NAME: ${{secrets.APPLE_USER_NAME}} | |
APPLE_APP_SPECIFIC_PASSWORD: ${{secrets.APPLE_APP_SPECIFIC_PASSWORD}} | |
run: xcrun altool --upload-app --type ios --file output/Comm.ipa --username "$APPLE_USER_NAME" --password "$APPLE_APP_SPECIFIC_PASSWORD" |