diff --git a/.buildkite/scripts/steps/test/scout_configs.sh b/.buildkite/scripts/steps/test/scout_configs.sh index cfeda23599843..731ccc16666cb 100644 --- a/.buildkite/scripts/steps/test/scout_configs.sh +++ b/.buildkite/scripts/steps/test/scout_configs.sh @@ -64,14 +64,14 @@ declare -A RUN_MODES RUN_MODES["platform"]="--stateful --serverless=es --serverless=oblt --serverless=security" RUN_MODES["observability"]="--stateful --serverless=oblt --serverless=oblt-logs-essentials" RUN_MODES["search"]="--stateful --serverless=es" -RUN_MODES["security"]="--stateful --serverless=security" +RUN_MODES["security"]="--stateful --serverless=security --serverless=security-essentials --serverless=security-ease" # Define serverless-only run modes based on group declare -A RUN_MODES_SERVERLESS_ONLY RUN_MODES_SERVERLESS_ONLY["platform"]="--serverless=es --serverless=oblt --serverless=security" RUN_MODES_SERVERLESS_ONLY["observability"]="--serverless=oblt --serverless=oblt-logs-essentials" RUN_MODES_SERVERLESS_ONLY["search"]="--serverless=es" -RUN_MODES_SERVERLESS_ONLY["security"]="--serverless=security" +RUN_MODES_SERVERLESS_ONLY["security"]="--serverless=security --serverless=security-essentials --serverless=security-ease" # Determine valid run modes for the group if [[ -n "${SERVERLESS_TESTS_ONLY:-}" ]]; then diff --git a/src/platform/packages/private/kbn-scout-reporting/src/helpers/cli_processing.ts b/src/platform/packages/private/kbn-scout-reporting/src/helpers/cli_processing.ts index eac910aa6ac34..b87e8c6bac64d 100644 --- a/src/platform/packages/private/kbn-scout-reporting/src/helpers/cli_processing.ts +++ b/src/platform/packages/private/kbn-scout-reporting/src/helpers/cli_processing.ts @@ -47,6 +47,8 @@ export function getRunTarget(argv: string[] = process.argv): string { '@svlOblt': 'serverless-oblt', '@svlLogsEssentials': 'serverless-oblt-logs-essentials', '@svlSecurity': 'serverless-security', + '@svlSecurityEssentials': 'serverless-security-essentials', + '@svlSecurityEase': 'serverless-security-ease', }; // Try to find --grep argument in different formats diff --git a/src/platform/packages/shared/kbn-scout/src/config/serverless/security-ease.serverless.config.ts b/src/platform/packages/shared/kbn-scout/src/config/serverless/security-ease.serverless.config.ts new file mode 100644 index 0000000000000..cb2f3a5edffd2 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/src/config/serverless/security-ease.serverless.config.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { ScoutServerConfig } from '../../types'; +import { defaultConfig } from './serverless.base.config'; + +export const servers: ScoutServerConfig = { + ...defaultConfig, + esTestCluster: { + ...defaultConfig.esTestCluster, + serverArgs: [ + ...defaultConfig.esTestCluster.serverArgs, + 'xpack.security.authc.api_key.cache.max_keys=70000', + ], + }, + kbnTestServer: { + ...defaultConfig.kbnTestServer, + serverArgs: [ + ...defaultConfig.kbnTestServer.serverArgs, + '--serverless=security', + '--coreApp.allowDynamicConfigOverrides=true', + `--xpack.task_manager.unsafe.exclude_task_types=${JSON.stringify(['Fleet-Metrics-Task'])}`, + `--xpack.securitySolutionServerless.productTypes=${JSON.stringify([ + { product_line: 'ai_soc', product_tier: 'search_ai_lake' }, + ])}`, + ], + }, +}; diff --git a/src/platform/packages/shared/kbn-scout/src/config/serverless/security-essentials.serverless.config.ts b/src/platform/packages/shared/kbn-scout/src/config/serverless/security-essentials.serverless.config.ts new file mode 100644 index 0000000000000..ec6c9e885e381 --- /dev/null +++ b/src/platform/packages/shared/kbn-scout/src/config/serverless/security-essentials.serverless.config.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import type { ScoutServerConfig } from '../../types'; +import { defaultConfig } from './serverless.base.config'; + +export const servers: ScoutServerConfig = { + ...defaultConfig, + esTestCluster: { + ...defaultConfig.esTestCluster, + serverArgs: [ + ...defaultConfig.esTestCluster.serverArgs, + 'xpack.security.authc.api_key.cache.max_keys=70000', + ], + }, + kbnTestServer: { + ...defaultConfig.kbnTestServer, + serverArgs: [ + ...defaultConfig.kbnTestServer.serverArgs, + '--serverless=security', + '--coreApp.allowDynamicConfigOverrides=true', + `--xpack.task_manager.unsafe.exclude_task_types=${JSON.stringify(['Fleet-Metrics-Task'])}`, + `--xpack.securitySolutionServerless.productTypes=${JSON.stringify([ + { product_line: 'security', product_tier: 'essentials' }, + { product_line: 'endpoint', product_tier: 'essentials' }, + { product_line: 'cloud', product_tier: 'essentials' }, + ])}`, + ], + }, +}; diff --git a/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts b/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts index 2ad5302a4dcd2..07aa053325687 100644 --- a/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts +++ b/src/platform/packages/shared/kbn-scout/src/playwright/tags.ts @@ -9,6 +9,8 @@ const SERVERLESS_ONLY = [ '@svlSecurity', + '@svlSecurityEssentials', + '@svlSecurityEase', '@svlOblt', '@svlLogsEssentials', '@svlSearch', @@ -19,6 +21,8 @@ const ESS_ONLY = ['@ess']; const DEPLOYMENT_AGNOSTIC = [ '@ess', '@svlSecurity', + '@svlSecurityEssentials', + '@svlSecurityEase', '@svlOblt', '@svlLogsEssentials', '@svlSearch', @@ -40,5 +44,7 @@ export const tagsByMode = { oblt: '@svlOblt', 'oblt-logs-essentials': '@svlLogsEssentials', security: '@svlSecurity', + 'security-essentials': '@svlSecurityEssentials', + 'security-ease': '@svlSecurityEase', }, }; diff --git a/src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts b/src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts index 643bd549522d9..1f74dacea4b1c 100644 --- a/src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts +++ b/src/platform/packages/shared/kbn-scout/src/playwright/utils/runner_utils.ts @@ -28,7 +28,15 @@ const getServerlessTag = (projectType: string): string => { throw new Error(`'projectType' is required to determine tags for 'serverless' mode.`); } const tag = - tagsByMode.serverless[projectType as 'security' | 'es' | 'oblt' | 'oblt-logs-essentials']; + tagsByMode.serverless[ + projectType as + | 'security' + | 'security-essentials' + | 'security-ease' + | 'es' + | 'oblt' + | 'oblt-logs-essentials' + ]; if (!tag) { throw new Error(`No tags found for projectType: '${projectType}'.`); } diff --git a/src/platform/packages/shared/kbn-scout/src/servers/flags.ts b/src/platform/packages/shared/kbn-scout/src/servers/flags.ts index 0d1f5c8447e4d..3f1473b95f35f 100644 --- a/src/platform/packages/shared/kbn-scout/src/servers/flags.ts +++ b/src/platform/packages/shared/kbn-scout/src/servers/flags.ts @@ -21,7 +21,7 @@ export const SERVER_FLAG_OPTIONS: FlagOptions = { boolean: ['stateful', 'logToFile'], help: ` --stateful Start Elasticsearch and Kibana with default ESS configuration - --serverless Start Elasticsearch and Kibana with serverless project configuration: es | oblt | oblt-logs-essentials | security + --serverless Start Elasticsearch and Kibana with serverless project configuration: es | oblt | oblt-logs-essentials | security | security-essentials | security-ease --esFrom Build Elasticsearch from source or run snapshot or serverless. Default: $TEST_ES_FROM or "snapshot" --kibana-install-dir Run Kibana from existing install directory instead of from source --logToFile Write the log output from Kibana/ES to files instead of to stdout @@ -34,6 +34,8 @@ export function parseServerFlags(flags: FlagsReader) { 'oblt', 'oblt-logs-essentials', 'security', + 'security-essentials', + 'security-ease', ]); const isStateful = flags.boolean('stateful'); diff --git a/src/platform/packages/shared/kbn-scout/src/types/cli.d.ts b/src/platform/packages/shared/kbn-scout/src/types/cli.d.ts index d8f4c2b7509f9..146be925a11f0 100644 --- a/src/platform/packages/shared/kbn-scout/src/types/cli.d.ts +++ b/src/platform/packages/shared/kbn-scout/src/types/cli.d.ts @@ -12,4 +12,6 @@ export type CliSupportedServerModes = | 'serverless=es' | 'serverless=oblt' | 'serverless=oblt-logs-essentials' - | 'serverless=security'; + | 'serverless=security' + | 'serverless=security-essentials' + | 'serverless=security-ease';