98 lines
2.5 KiB
Bash
Executable file
98 lines
2.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
set -a
|
|
source .env.prod
|
|
set +a
|
|
|
|
# Export build time for consistent release naming
|
|
export BUILD_TIME=$(date +%s000)
|
|
|
|
# Clean previous bundle
|
|
echo "Cleaning previous bundle..."
|
|
rm -f ios/main.jsbundle*
|
|
|
|
# Get version from Info.plist for release naming
|
|
BUNDLE_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" ios/AlerteSecours/Info.plist)
|
|
PACKAGE_VERSION=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" ios/AlerteSecours/Info.plist)
|
|
RELEASE_NAME="com.alertesecours.alertesecours@${PACKAGE_VERSION}+${BUNDLE_VERSION}"
|
|
|
|
# Generate the bundle and sourcemap
|
|
echo "Generating bundle and sourcemap..."
|
|
yarn react-native bundle \
|
|
--platform ios \
|
|
--dev false \
|
|
--entry-file index.js \
|
|
--bundle-output ios/main.jsbundle \
|
|
--sourcemap-output ios/main.jsbundle.map \
|
|
--minify true
|
|
|
|
# Get path to hermesc binary
|
|
HERMESC="node_modules/react-native/sdks/hermesc/osx-bin/hermesc"
|
|
if [ ! -f "$HERMESC" ]; then
|
|
HERMESC="node_modules/react-native/sdks/hermes/build/bin/hermesc"
|
|
fi
|
|
|
|
# Convert to Hermes bytecode
|
|
echo "Converting to Hermes bytecode..."
|
|
"$HERMESC" \
|
|
-O \
|
|
-emit-binary \
|
|
-output-source-map \
|
|
-out=ios/main.jsbundle.hbc \
|
|
-g \
|
|
ios/main.jsbundle
|
|
|
|
# Create Sentry release and upload source maps
|
|
if [ -n "$SENTRY_AUTH_TOKEN" ]; then
|
|
echo "Creating Sentry release and uploading artifacts..."
|
|
|
|
# Create new release
|
|
npx @sentry/cli releases new "$RELEASE_NAME"
|
|
|
|
# Upload the sourcemap
|
|
npx @sentry/cli releases files "$RELEASE_NAME" \
|
|
upload-sourcemaps \
|
|
--dist "$BUILD_TIME" \
|
|
--rewrite \
|
|
--strip-prefix "$(pwd)" \
|
|
--url-prefix "app:///" \
|
|
--validate \
|
|
--log-level debug \
|
|
ios/main.jsbundle.map \
|
|
ios/main.jsbundle
|
|
|
|
# Upload the Hermes bundle and its sourcemap
|
|
npx @sentry/cli releases files "$RELEASE_NAME" \
|
|
upload-sourcemaps \
|
|
--dist "$BUILD_TIME" \
|
|
--rewrite \
|
|
--strip-prefix "$(pwd)" \
|
|
--url-prefix "app:///" \
|
|
--validate \
|
|
--log-level debug \
|
|
ios/main.jsbundle.hbc.map \
|
|
ios/main.jsbundle.hbc
|
|
|
|
# Finalize release
|
|
npx @sentry/cli releases finalize "$RELEASE_NAME"
|
|
else
|
|
echo "Warning: SENTRY_AUTH_TOKEN not set. Skipping sourcemap upload."
|
|
fi
|
|
|
|
# Move the Hermes bundle to the final location
|
|
mv ios/main.jsbundle.hbc ios/main.jsbundle
|
|
|
|
cd ios
|
|
|
|
# Create archive using xcodebuild
|
|
echo "Creating archive..."
|
|
xcodebuild \
|
|
-workspace AlerteSecours.xcworkspace \
|
|
-scheme AlerteSecours \
|
|
-configuration Release \
|
|
-archivePath AlerteSecours.xcarchive \
|
|
archive
|
|
|
|
echo "Archive completed successfully at AlerteSecours.xcarchive"
|