Skip to content

Commit 5c070b1

Browse files
committed
Merge branch 'main' into feature/RI-781_Tree_view
2 parents 65dc8e0 + ac8d699 commit 5c070b1

File tree

135 files changed

+2700
-1602
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

135 files changed

+2700
-1602
lines changed

.circleci/config.yml

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -417,28 +417,36 @@ jobs:
417417
if [ << parameters.env >> == "prod" ]; then
418418
echo "Build version: $CURRENT_VERSION"
419419
cp ./redisinsight/package.json ./electron/package.json
420+
echo "$VERSION" > electron/version
420421
exit 0
421422
fi
422423
423424
VERSION=$CURRENT_VERSION-<< parameters.env >>-$CIRCLE_BUILD_NUM
424425
echo "Build version: $VERSION"
426+
echo "$VERSION" > electron/version
425427
echo $(jq ".version=\"$VERSION\"" redisinsight/package.json) > electron/package.json
426428
- persist_to_workspace:
427429
root: /root/project
428430
paths:
429431
- electron
430432
linux:
431-
docker:
432-
- image: circleci/node:15.14.0
433+
machine:
434+
image: ubuntu-2004:202101-01
433435
resource_class: large
434436
parameters:
435437
env:
436438
description: Build environment (stage || prod)
437439
type: enum
438440
default: stage
439441
enum: ['stage', 'prod', 'dev']
442+
redisstack:
443+
description: Build RedisStack archives
444+
type: boolean
445+
default: true
440446
steps:
441447
- checkout
448+
- node/install:
449+
node-version: '14.17'
442450
- attach_workspace:
443451
at: .
444452
- run:
@@ -465,12 +473,27 @@ jobs:
465473
fi
466474
467475
UPGRADES_LINK='' SEGMENT_WRITE_KEY='' yarn package:stage
476+
- when:
477+
condition:
478+
equal: [ true, << parameters.redisstack >> ]
479+
steps:
480+
- run:
481+
name: Build sources
482+
command: ./.circleci/redisstack/build.sh
483+
- run:
484+
name: Build modules
485+
command: |
486+
PLATFORM=linux ARCH=x64 .circleci/redisstack/build_modules.sh
487+
PLATFORM=linux ARCH=arm64 .circleci/redisstack/build_modules.sh
488+
PLATFORM=darwin ARCH=x64 .circleci/redisstack/build_modules.sh
489+
PLATFORM=darwin ARCH=arm64 .circleci/redisstack/build_modules.sh
468490
- persist_to_workspace:
469491
root: .
470492
paths:
471493
- release/RedisInsight*.deb
472494
- release/RedisInsight*.AppImage
473495
- release/*-linux.yml
496+
- release/redisstack
474497
macosx:
475498
macos:
476499
xcode: 13.2.1
@@ -773,17 +796,6 @@ jobs:
773796
774797
done
775798
776-
release-guides:
777-
executor: linux-executor
778-
steps:
779-
- checkout
780-
- run:
781-
name: Release guides
782-
command: |
783-
cd ./redisinsight/ui/src/packages/enablement-area && zip -r data.zip .
784-
mkdir -p _build && mv data.zip ./_build
785-
echo "{\"timestamp\":$(date +%s)}" > ./_build/build.json
786-
aws s3 cp _build/ s3://${AWS_BUCKET_NAME}/public/guides --recursive
787799
workflows:
788800
build:
789801
jobs:
@@ -1039,13 +1051,3 @@ workflows:
10391051
report: true
10401052
requires:
10411053
- Build app - Linux (stage)
1042-
guides:
1043-
jobs:
1044-
- guides-approve:
1045-
type: approval
1046-
name: Approve guides release
1047-
<<: *guidesFilter
1048-
- release-guides:
1049-
name: Build & release
1050-
requires:
1051-
- Approve guides release

.circleci/redisstack/build.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/bash
2+
3+
# install deps
4+
yarn
5+
yarn --cwd redisinsight/api
6+
7+
# build
8+
yarn build:statics
9+
yarn build:web
10+
yarn --cwd ./redisinsight/api build:prod
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/bash
2+
3+
PLATFORM=${PLATFORM:-'linux'}
4+
ELECTRON_VERSION=$(cat electron/version)
5+
VERSION=${ELECTRON_VERSION:-'redisstack'}
6+
ARCH=${ARCH:-'x64'}
7+
FILENAME="RedisInsight-$PLATFORM.$VERSION.$ARCH.zip"
8+
9+
# reinstall backend prod dependencies only (optimise space)
10+
rm -rf redisinsight/api/node_modules
11+
12+
npm_config_arch="$ARCH" \
13+
npm_config_target_arch="$ARCH" \
14+
npm_config_platform="$PLATFORM" \
15+
npm_config_target_platform="$PLATFORM" \
16+
npm_config_keytar_binary_host_mirror="$KEYTAR_MIRROR" \
17+
npm_config_node_sqlite3_binary_host_mirror="$SQLITE_MIRROR" \
18+
yarn --cwd ./redisinsight/api install --production
19+
20+
cp redisinsight/api/.yarnclean.prod redisinsight/api/.yarnclean
21+
yarn --cwd ./redisinsight/api autoclean --force
22+
23+
rm -rf redisinsight/build.zip
24+
cd redisinsight && zip -r build.zip \
25+
api/node_modules \
26+
api/dist \
27+
ui/dist \
28+
&& cd ..
29+
30+
mkdir -p release/redisstack
31+
cp redisinsight/build.zip release/redisstack/"$FILENAME"

redisinsight/api/config/default.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ export default {
2121
pluginsAssets: join(staticDir, 'resources', 'plugins'),
2222
commands: join(homedir, 'commands'),
2323
defaultCommandsDir: join(defaultsDir, 'commands'),
24-
enablementArea: join(homedir, 'enablement-area'),
24+
enablementArea: process.env.GUIDES_DEV_PATH || join(homedir, 'enablement-area'),
2525
defaultEnablementArea: join(defaultsDir, 'enablement-area'),
26+
content: process.env.CONTENT_DEV_PATH || join(homedir, 'content'),
27+
defaultContent: join(defaultsDir, 'content'),
2628
caCertificates: join(homedir, 'ca_certificates'),
2729
clientCertificates: join(homedir, 'client_certificates'),
2830
},
@@ -34,6 +36,7 @@ export default {
3436
customPluginsUri: '/plugins',
3537
staticUri: '/static',
3638
enablementAreaUri: '/static/workbench',
39+
contentUri: '/static/content',
3740
defaultPluginsUri: '/static/plugins',
3841
pluginsAssetsUri: '/static/resources/plugins',
3942
secretStoragePassword: process.env.SECRET_STORAGE_PASSWORD,
@@ -44,6 +47,7 @@ export default {
4447
buildType: process.env.BUILD_TYPE || 'ELECTRON',
4548
appVersion: process.env.APP_VERSION || '2.0.0',
4649
requestTimeout: parseInt(process.env.REQUEST_TIMEOUT, 10) || 10000,
50+
excludeRoutes: [],
4751
},
4852
sockets: {
4953
cors: process.env.SOCKETS_CORS ? process.env.SOCKETS_CORS === 'true' : false,
@@ -90,9 +94,17 @@ export default {
9094
},
9195
enablementArea: {
9296
updateUrl: process.env.ENABLEMENT_AREA_UPDATE_URL
93-
|| 'https://s3.amazonaws.com/redisinsight.download/public/guides',
97+
|| 'https://github.com/RedisInsight/Guides/releases/download/latest',
9498
zip: process.env.ENABLEMENT_AREA_ZIP || 'data.zip',
9599
buildInfo: process.env.ENABLEMENT_AREA_CHECKSUM || 'build.json',
100+
devMode: !!process.env.GUIDES_DEV_PATH,
101+
},
102+
content: {
103+
updateUrl: process.env.CONTENT_UPDATE_URL
104+
|| 'https://github.com/RedisInsight/Statics/releases/download/latest',
105+
zip: process.env.CONTENT_ZIP || 'data.zip',
106+
buildInfo: process.env.CONTENT_CHECKSUM || 'build.json',
107+
devMode: !!process.env.CONTENT_DEV_PATH,
96108
},
97109
workbench: {
98110
maxResultSize: parseInt(process.env.COMMAND_EXECUTION_MAX_RESULT_SIZE, 10) || 1024 * 1024,
@@ -141,4 +153,10 @@ export default {
141153
|| 'https://raw.githubusercontent.com/RedisBloom/RedisBloom/master/commands.json',
142154
},
143155
],
156+
redisStack: {
157+
id: process.env.BUILD_TYPE === 'REDIS_STACK' ? process.env.REDIS_STACK_DATABASE_ID || 'redis-stack' : undefined,
158+
name: process.env.REDIS_STACK_DATABASE_NAME,
159+
host: process.env.REDIS_STACK_DATABASE_HOST,
160+
port: process.env.REDIS_STACK_DATABASE_PORT,
161+
},
144162
};

redisinsight/api/config/production.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ export default {
88
logs: join(homedir, 'logs'),
99
customPlugins: join(homedir, 'plugins'),
1010
commands: join(homedir, 'commands'),
11-
enablementArea: join(homedir, 'enablement-area'),
11+
enablementArea: process.env.GUIDES_DEV_PATH || join(homedir, 'enablement-area'),
12+
content: process.env.CONTENT_DEV_PATH || join(homedir, 'content'),
1213
caCertificates: join(homedir, 'ca_certificates'),
1314
clientCertificates: join(homedir, 'client_certificates'),
1415
},

redisinsight/api/config/stack.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { RequestMethod } from '@nestjs/common';
2+
3+
export default {
4+
server: {
5+
excludeRoutes: [
6+
'redis-enterprise/*',
7+
'instance/redis-enterprise-dbs',
8+
'instance/redis-cloud-dbs',
9+
'instance/sentinel-masters',
10+
{ path: 'instance', method: RequestMethod.POST },
11+
{ path: 'instance', method: RequestMethod.DELETE },
12+
{ path: 'instance/:id', method: RequestMethod.DELETE },
13+
],
14+
},
15+
};

redisinsight/api/config/staging.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ export default {
88
logs: join(homedir, 'logs'),
99
customPlugins: join(homedir, 'plugins'),
1010
commands: join(homedir, 'commands'),
11-
enablementArea: join(homedir, 'enablement-area'),
11+
enablementArea: process.env.GUIDES_DEV_PATH || join(homedir, 'enablement-area'),
12+
content: process.env.CONTENT_DEV_PATH || join(homedir, 'content'),
1213
caCertificates: join(homedir, 'ca_certificates'),
1314
clientCertificates: join(homedir, 'client_certificates'),
1415
},

redisinsight/api/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"body-parser": "^1.19.0",
5252
"class-transformer": "^0.2.3",
5353
"class-validator": "^0.12.2",
54+
"dotenv": "^16.0.0",
5455
"express": "^4.17.1",
5556
"fs-extra": "^10.0.0",
5657
"ioredis": "^4.27.1",

redisinsight/api/src/app.module.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import * as fs from 'fs';
2-
import { Module, OnModuleInit } from '@nestjs/common';
2+
import {
3+
MiddlewareConsumer, Module, NestModule, OnModuleInit,
4+
} from '@nestjs/common';
35
import { TypeOrmModule } from '@nestjs/typeorm';
46
import { ServeStaticModule } from '@nestjs/serve-static';
57
import { EventEmitterModule } from '@nestjs/event-emitter';
@@ -9,16 +11,17 @@ import config from 'src/utils/config';
911
import { PluginModule } from 'src/modules/plugin/plugin.module';
1012
import { CommandsModule } from 'src/modules/commands/commands.module';
1113
import { WorkbenchModule } from 'src/modules/workbench/workbench.module';
12-
import { EnablementAreaModule } from 'src/modules/enablement-area/enablement-area.module';
1314
import { SharedModule } from './modules/shared/shared.module';
1415
import { InstancesModule } from './modules/instances/instances.module';
1516
import { BrowserModule } from './modules/browser/browser.module';
1617
import { RedisEnterpriseModule } from './modules/redis-enterprise/redis-enterprise.module';
1718
import { RedisSentinelModule } from './modules/redis-sentinel/redis-sentinel.module';
1819
import { MonitorModule } from './modules/monitor/monitor.module';
1920
import { CliModule } from './modules/cli/cli.module';
21+
import { StaticsManagementModule } from './modules/statics-management/statics-management.module';
2022
import { SettingsController } from './controllers/settings.controller';
2123
import { ServerInfoController } from './controllers/server-info.controller';
24+
import { ExcludeRouteMiddleware } from './middleware/exclude-route.middleware';
2225
import { routes } from './app.routes';
2326
import ormConfig from '../config/ormconfig';
2427

@@ -64,12 +67,12 @@ const PATH_CONFIG = config.get('dir_path');
6467
fallthrough: false,
6568
},
6669
}),
67-
EnablementAreaModule,
70+
StaticsManagementModule,
6871
],
6972
controllers: [SettingsController, ServerInfoController],
7073
providers: [],
7174
})
72-
export class AppModule implements OnModuleInit {
75+
export class AppModule implements OnModuleInit, NestModule {
7376
onModuleInit() {
7477
// creating required folders
7578
const foldersToCreate = [
@@ -83,4 +86,12 @@ export class AppModule implements OnModuleInit {
8386
}
8487
});
8588
}
89+
90+
configure(consumer: MiddlewareConsumer) {
91+
consumer
92+
.apply(ExcludeRouteMiddleware)
93+
.forRoutes(
94+
...SERVER_CONFIG.excludeRoutes,
95+
);
96+
}
8697
}

redisinsight/api/src/decorators/api-endpoint.decorator.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
import { applyDecorators, HttpCode } from '@nestjs/common';
2-
import { ApiOperation, ApiResponse } from '@nestjs/swagger';
2+
import { ApiExcludeEndpoint, ApiOperation, ApiResponse } from '@nestjs/swagger';
33
import { ApiResponseOptions } from '@nestjs/swagger/dist/decorators/api-response.decorator';
4+
import config from 'src/utils/config';
5+
import { BuildType } from 'src/modules/core/models/server-provider.interface';
6+
7+
const SERVER_CONFIG = config.get('server');
48

59
export interface IApiEndpointOptions {
610
description: string;
711
statusCode?: number;
812
responses?: ApiResponseOptions[];
13+
excludeFor?: BuildType[]
914
}
1015

1116
export function ApiEndpoint(
1217
options: IApiEndpointOptions,
1318
): MethodDecorator & ClassDecorator {
14-
const { description, statusCode, responses = [] } = options;
19+
const {
20+
description, statusCode, responses = [], excludeFor = [],
21+
} = options;
1522
return applyDecorators(
1623
ApiOperation({ description }),
24+
ApiExcludeEndpoint(excludeFor.includes(SERVER_CONFIG.buildType)),
1725
HttpCode(statusCode),
1826
...responses?.map((response) => ApiResponse(response)),
1927
);

0 commit comments

Comments
 (0)