AI4DSOC security serverless periodic pipeline (#221127)

## Summary

Add the AI4DSOC API and Cypress test references that will be executed as
part of the security serverless periodic pipelines. This PR is paired
with this PR:
https://github.com/elastic/security-serverless-quality-gate/pull/47

Executions will occur here:

https://buildkite.com/elastic/security-serverless-quality-gate-kibana-periodic

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: dkirchan <diamantis.kirchantzoglou@elastic.co>
This commit is contained in:
Kris Gross 2025-06-16 17:00:07 -04:00 committed by GitHub
parent 4c62313e1b
commit e5c907a267
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 113 additions and 2 deletions

View file

@ -47,6 +47,7 @@ spec:
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/scalability_testing-daily.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/scalability_testing-daily.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-ess/gen-ai-evals.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-ess/gen-ai-evals.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-ess/security-solution-ess.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-ess/security-solution-ess.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-ai4dsoc.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-defend-workflows.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-defend-workflows.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-detection-engine.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-detection-engine.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-entity-analytics.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-entity-analytics.yml

View file

@ -0,0 +1,40 @@
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: bk-kibana-serverless-secsol-ai4dsoc
description: "[MKI] Executes Cypress tests for the AI4DSOC team"
spec:
type: buildkite-pipeline
owner: 'group:security-engineering-productivity'
system: buildkite
implementation:
apiVersion: buildkite.elastic.dev/v1
kind: Pipeline
metadata:
name: "Kibana / Serverless / Security Solution Quality Gate / AI4DSOC"
description: "[MKI] Executes Cypress and API tests for the AI4DSOC team"
spec:
repository: elastic/kibana
pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_ai4dsoc.yml
provider_settings:
build_branches: false
build_pull_requests: false
publish_commit_status: false
skip_pull_request_builds_for_existing_commits: false
trigger_mode: none
build_tags: false
teams:
kibana-tech-leads:
access_level: MANAGE_BUILD_AND_READ
appex-qa:
access_level: MANAGE_BUILD_AND_READ
kibana-operations:
access_level: MANAGE_BUILD_AND_READ
security-engineering-productivity:
access_level: MANAGE_BUILD_AND_READ
everyone:
access_level: BUILD_AND_READ
tags:
- kibana
- security-solution

View file

@ -0,0 +1,48 @@
steps:
- group: "Cypress MKI - AI4DSOC"
key: cypress_test_ai4dsoc
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:ai4dsoc
label: "Cypress MKI - AI4DSOC"
key: test_ai4dsoc
env:
BK_TEST_SUITE_KEY: "serverless-cypress-ai4dsoc"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
machineType: n2-standard-4
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 1
- group: "API MKI - AI4DSOC"
key: api_test_ai4dsoc
steps:
- label: Running ai4dsoc_cases:qa:serverless
command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh ai4dsoc_cases:qa:serverless
key: ai4dsoc_cases:qa:serverless
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
machineType: n2-standard-4
timeout_in_minutes: 120
retry:
automatic:
- exit_status: "1"
limit: 2
- label: Running ai4dsoc_nlp_cleanup_task:qa:serverless
command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh ai4dsoc_nlp_cleanup_task:qa:serverless
key: ai4dsoc_nlp_cleanup_task:qa:serverless
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
machineType: n2-standard-4
timeout_in_minutes: 120
retry:
automatic:
- exit_status: "1"
limit: 2

View file

@ -0,0 +1,19 @@
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh
label: "Upload runtime info"
key: upload_runtime_info
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-prod
provider: gcp
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
retry:
automatic:
- exit_status: "*"
limit: 1
- command: "cat .buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_ai4dsoc.yml | buildkite-agent pipeline upload"
label: 'Upload Serverless Periodic AI4DSOC Pipeline'
if: "build.env('KIBANA_MKI_QUALITY_GATE') != '1'"

View file

@ -69,9 +69,11 @@
"ai4dsoc_cases:server:serverless": "npm run initialize-server:ai4dsoc cases serverless", "ai4dsoc_cases:server:serverless": "npm run initialize-server:ai4dsoc cases serverless",
"ai4dsoc_cases:runner:serverless": "npm run run-tests:ai4dsoc cases serverless serverlessEnv", "ai4dsoc_cases:runner:serverless": "npm run run-tests:ai4dsoc cases serverless serverlessEnv",
"ai4dsoc_cases:qa:serverless": "npm run run-tests:ai4dsoc cases serverless qaPeriodicEnv",
"ai4dsoc_nlp_cleanup_task:server:serverless": "npm run initialize-server:ai4dsoc nlp_cleanup_task serverless", "ai4dsoc_nlp_cleanup_task:server:serverless": "npm run initialize-server:ai4dsoc nlp_cleanup_task serverless",
"ai4dsoc_nlp_cleanup_task:runner:serverless": "npm run run-tests:ai4dsoc nlp_cleanup_task serverless serverlessEnv", "ai4dsoc_nlp_cleanup_task:runner:serverless": "npm run run-tests:ai4dsoc nlp_cleanup_task serverless serverlessEnv",
"ai4dsoc_nlp_cleanup_task:qa:serverless": "npm run run-tests:ai4dsoc nlp_cleanup_task serverless qaPeriodicEnv",
"genai_evals:server:ess": "npm run initialize-server:genai:trial_complete evaluations ess", "genai_evals:server:ess": "npm run initialize-server:genai:trial_complete evaluations ess",
"genai_evals:runner:ess": "npm run run-tests:genai:trial_complete evaluations ess essEnv", "genai_evals:runner:ess": "npm run run-tests:genai:trial_complete evaluations ess essEnv",

View file

@ -51,7 +51,7 @@ import {
// https://github.com/elastic/kibana/issues/187279 // https://github.com/elastic/kibana/issues/187279
describe( describe(
'Add endpoint exception from rule details', 'Add endpoint exception from rule details',
{ tags: ['@ess', '@serverless, @skipInServerlessMKI'] }, { tags: ['@ess', '@serverless', '@skipInServerlessMKI'] },
() => { () => {
const ITEM_NAME = 'Sample Exception List Item'; const ITEM_NAME = 'Sample Exception List Item';
const NEW_ITEM_NAME = 'Exception item-EDITED'; const NEW_ITEM_NAME = 'Exception item-EDITED';

View file

@ -54,6 +54,7 @@
"cypress:run:qa:serverless:detection_engine": "yarn cypress:qa:serverless --spec './cypress/e2e/detection_response/detection_engine/!(exceptions)/**/*.cy.ts'", "cypress:run:qa:serverless:detection_engine": "yarn cypress:qa:serverless --spec './cypress/e2e/detection_response/detection_engine/!(exceptions)/**/*.cy.ts'",
"cypress:run:qa:serverless:detection_engine:exceptions": "yarn cypress:qa:serverless --spec './cypress/e2e/detection_response/detection_engine/exceptions/**/*.cy.ts'", "cypress:run:qa:serverless:detection_engine:exceptions": "yarn cypress:qa:serverless --spec './cypress/e2e/detection_response/detection_engine/exceptions/**/*.cy.ts'",
"cypress:run:qa:serverless:ai_assistant": "yarn cypress:qa:serverless --spec './cypress/e2e/ai_assistant/**/*.cy.ts'", "cypress:run:qa:serverless:ai_assistant": "yarn cypress:qa:serverless --spec './cypress/e2e/ai_assistant/**/*.cy.ts'",
"cypress:run:qa:serverless:cloud_security_posture": "yarn cypress:qa:serverless --spec './cypress/e2e/cloud_security_posture/**/*.cy.ts" "cypress:run:qa:serverless:cloud_security_posture": "yarn cypress:qa:serverless --spec './cypress/e2e/cloud_security_posture/**/*.cy.ts",
"cypress:run:qa:serverless:ai4dsoc": "yarn cypress:qa:serverless --spec './cypress/e2e/ai4dsoc/**/*.cy.ts'"
} }
} }