Skip to content

fix: create GoogleService-Info.plist in both ios/ and ios/Runner/ #7

fix: create GoogleService-Info.plist in both ios/ and ios/Runner/

fix: create GoogleService-Info.plist in both ios/ and ios/Runner/ #7

Workflow file for this run

name: Deploy iOS to TestFlight
on:
push:
tags:
- 'v*'
jobs:
deploy:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.x'
channel: 'stable'
- name: Install dependencies
run: flutter pub get
working-directory: zyncro
- name: Install Apple certificate
env:
P12_BASE64: ${{ secrets.IOS_CERTIFICATE_P12_BASE64 }}
P12_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
run: |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
security create-keychain -p "" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "" $KEYCHAIN_PATH
echo "$P12_BASE64" | base64 --decode > $RUNNER_TEMP/certificate.p12
security import $RUNNER_TEMP/certificate.p12 -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
- name: Install provisioning profile
env:
PROFILE_BASE64: ${{ secrets.IOS_PROVISIONING_PROFILE_BASE64 }}
run: |
PP_PATH=$RUNNER_TEMP/profile.mobileprovision
echo "$PROFILE_BASE64" | base64 --decode > $PP_PATH
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
UUID=$(security cms -D -i $PP_PATH | plutil -extract UUID raw -)
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles/$UUID.mobileprovision
echo "PROFILE_UUID=$UUID" >> $GITHUB_ENV
- name: Create GoogleService-Info.plist
run: |
echo "${{ secrets.IOS_GOOGLE_SERVICES_PLIST_BASE64 }}" | base64 --decode > zyncro/ios/Runner/GoogleService-Info.plist
echo "${{ secrets.IOS_GOOGLE_SERVICES_PLIST_BASE64 }}" | base64 --decode > zyncro/ios/GoogleService-Info.plist
- name: Build iOS (no codesign)
run: flutter build ios --release --no-codesign --build-number=$(( ${{ github.run_number }} + 100 ))
working-directory: zyncro
- name: Archive and export IPA
env:
API_KEY_BASE64: ${{ secrets.APPSTORE_API_KEY_P8_BASE64 }}
API_KEY_ID: ${{ secrets.APPSTORE_API_KEY_ID }}
ISSUER_ID: ${{ secrets.APPSTORE_ISSUER_ID }}
run: |
# Generate ExportOptions.plist
cat > $RUNNER_TEMP/ExportOptions.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>app-store</string>
<key>signingStyle</key>
<string>manual</string>
<key>provisioningProfiles</key>
<dict>
<key>com.zyncro.app</key>
<string>$PROFILE_UUID</string>
</dict>
</dict>
</plist>
EOF
# Archive
xcodebuild archive \
-workspace zyncro/ios/Runner.xcworkspace \
-scheme Runner \
-configuration Release \
-archivePath $RUNNER_TEMP/Runner.xcarchive \
CODE_SIGN_STYLE=Manual \
PROVISIONING_PROFILE_SPECIFIER="$PROFILE_UUID" \
DEVELOPMENT_TEAM=ST97HKUKXU \
-allowProvisioningUpdates
# Export IPA
xcodebuild -exportArchive \
-archivePath $RUNNER_TEMP/Runner.xcarchive \
-exportPath $RUNNER_TEMP/ipa \
-exportOptionsPlist $RUNNER_TEMP/ExportOptions.plist
# Upload to TestFlight
mkdir -p ~/.appstoreconnect/private_keys
echo "$API_KEY_BASE64" | base64 --decode > ~/.appstoreconnect/private_keys/AuthKey_$API_KEY_ID.p8
xcrun altool --upload-app \
--type ios \
--file $RUNNER_TEMP/ipa/*.ipa \
--apiKey $API_KEY_ID \
--apiIssuer $ISSUER_ID