diff --git a/.circleci/config.yml b/.circleci/config.yml index 6a0f6f090b..39291b83ee 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -478,6 +478,10 @@ jobs: condition: equal: [ true, << parameters.redisstack >> ] steps: + - run: + name: Repack AppImage to tar + command: | + ARCH=x86_64 ./.circleci/redisstack/app-image.repack.sh - run: name: Build sources command: ./.circleci/redisstack/build.sh @@ -492,8 +496,8 @@ jobs: root: . paths: - release/RedisInsight*.deb - - release/RedisInsight*.AppImage - release/RedisInsight*.rpm + - release/RedisInsight*.AppImage - release/*-linux.yml - release/redisstack macosx: @@ -540,6 +544,12 @@ jobs: UPGRADES_LINK='' SEGMENT_WRITE_KEY='' yarn package:stage rm -rf release/mac no_output_timeout: 15m + + - run: + name: Repack dmg to tar + command: | + ARCH=x64 ./.circleci/redisstack/dmg.repack.sh + ARCH=arm64 ./.circleci/redisstack/dmg.repack.sh - persist_to_workspace: root: . paths: @@ -547,6 +557,7 @@ jobs: - release/RedisInsight*.dmg - release/RedisInsight*.dmg.blockmap - release/*-mac.yml + - release/redisstack windows: executor: name: win/default diff --git a/.circleci/redisstack/app-image.repack.sh b/.circleci/redisstack/app-image.repack.sh new file mode 100755 index 0000000000..c67a8526d9 --- /dev/null +++ b/.circleci/redisstack/app-image.repack.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +ARCH=${ARCH:-x86_64} +WORKING_DIRECTORY=$(pwd) +SOURCE_APP=${SOURCE_APP:-"RedisInsight-V2-linux-$ARCH.AppImage"} +APP_FOLDER_NAME="RedisInsight-V2-linux" +TAR_NAME="RedisInsight-V2-app-linux.$ARCH.tar.gz" +TMP_FOLDER="/tmp/RedisInsight-app-$ARCH" + +rm -rf "$TMP_FOLDER" + +mkdir -p "$WORKING_DIRECTORY/release/redisstack" +mkdir -p "$TMP_FOLDER" + +cp "./release/$SOURCE_APP" "$TMP_FOLDER" +cd "$TMP_FOLDER" || exit 1 + +./"$SOURCE_APP" --appimage-extract +mv squashfs-root "$APP_FOLDER_NAME" + +tar -czvf "$TAR_NAME" "$APP_FOLDER_NAME" + +cp "$TAR_NAME" "$WORKING_DIRECTORY/release/redisstack/" +cd "$WORKING_DIRECTORY" || exit 1 diff --git a/.circleci/redisstack/build_modules.sh b/.circleci/redisstack/build_modules.sh index 271a5afcdf..cf39b2aaf7 100755 --- a/.circleci/redisstack/build_modules.sh +++ b/.circleci/redisstack/build_modules.sh @@ -2,9 +2,9 @@ PLATFORM=${PLATFORM:-'linux'} ELECTRON_VERSION=$(cat electron/version) -VERSION=${ELECTRON_VERSION:-'redisstack'} ARCH=${ARCH:-'x64'} -FILENAME="RedisInsight-$PLATFORM.$VERSION.$ARCH.zip" +#FILENAME="RedisInsight-$PLATFORM.$VERSION.$ARCH.zip" +FILENAME="RedisInsight-V2-web-$PLATFORM.$ARCH.tar.gz" # reinstall backend prod dependencies only (optimise space) rm -rf redisinsight/api/node_modules @@ -13,19 +13,21 @@ npm_config_arch="$ARCH" \ npm_config_target_arch="$ARCH" \ npm_config_platform="$PLATFORM" \ npm_config_target_platform="$PLATFORM" \ -npm_config_keytar_binary_host_mirror="$KEYTAR_MIRROR" \ -npm_config_node_sqlite3_binary_host_mirror="$SQLITE_MIRROR" \ yarn --cwd ./redisinsight/api install --production cp redisinsight/api/.yarnclean.prod redisinsight/api/.yarnclean yarn --cwd ./redisinsight/api autoclean --force rm -rf redisinsight/build.zip -cd redisinsight && zip -r build.zip \ + +cp LICENSE ./redisinsight + +cd redisinsight && tar -czvf build.tar.gz \ api/node_modules \ api/dist \ ui/dist \ +LICENSE \ && cd .. mkdir -p release/redisstack -cp redisinsight/build.zip release/redisstack/"$FILENAME" +cp redisinsight/build.tar.gz release/redisstack/"$FILENAME" diff --git a/.circleci/redisstack/dmg.repack.sh b/.circleci/redisstack/dmg.repack.sh new file mode 100755 index 0000000000..be11d4c794 --- /dev/null +++ b/.circleci/redisstack/dmg.repack.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +ARCH=${ARCH:-x64} +WORKING_DIRECTORY=$(pwd) +TAR_NAME="RedisInsight-V2-app-darwin.$ARCH.tar.gz" +APP_FOLDER_NAME="RedisInsight-V2.app" +TMP_FOLDER="/tmp/$APP_FOLDER_NAME" + +rm -rf "$TMP_FOLDER" + +mkdir -p "$WORKING_DIRECTORY/release/redisstack" +mkdir -p "$TMP_FOLDER" + +hdiutil attach "./release/RedisInsight-V2-mac-$ARCH.dmg" +cp -a /Volumes/RedisInsight-*/RedisInsight-V2.app "/tmp" +cd "/tmp" || exit 1 +tar -czvf "$TAR_NAME" "$APP_FOLDER_NAME" +cp "$TAR_NAME" "$WORKING_DIRECTORY/release/redisstack/" +cd "$WORKING_DIRECTORY" || exit 1 +hdiutil unmount /Volumes/RedisInsight-*/ diff --git a/electron-builder.json b/electron-builder.json index 012795d08f..37d406720a 100644 --- a/electron-builder.json +++ b/electron-builder.json @@ -15,13 +15,11 @@ "artifactName": "${productName}-${os}-${arch}.${ext}", "compression": "normal", "mac": { - "artifactName": "${productName}-${os}-${arch}.${ext}", "target": [ { "target": "dmg", "arch": ["x64", "arm64"] - }, - { + }, { "target": "zip", "arch": ["x64", "arm64"] } @@ -93,6 +91,11 @@ "from": "./redisinsight/api/defaults", "to": "defaults", "filter": ["**/*"] + }, + { + "from": "./resources/app", + "to": "./app", + "filter": ["**/*"] } ] } diff --git a/redisinsight/api/config/production.ts b/redisinsight/api/config/production.ts index feec086d16..b4943af336 100644 --- a/redisinsight/api/config/production.ts +++ b/redisinsight/api/config/production.ts @@ -1,6 +1,8 @@ import { join } from 'path'; +import * as os from 'os'; -const homedir = join(require('os').homedir(), process.env.APP_FOLDER_NAME || '.redisinsight-preview'); +const homedir = process.env.APP_FOLDER_ABSOLUTE_PATH + || (join(os.homedir(), process.env.APP_FOLDER_NAME || '.redisinsight-preview')); export default { dir_path: { diff --git a/redisinsight/api/config/staging.ts b/redisinsight/api/config/staging.ts index 85fbac471c..c869beba43 100644 --- a/redisinsight/api/config/staging.ts +++ b/redisinsight/api/config/staging.ts @@ -1,6 +1,8 @@ import { join } from 'path'; +import * as os from 'os'; -const homedir = join(require('os').homedir(), process.env.APP_FOLDER_NAME || '.redisinsight-v2.0-stage'); +const homedir = process.env.APP_FOLDER_ABSOLUTE_PATH + || (join(os.homedir(), process.env.APP_FOLDER_NAME || '.redisinsight-v2.0-stage')); export default { dir_path: { diff --git a/redisinsight/api/src/modules/shared/services/instances-business/auto-discovery.service.ts b/redisinsight/api/src/modules/shared/services/instances-business/auto-discovery.service.ts index 93abfb8844..96ea09d599 100644 --- a/redisinsight/api/src/modules/shared/services/instances-business/auto-discovery.service.ts +++ b/redisinsight/api/src/modules/shared/services/instances-business/auto-discovery.service.ts @@ -34,6 +34,12 @@ export class AutoDiscoveryService implements OnModuleInit { return; } + // additional check for existing databases + // We should not start auto discover if any database already exists + if ((await this.databaseProvider.getAll()).length) { + return; + } + const settings = await this.settingsService.getSettings(); // check agreements to understand if it is first launch if (!settings.agreements) { diff --git a/redisinsight/main.dev.ts b/redisinsight/main.dev.ts index 7acad4dae0..08fe72e5a9 100644 --- a/redisinsight/main.dev.ts +++ b/redisinsight/main.dev.ts @@ -102,7 +102,7 @@ const launchApiServer = async () => { const detectPortConst = await detectPort(port); process.env.API_PORT = detectPortConst?.toString(); log.info('Available port:', detectPortConst); - server(); + await server(); } catch (error) { log.error('Catch server error:', error); } diff --git a/resources/app/redisinsight.sh b/resources/app/redisinsight.sh new file mode 100755 index 0000000000..11afddc049 --- /dev/null +++ b/resources/app/redisinsight.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +open /Applications/RedisInsight-preview