From aa22a3757ac4fb9115457c4b2671d0fecd4e0fa2 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 28 Apr 2020 11:35:59 +1000 Subject: [PATCH] fix(ios): use environment and version-with-tag for sentry --- .../KMEI/KeymanEngine.xcodeproj/project.pbxproj | 2 +- .../KeymanEngine/Classes/Errors/SentryManager.swift | 12 ++++++------ ios/engine/KMEI/KeymanEngine/Info.plist | 2 ++ ios/keyman/Keyman/Keyman-Info.plist | 2 ++ ios/kmbuild.sh | 10 +++++++--- resources/build/xcode-utils.sh | 6 +++++- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/ios/engine/KMEI/KeymanEngine.xcodeproj/project.pbxproj b/ios/engine/KMEI/KeymanEngine.xcodeproj/project.pbxproj index ccecf50246..f6cbbead84 100644 --- a/ios/engine/KMEI/KeymanEngine.xcodeproj/project.pbxproj +++ b/ios/engine/KMEI/KeymanEngine.xcodeproj/project.pbxproj @@ -1239,7 +1239,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "NAME=\"KeymanEngine\"\nUNIVERSAL_DIR=\"${BUILD_DIR}/${CONFIGURATION}-universal/${NAME}.framework\"\nIPHONE_DIR=\"${BUILD_DIR}/${CONFIGURATION}-iphoneos/${NAME}.framework\"\nSIMULATOR_DIR=\"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${NAME}.framework\"\n\n# Build architecture that was not built\nif [ ${PLATFORM_NAME} = \"iphonesimulator\" ]; then\n xcodebuild -scheme \"${NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\" build VERSION=$VERSION VERSION_WITH_TAG=$VERSION_WITH_TAG\nelse\n xcodebuild -scheme \"${NAME}\" -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\" build VERSION=$VERSION VERSION_WITH_TAG=$VERSION_WITH_TAG\nfi\n\n# Clean\nrm -rf \"${UNIVERSAL_DIR}\"\nmkdir -p \"${UNIVERSAL_DIR}\"\n\n# Use iPhone framework as base\ncp -R \"${IPHONE_DIR}/\" \"${UNIVERSAL_DIR}/\"\n\n# Copy Swift modules from simulator build\ncp -R \"${SIMULATOR_DIR}/Modules/${NAME}.swiftmodule/\" \"${UNIVERSAL_DIR}/Modules/${NAME}.swiftmodule/\"\n\n# Create universal binary using lipo\nlipo -create \"${IPHONE_DIR}/${NAME}\" \"${SIMULATOR_DIR}/${NAME}\" -output \"${UNIVERSAL_DIR}/${NAME}\"\n"; + shellScript = "NAME=\"KeymanEngine\"\nUNIVERSAL_DIR=\"${BUILD_DIR}/${CONFIGURATION}-universal/${NAME}.framework\"\nIPHONE_DIR=\"${BUILD_DIR}/${CONFIGURATION}-iphoneos/${NAME}.framework\"\nSIMULATOR_DIR=\"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${NAME}.framework\"\n\n# Build architecture that was not built\nif [ ${PLATFORM_NAME} = \"iphonesimulator\" ]; then\n xcodebuild -scheme \"${NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\" build VERSION=$VERSION VERSION_WITH_TAG=$VERSION_WITH_TAG VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT\nelse\n xcodebuild -scheme \"${NAME}\" -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\" build VERSION=$VERSION VERSION_WITH_TAG=$VERSION_WITH_TAG VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT\nfi\n\n# Clean\nrm -rf \"${UNIVERSAL_DIR}\"\nmkdir -p \"${UNIVERSAL_DIR}\"\n\n# Use iPhone framework as base\ncp -R \"${IPHONE_DIR}/\" \"${UNIVERSAL_DIR}/\"\n\n# Copy Swift modules from simulator build\ncp -R \"${SIMULATOR_DIR}/Modules/${NAME}.swiftmodule/\" \"${UNIVERSAL_DIR}/Modules/${NAME}.swiftmodule/\"\n\n# Create universal binary using lipo\nlipo -create \"${IPHONE_DIR}/${NAME}\" \"${SIMULATOR_DIR}/${NAME}\" -output \"${UNIVERSAL_DIR}/${NAME}\"\n"; }; C0A5FF381F6684A300BE740C /* ShellScript */ = { isa = PBXShellScriptBuildPhase; diff --git a/ios/engine/KMEI/KeymanEngine/Classes/Errors/SentryManager.swift b/ios/engine/KMEI/KeymanEngine/Classes/Errors/SentryManager.swift index f2595f598a..a74109e78b 100644 --- a/ios/engine/KMEI/KeymanEngine/Classes/Errors/SentryManager.swift +++ b/ios/engine/KMEI/KeymanEngine/Classes/Errors/SentryManager.swift @@ -30,16 +30,16 @@ public class SentryManager { log.debug("Sentry error logging enabled.") #endif - #if DEBUG - let environment = "DEVELOPMENT-\(Version.currentTagged.majorMinor.fullString)" - #else - let environment = "PRODUCTION-\(Version.currentTagged.majorMinor.fullString)" - #endif + let infoDict = Bundle.main.infoDictionary + let versionWithTag = infoDict?["KeymanVersionWithTag"] as? String ?? "" + let environment = infoDict?["KeymanVersionEnvironment"] as? String ?? "" + let release = "release-\(versionWithTag)" let options: [String: Any] = [ "dsn": "https://d14d2efb594e4345b8367dbb61ebceaf@sentry.keyman.com/8", "enabled": allowEnabled && sendingEnabled, - "environment": environment + "environment": environment, + "release": release ] Sentry.Client.shared = try Sentry.Client(options: options) try Sentry.Client.shared?.startCrashHandler() diff --git a/ios/engine/KMEI/KeymanEngine/Info.plist b/ios/engine/KMEI/KeymanEngine/Info.plist index 60771e899b..44bc2c4e4e 100644 --- a/ios/engine/KMEI/KeymanEngine/Info.plist +++ b/ios/engine/KMEI/KeymanEngine/Info.plist @@ -4,6 +4,8 @@ KeymanVersionWithTag 10.0.0-local + KeymanVersionEnvironment + local CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName diff --git a/ios/keyman/Keyman/Keyman-Info.plist b/ios/keyman/Keyman/Keyman-Info.plist index 09e6092708..cacc110aed 100644 --- a/ios/keyman/Keyman/Keyman-Info.plist +++ b/ios/keyman/Keyman/Keyman-Info.plist @@ -47,6 +47,8 @@ KeymanVersionWithTag 10.0.0-local + KeymanVersionEnvironment + local LSRequiresIPhoneOS LSSupportsOpeningDocumentsInPlace diff --git a/ios/kmbuild.sh b/ios/kmbuild.sh index 95884d4113..b82c4412b8 100755 --- a/ios/kmbuild.sh +++ b/ios/kmbuild.sh @@ -165,13 +165,15 @@ echo echo "Build products will be set with the following version metadata:" echo " * VERSION=$VERSION" echo " * VERSION_WITH_TAG=$VERSION_WITH_TAG" +echo " * VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT" echo echo "Building KMEI..." rm -r $BUILD_PATH/$CONFIG-universal 2>/dev/null xcodebuild $XCODEFLAGS_EXT $CODE_SIGN -scheme KME-universal \ VERSION=$VERSION \ - VERSION_WITH_TAG=$VERSION_WITH_TAG + VERSION_WITH_TAG=$VERSION_WITH_TAG \ + VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT if [ $? -ne 0 ]; then fail "KMEI build failed." @@ -190,7 +192,8 @@ if [ $DO_KEYMANAPP = true ]; then if [ $DO_ARCHIVE = false ]; then xcodebuild $XCODEFLAGS_EXT $CODE_SIGN -scheme Keyman \ VERSION=$VERSION \ - VERSION_WITH_TAG=$VERSION_WITH_TAG + VERSION_WITH_TAG=$VERSION_WITH_TAG \ + VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT if [ $? -ne 0 ]; then fail "Keyman app build failed." @@ -204,7 +207,8 @@ if [ $DO_KEYMANAPP = true ]; then -archivePath $ARCHIVE_PATH \ archive -allowProvisioningUpdates \ VERSION=$VERSION \ - VERSION_WITH_TAG=$VERSION_WITH_TAG + VERSION_WITH_TAG=$VERSION_WITH_TAG \ + VERSION_ENVIRONMENT=$VERSION_ENVIRONMENT assertDirExists "$ARCHIVE_PATH" diff --git a/resources/build/xcode-utils.sh b/resources/build/xcode-utils.sh index 9bc44b87c6..08335f6304 100755 --- a/resources/build/xcode-utils.sh +++ b/resources/build/xcode-utils.sh @@ -17,7 +17,7 @@ function buildError() { # Imports the autogenerated environment.sh from command-line builds. function importEnvironment() { - # Requires that KEYMAN_ROOT is set... which it should be, if a build is successfully + # Requires that KEYMAN_ROOT is set... which it should be, if a build is successfully if [ -z "${KEYMAN_ROOT:-}" ]; then buildError "KEYMAN_ROOT is not defined. Recommendation: define it as a project-wide \"user-defined\" Build Setting for the \"$PROJECT_NAME\" project." exit 1 @@ -49,6 +49,7 @@ function phaseSetBundleVersions() { echo "UI build - fetching version from repository:" echo " Plain: $VERSION" echo " Tagged: $VERSION_WITH_TAG" + echo " Environment: $VERSION_ENVIRONMENT" else echo "Command-line build - using provided version parameters" fi @@ -63,6 +64,8 @@ function phaseSetBundleVersions() { if [ $TAGGED == true ]; then echo "Setting $VERSION_WITH_TAG for tagged version" /usr/libexec/Plistbuddy -c "Set :KeymanVersionWithTag $VERSION_WITH_TAG" "$APP_PLIST" + echo "Setting $VERSION_ENVIRONMENT" + /usr/libexec/Plistbuddy -c "Set :KeymanVersionEnvironment $VERSION_ENVIRONMENT" "$APP_PLIST" fi if [ -f "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}.dSYM/Contents/Info.plist" ]; then @@ -84,6 +87,7 @@ function setSettingsBundleVersion() { echo "UI build - fetching version from repository:" echo " Plain: $VERSION" echo " Tagged: $VERSION_WITH_TAG" + echo " Environment: (not setting, assume 'local')" else echo "Command-line build - using provided version parameters" fi