89 lines
3.3 KiB
Bash
Executable file
89 lines
3.3 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Source the environment variables
|
|
set -a
|
|
source .env.prod
|
|
set +a
|
|
|
|
# Print debug information
|
|
echo "Debug information:"
|
|
echo "ASC_API_KEY_ID: $ASC_API_KEY_ID"
|
|
echo "ASC_API_ISSUER_ID: $ASC_API_ISSUER_ID"
|
|
echo "ASC_API_KEY_PATH: $ASC_API_KEY_PATH"
|
|
|
|
# Verify versions before upload to prevent stale IPA submission
|
|
SOURCE_PLIST="ios/AlerteSecours/Info.plist"
|
|
ARCHIVE_PLIST="ios/AlerteSecours.xcarchive/Products/Applications/AlerteSecours.app/Info.plist"
|
|
IPA_PATH="ios/build/AlerteSecours.ipa"
|
|
|
|
if [ ! -f "$SOURCE_PLIST" ]; then
|
|
echo "Error: Source Info.plist not found at $SOURCE_PLIST"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$ARCHIVE_PLIST" ]; then
|
|
echo "Error: Archive Info.plist not found at $ARCHIVE_PLIST"
|
|
echo "Hint: Run 'yarn bundle:ios' to create a fresh archive and export."
|
|
exit 1
|
|
fi
|
|
|
|
SRC_PKG_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "$SOURCE_PLIST")
|
|
SRC_BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$SOURCE_PLIST")
|
|
ARC_PKG_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "$ARCHIVE_PLIST")
|
|
ARC_BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$ARCHIVE_PLIST")
|
|
|
|
echo "Version check:"
|
|
echo " Source Info.plist : $SRC_PKG_VERSION ($SRC_BUILD_NUMBER)"
|
|
echo " Archive Info.plist : $ARC_PKG_VERSION ($ARC_BUILD_NUMBER)"
|
|
|
|
if [ "$SRC_PKG_VERSION" != "$ARC_PKG_VERSION" ] || [ "$SRC_BUILD_NUMBER" != "$ARC_BUILD_NUMBER" ]; then
|
|
echo "Error: Archive version mismatch with source Info.plist."
|
|
echo "Hint: Run 'yarn bundle:ios' to rebuild with the correct versions."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$IPA_PATH" ]; then
|
|
echo "Error: IPA not found at $IPA_PATH"
|
|
echo "Hint: Run 'yarn bundle:ios' to export a fresh IPA."
|
|
exit 1
|
|
fi
|
|
|
|
# Attempt to read CFBundleShortVersionString and CFBundleVersion from the IPA for extra safety
|
|
IPA_PLIST_TMP=$(mktemp -t as_ipa_Info.plist)
|
|
unzip -p "$IPA_PATH" "Payload/AlerteSecours.app/Info.plist" > "$IPA_PLIST_TMP" 2>/dev/null || true
|
|
|
|
if [ -s "$IPA_PLIST_TMP" ]; then
|
|
IPA_PKG_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "$IPA_PLIST_TMP" 2>/dev/null || echo "")
|
|
IPA_BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$IPA_PLIST_TMP" 2>/dev/null || echo "")
|
|
echo " IPA Info.plist (from payload): ${IPA_PKG_VERSION:-unknown} (${IPA_BUILD_NUMBER:-unknown})"
|
|
if [ -n "$IPA_PKG_VERSION" ] && [ -n "$IPA_BUILD_NUMBER" ]; then
|
|
if [ "$SRC_PKG_VERSION" != "$IPA_PKG_VERSION" ] || [ "$SRC_BUILD_NUMBER" != "$IPA_BUILD_NUMBER" ]; then
|
|
echo "Error: IPA version mismatch with source Info.plist."
|
|
echo "Hint: Run 'yarn bundle:ios' to export a fresh IPA aligned with current versions."
|
|
rm -f "$IPA_PLIST_TMP"
|
|
exit 1
|
|
fi
|
|
fi
|
|
else
|
|
echo "Warning: Could not read Info.plist from IPA payload for verification. Continuing."
|
|
fi
|
|
rm -f "$IPA_PLIST_TMP"
|
|
|
|
# Execute upload using xcrun altool with App Store Connect API key
|
|
echo "Uploading to App Store Connect using xcrun altool..."
|
|
|
|
# Use altool with API key authentication
|
|
xcrun altool --upload-app \
|
|
--type ios \
|
|
--file "$IPA_PATH" \
|
|
--apiKey "$ASC_API_KEY_ID" \
|
|
--apiIssuer "$ASC_API_ISSUER_ID" \
|
|
--verbose
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✅ Successfully uploaded IPA to App Store Connect!"
|
|
echo "The build will be available in TestFlight once processing is complete."
|
|
else
|
|
echo "❌ Upload failed. Check the error messages above."
|
|
exit 1
|
|
fi
|