[Security] Split quality gate security solution pipelines to add more granularity. (#179145)

This PR aims to deprecate the old all in one pipeline for kibana
serverless security solution cypress and split it into one pipeline per
team to add more granularity.

We need to split the pipelines and then add as well one Test suite per
team.

All this PR does is the split into multiple pipelines, one per team,
with their relevant test suite in buildkite:
- Detections Engine - [Buildkite Test
Suite](https://buildkite.com/organizations/elastic/analytics/suites/serverless-mki-cypress-detection-engine)
- Entity Analytics - [Buildkite Test
Suite](https://buildkite.com/organizations/elastic/analytics/suites/serverless-mki-cypress-entity-analytics)
- Explore - [Buildkite Test
Suite](https://buildkite.com/organizations/elastic/analytics/suites/serverless-mki-cypress-explore)
- Gen AI - [Buildkite Test
Suite](https://buildkite.com/organizations/elastic/analytics/suites/serverless-mki-cypress-gen-ai)
- Investigations - [Buildkite Test
Suite](https://buildkite.com/organizations/elastic/analytics/suites/serverless-mki-cypress-investigations)
- Rule management - [Buildkite Test
Suite](https://buildkite.com/organizations/elastic/analytics/suites/serverless-mki-cypress-rule-management)


Relevant Tickets:
- https://github.com/elastic/security-team/issues/8903
- https://github.com/elastic/security-team/issues/8801

---------

Co-authored-by: Alex Szabo <alex.szabo@elastic.co>
This commit is contained in:
dkirchan 2024-03-27 18:21:16 +01:00 committed by GitHub
parent e05c2ee320
commit b81d5a9a42
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 553 additions and 170 deletions

View file

@ -7,4 +7,10 @@ spec:
type: url
targets:
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-migration-staging.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-explore.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-investigations.yml
- https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-rule-management.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-gen-ai.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/kibana-serverless-release.yml

View file

@ -0,0 +1,33 @@
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: buildkite-pipeline-kibana-serverless-security-solution-quality-gate-detection-engine
description: "[MKI] Executes Cypress tests for the Detection Engine 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 / Detection Engine"
description: "[MKI] Executes Cypress tests for the Detection Engine team"
spec:
repository: elastic/kibana
pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_detection_engine.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-operations:
access_level: MANAGE_BUILD_AND_READ
security-engineering-productivity:
access_level: MANAGE_BUILD_AND_READ
everyone:
access_level: BUILD_AND_READ

View file

@ -0,0 +1,33 @@
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: buildkite-pipeline-kibana-serverless-security-solution-quality-gate-entity-analytics
description: "[MKI] Executes Cypress tests for the Entity Analytics 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 / Entity Analytics"
description: "[MKI] Executes Cypress tests for the Entity Analytics team"
spec:
repository: elastic/kibana
pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_entity_analytics.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-operations:
access_level: MANAGE_BUILD_AND_READ
security-engineering-productivity:
access_level: MANAGE_BUILD_AND_READ
everyone:
access_level: BUILD_AND_READ

View file

@ -0,0 +1,33 @@
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: buildkite-pipeline-kibana-serverless-security-solution-quality-gate-explore
description: "[MKI] Executes Cypress tests for the Explore 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 / Explore"
description: "[MKI] Executes Cypress tests for the Explore team"
spec:
repository: elastic/kibana
pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_explore.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-operations:
access_level: MANAGE_BUILD_AND_READ
security-engineering-productivity:
access_level: MANAGE_BUILD_AND_READ
everyone:
access_level: BUILD_AND_READ

View file

@ -0,0 +1,33 @@
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: buildkite-pipeline-kibana-serverless-security-solution-quality-gate-gen-ai
description: "[MKI] Executes Cypress tests for the Gen AI 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 / Gen Ai"
description: "[MKI] Executes Cypress tests for the Gen AI team"
spec:
repository: elastic/kibana
pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_gen_ai.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-operations:
access_level: MANAGE_BUILD_AND_READ
security-engineering-productivity:
access_level: MANAGE_BUILD_AND_READ
everyone:
access_level: BUILD_AND_READ

View file

@ -0,0 +1,33 @@
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: buildkite-pipeline-kibana-serverless-security-solution-quality-gate-investigations
description: "[MKI] Executes Cypress tests for the Investigations 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 / Investigations"
description: "[MKI] Executes Cypress tests for the Investigations team"
spec:
repository: elastic/kibana
pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_investigations.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-operations:
access_level: MANAGE_BUILD_AND_READ
security-engineering-productivity:
access_level: MANAGE_BUILD_AND_READ
everyone:
access_level: BUILD_AND_READ

View file

@ -0,0 +1,33 @@
# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: buildkite-pipeline-kibana-serverless-security-solution-quality-gate-rule-management
description: "[MKI] Executes Cypress tests for the Rule Management 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 / Rule Management"
description: "[MKI] Executes Cypress tests for the Rule Management team"
spec:
repository: elastic/kibana
pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_rule_management.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-operations:
access_level: MANAGE_BUILD_AND_READ
security-engineering-productivity:
access_level: MANAGE_BUILD_AND_READ
everyone:
access_level: BUILD_AND_READ

View file

@ -1,123 +0,0 @@
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh
label: Build kibana image
key: build_image
agents:
queue: n2-16-spot
timeout_in_minutes: 60
retry:
automatic:
- exit_status: "-1"
limit: 3
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh
label: "Upload runtime info"
key: upload_runtime_info
depends_on: build_image
agents:
queue: n2-4-spot
timeout_in_minutes: 300
retry:
automatic:
- exit_status: "*"
limit: 1
- group: "Execute Tests"
depends_on: build_image
key: test_execution
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:explore
label: 'Serverless MKI QA Explore - Security Solution Cypress Tests'
agents:
queue: n2-4-spot
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 4
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:investigations
label: 'Serverless MKI QA Investigations - Security Solution Cypress Tests'
agents:
queue: n2-4-spot
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 8
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:rule_management
label: 'Serverless MKI QA Rule Management - Security Solution Cypress Tests'
agents:
queue: n2-4-spot
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 8
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:rule_management:prebuilt_rules
label: 'Serverless MKI QA Rule Management - Prebuilt Rules - Security Solution Cypress Tests'
agents:
queue: n2-4-spot
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 4
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine
label: 'Serverless MKI QA Detection Engine - Security Solution Cypress Tests'
agents:
queue: n2-4-spot
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 8
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine:exceptions
label: 'Serverless MKI QA Detection Engine - Exceptions - Security Solution Cypress Tests'
agents:
queue: n2-4-spot
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 6
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:ai_assistant
label: 'Serverless MKI QA AI Assistant - Security Solution Cypress Tests'
agents:
queue: n2-4-spot
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 1
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:entity_analytics
label: 'Serverless MKI QA Entity Analytics - Security Solution Cypress Tests'
agents:
queue: n2-4-spot
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 2
retry:
automatic:
- exit_status: '*'
limit: 1

View file

@ -0,0 +1,71 @@
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh
label: Build kibana image
key: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-16
preemptible: true
timeout_in_minutes: 60
retry:
automatic:
- exit_status: "-1"
limit: 3
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh
label: "Upload runtime info"
key: upload_runtime_info
depends_on: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
retry:
automatic:
- exit_status: "*"
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine
label: 'Serverless MKI QA Detection Engine - Security Solution Cypress Tests'
key: test_detection_engine
depends_on: build_image
env:
BK_TEST_SUITE_KEY: "serverless-cypress-detection-engine"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 8
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine:exceptions
label: 'Serverless MKI QA Detection Engine - Exceptions - Security Solution Cypress Tests'
key: test_detection_engine_exceptions
depends_on: build_image
env:
BK_TEST_SUITE_KEY: "serverless-cypress-detection-engine"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 6
retry:
automatic:
- exit_status: '*'
limit: 1

View file

@ -0,0 +1,51 @@
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh
label: Build kibana image
key: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-16
preemptible: true
timeout_in_minutes: 60
retry:
automatic:
- exit_status: "-1"
limit: 3
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh
label: "Upload runtime info"
key: upload_runtime_info
depends_on: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
retry:
automatic:
- exit_status: "*"
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:entity_analytics
label: 'Serverless MKI QA Entity Analytics - Security Solution Cypress Tests'
depends_on: build_image
key: test_entity_analytics
env:
BK_TEST_SUITE_KEY: "serverless-cypress-entity-analytics"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 2
retry:
automatic:
- exit_status: '*'
limit: 1

View file

@ -0,0 +1,51 @@
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh
label: Build kibana image
key: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-16
preemptible: true
timeout_in_minutes: 60
retry:
automatic:
- exit_status: "-1"
limit: 3
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh
label: "Upload runtime info"
key: upload_runtime_info
depends_on: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
retry:
automatic:
- exit_status: "*"
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:explore
depends_on: build_image
key: test_explore
label: 'Serverless MKI QA Explore - Security Solution Cypress Tests'
env:
BK_TEST_SUITE_KEY: "serverless-cypress-explore"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 4
retry:
automatic:
- exit_status: '*'
limit: 1

View file

@ -0,0 +1,51 @@
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh
label: Build kibana image
key: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-16
preemptible: true
timeout_in_minutes: 60
retry:
automatic:
- exit_status: "-1"
limit: 3
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh
label: "Upload runtime info"
key: upload_runtime_info
depends_on: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
retry:
automatic:
- exit_status: "*"
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:ai_assistant
label: 'Serverless MKI QA AI Assistant - Security Solution Cypress Tests'
depends_on: build_image
key: test_ai_assistant
env:
BK_TEST_SUITE_KEY: "serverless-cypress-gen-ai"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 1
retry:
automatic:
- exit_status: '*'
limit: 1

View file

@ -0,0 +1,51 @@
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh
label: Build kibana image
key: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-16
preemptible: true
timeout_in_minutes: 60
retry:
automatic:
- exit_status: "-1"
limit: 3
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh
label: "Upload runtime info"
key: upload_runtime_info
depends_on: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
retry:
automatic:
- exit_status: "*"
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:investigations
depends_on: build_image
key: test_investigations
label: 'Serverless MKI QA Investigations - Security Solution Cypress Tests'
env:
BK_TEST_SUITE_KEY: "serverless-cypress-investigations"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 8
retry:
automatic:
- exit_status: '*'
limit: 1

View file

@ -0,0 +1,71 @@
steps:
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh
label: Build kibana image
key: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-16
preemptible: true
timeout_in_minutes: 60
retry:
automatic:
- exit_status: "-1"
limit: 3
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh
label: "Upload runtime info"
key: upload_runtime_info
depends_on: build_image
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
timeout_in_minutes: 300
retry:
automatic:
- exit_status: "*"
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:rule_management
label: 'Serverless MKI QA Rule Management - Security Solution Cypress Tests'
depends_on: build_image
key: test_rule_management
env:
BK_TEST_SUITE_KEY: "serverless-cypress-rule-management"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 8
retry:
automatic:
- exit_status: '*'
limit: 1
- command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:rule_management:prebuilt_rules
label: 'Serverless MKI QA Rule Management - Prebuilt Rules - Security Solution Cypress Tests'
depends_on: build_image
key: test_rule_management_prebuilt_rules
env:
BK_TEST_SUITE_KEY: "serverless-cypress-rule-management"
agents:
image: family/kibana-ubuntu-2004
imageProject: elastic-images-qa
provider: gcp
machineType: n2-standard-4
preemptible: true
# TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate.
timeout_in_minutes: 300
parallelism: 4
retry:
automatic:
- exit_status: '*'
limit: 1

View file

@ -30,6 +30,6 @@ fi
QA_API_KEY=$(vault_get security-solution-quality-gate qa_api_key)
QA_CONSOLE_URL=$(vault_get security-solution-quality-gate qa_console_url)
BK_ANALYTICS_API_KEY=$(vault_get security-solution-quality-gate serverless-sec-sol-cypress-bk-api-key)
BK_ANALYTICS_API_KEY=$(vault_get security-solution-quality-gate $BK_TEST_SUITE_KEY)
QA_CONSOLE_URL=$QA_CONSOLE_URL KIBANA_MKI_USE_LATEST_COMMIT=$KIBANA_OVERRIDE_FLAG BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY CLOUD_QA_API_KEY=$QA_API_KEY yarn $1; status=$?; yarn junit:merge || :; exit $status

View file

@ -1,5 +0,0 @@
#!/bin/bash
set -euo pipefail
ts-node .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts

View file

@ -1,40 +0,0 @@
/*
* 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 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 or the Server
* Side Public License, v 1.
*/
import { execSync } from 'child_process';
import fs from 'fs';
const getPipeline = (filename: string, removeSteps = true) => {
const str = fs.readFileSync(filename).toString();
return removeSteps ? str.replace(/^steps:/, '') : str;
};
const uploadPipeline = (pipelineContent: string | object) => {
const str =
typeof pipelineContent === 'string' ? pipelineContent : JSON.stringify(pipelineContent);
execSync('buildkite-agent pipeline upload', {
input: str,
stdio: ['pipe', 'inherit', 'inherit'],
});
};
(async () => {
try {
const pipeline = [];
pipeline.push(
getPipeline('.buildkite/pipelines/security_solution/security_solution_cypress.yml', false)
);
// remove duplicated steps
uploadPipeline([...new Set(pipeline)].join('\n'));
} catch (ex) {
console.error('PR pipeline generation error', ex.message);
process.exit(1);
}
})();

View file

@ -140,7 +140,8 @@ async function createSecurityProject(
};
} catch (error) {
if (error instanceof AxiosError) {
log.error(`${error.response?.status}:${error.response?.data}`);
const errorData = JSON.stringify(error.response?.data);
log.error(`${error.response?.status}:${errorData}`);
} else {
log.error(`${error.message}`);
}