- -
-
-

- Create your first index lifecycle policy -

-
+
+
-

- An index lifecycle policy helps you manage your indices as they age. -

-
-
- + class="emotion-euiButtonDisplayContent" + > + + Create policy + + +
-
+ `; exports[`policy table sorts when linked index templates header is clicked 1`] = ` diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx index 1290304ef6165..2bad87b149e0f 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/edit_policy/edit_policy.container.tsx @@ -7,12 +7,7 @@ import React, { useEffect } from 'react'; import { RouteComponentProps } from 'react-router-dom'; -import { - EuiButton, - EuiEmptyPrompt, - EuiLoadingSpinner, - EuiPageContent_Deprecated as EuiPageContent, -} from '@elastic/eui'; +import { EuiButton, EuiLoadingSpinner, EuiPageTemplate } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { MIN_SEARCHABLE_SNAPSHOT_LICENSE } from '../../../../common/constants'; @@ -45,47 +40,44 @@ export const EditPolicy: React.FunctionComponent - } - body={ - - } - /> - + } + body={ + + } + /> ); } if (error || !policies) { const { statusCode, message } = error ? error : { statusCode: '', message: '' }; return ( - - - - - } - body={ -

- {message} ({statusCode}) -

- } - actions={ - - - - } - /> -
+ + + + } + body={ +

+ {message} ({statusCode}) +

+ } + actions={ + + + + } + /> ); } diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx index 7113b00cf4ec2..669f22ccb9b3f 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.container.tsx @@ -6,12 +6,7 @@ */ import React, { useEffect } from 'react'; -import { - EuiButton, - EuiEmptyPrompt, - EuiLoadingSpinner, - EuiPageContent_Deprecated as EuiPageContent, -} from '@elastic/eui'; +import { EuiButton, EuiLoadingSpinner, EuiPageTemplate } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { PolicyList as PresentationComponent } from './policy_list'; import { useKibana } from '../../../shared_imports'; @@ -30,47 +25,44 @@ export const PolicyList: React.FunctionComponent = () => { if (isLoading) { return ( - - } - body={ - - } - /> - + } + body={ + + } + /> ); } if (error) { const { statusCode, message } = error ? error : { statusCode: '', message: '' }; return ( - - - - - } - body={ -

- {message} ({statusCode}) -

- } - actions={ - - - - } - /> -
+ + + + } + body={ +

+ {message} ({statusCode}) +

+ } + actions={ + + + + } + /> ); } diff --git a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx index 09fbc2d1c41c6..0a81f6b16bf43 100644 --- a/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx +++ b/x-pack/plugins/index_lifecycle_management/public/application/sections/policy_list/policy_list.tsx @@ -8,13 +8,7 @@ import React, { Fragment } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { - EuiButton, - EuiEmptyPrompt, - EuiSpacer, - EuiPageHeader, - EuiPageContent_Deprecated as EuiPageContent, -} from '@elastic/eui'; +import { EuiButton, EuiSpacer, EuiPageHeader, EuiPageTemplate } from '@elastic/eui'; import { useHistory } from 'react-router-dom'; import { reactRouterNavigate } from '@kbn/kibana-react-plugin/public'; import { PolicyFromES } from '../../../../common/types'; @@ -46,30 +40,28 @@ export const PolicyList: React.FunctionComponent = ({ policies, updatePol if (policies.length === 0) { return ( - - + + + + } + body={ + +

- - } - body={ - -

- -

-
- } - actions={createPolicyButton} - /> -
+

+ + } + actions={createPolicyButton} + /> ); } From 58334b54ac199744cae16d4b9f690dcb01ae6b88 Mon Sep 17 00:00:00 2001 From: Isaac Karrer Date: Tue, 22 Aug 2023 07:30:08 -0500 Subject: [PATCH 24/26] Kibana QualityGate Scaffold (#163831) The main question is here did I get the github team names correct for fleet and security? Are there any other groups I am missing who will have quality gates they want to see execute on every kibana release? - The PR which registered the repo and controls who can write secrets to vault was merged [here](https://github.com/elastic/catalog-info/pull/488/files) - Quality gate registration with argo deploy pipeline [here](https://github.com/elastic/serverless-gitops/pull/586). Should merge after this and pipelines are working. - [this one](https://github.com/elastic/catalog-info/pull/485/files) merges last and tells terrazzo about the catalog-info.yaml file with our pipeline. Other pipelines should be migrated over but are not included here. Rel: https://github.com/elastic/ingest-dev/issues/2201 Rel: https://elasticco.atlassian.net/browse/QX-282 --------- Co-authored-by: Ramon Butter --- .../quality-gates/pipeline.kibana-tests.yaml | 10 +++ .../pipeline.tests-production.yaml | 15 ++++ .../quality-gates/pipeline.tests-qa.yaml | 15 ++++ .../quality-gates/pipeline.tests-staging.yaml | 15 ++++ .github/CODEOWNERS | 1 + catalog-info.yaml | 70 +++++++++++++++++++ src/dev/precommit_hook/casing_check_config.js | 3 + 7 files changed, 129 insertions(+) create mode 100644 .buildkite/pipelines/quality-gates/pipeline.kibana-tests.yaml create mode 100644 .buildkite/pipelines/quality-gates/pipeline.tests-production.yaml create mode 100644 .buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml create mode 100644 .buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml create mode 100644 catalog-info.yaml diff --git a/.buildkite/pipelines/quality-gates/pipeline.kibana-tests.yaml b/.buildkite/pipelines/quality-gates/pipeline.kibana-tests.yaml new file mode 100644 index 0000000000000..27e55dfced9d7 --- /dev/null +++ b/.buildkite/pipelines/quality-gates/pipeline.kibana-tests.yaml @@ -0,0 +1,10 @@ +env: + ENVIRONMENT: ${ENVIRONMENT?} + +steps: + - label: ":pipeline::grey_question::seedling: Trigger Kibana Tests for ${ENVIRONMENT}" + env: + QG_PIPELINE_LOCATION: ".buildkite/pipelines/quality-gates" + command: "make -C /agent run-environment-tests" + agents: + image: "docker.elastic.co/ci-agent-images/quality-gate-seedling:0.0.2" diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml new file mode 100644 index 0000000000000..483532b9c7435 --- /dev/null +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-production.yaml @@ -0,0 +1,15 @@ +steps: + - label: ":pipeline::kibana::seedling: Trigger Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Kibana specific tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + + - label: ":pipeline::fleet::seedling: Trigger Fleet Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Fleet specific Kibana tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + + - label: ":pipeline::lock::seedling: Trigger Security Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Security specific Kibana tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml new file mode 100644 index 0000000000000..483532b9c7435 --- /dev/null +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-qa.yaml @@ -0,0 +1,15 @@ +steps: + - label: ":pipeline::kibana::seedling: Trigger Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Kibana specific tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + + - label: ":pipeline::fleet::seedling: Trigger Fleet Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Fleet specific Kibana tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + + - label: ":pipeline::lock::seedling: Trigger Security Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Security specific Kibana tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" diff --git a/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml b/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml new file mode 100644 index 0000000000000..483532b9c7435 --- /dev/null +++ b/.buildkite/pipelines/quality-gates/pipeline.tests-staging.yaml @@ -0,0 +1,15 @@ +steps: + - label: ":pipeline::kibana::seedling: Trigger Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Kibana specific tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + + - label: ":pipeline::fleet::seedling: Trigger Fleet Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Fleet specific Kibana tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" + + - label: ":pipeline::lock::seedling: Trigger Security Kibana Tests for ${ENVIRONMENT}" + command: echo "replace me with Security specific Kibana tests" + agent: + image: "docker.elastic.co/ci-agent-images/basic-buildkite-agent:1688566364" diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 650c71e26c93b..eecffc061f483 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -988,6 +988,7 @@ x-pack/plugins/infra/server/lib/alerting @elastic/actionable-observability /.buildkite/ @elastic/kibana-operations /kbn_pm/ @elastic/kibana-operations /x-pack/dev-tools @elastic/kibana-operations +catalog-info.yaml @elastic/kibana-operations @elastic/kibana-tech-leads # Appex QA /src/dev/code_coverage @elastic/appex-qa diff --git a/catalog-info.yaml b/catalog-info.yaml new file mode 100644 index 0000000000000..534e34ba27008 --- /dev/null +++ b/catalog-info.yaml @@ -0,0 +1,70 @@ +--- +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: kibana + description: Kibana is a user interface that lets you visualize your Elasticsearch data and navigate the Elastic Stack. + + annotations: + backstage.io/source-location: url:https://github.com/elastic/kibana/tree/main + github.com/project-slug: elastic/kibana + github.com/team-slug: elastic/kibana-tech-leads + buildkite.com/project-slug: elastic/kibana + + tags: + - typescript + - javascript + - dashboards + - metrics + - visualizations + - observability + + links: + - title: Documentation + url: https://www.elastic.co/guide/en/kibana/current/index.html + +spec: + type: monorepo + owner: group:kibana-tech-leads + lifecycle: production + +--- + +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: kibana-tests-pipeline + description: Definition of the kibana pipeline + links: + - title: Pipeline + url: https://buildkite.com/elastic/kibana-tests +spec: + type: buildkite-pipeline + owner: group:kibana-tech-leads + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: kibana-tests + description: Pipeline that tests the service integration in various environments + spec: + repository: elastic/kibana + pipeline_file: ./.buildkite/pipelines/pipeline.kibana-tests.yaml + provider_settings: + trigger_mode: none + teams: + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: BUILD_AND_READ + fleet: + access_level: BUILD_AND_READ + kibana-tech-leads: + access_level: BUILD_AND_READ + kibana-core: + access_level: BUILD_AND_READ + cloud-tooling: + access_level: BUILD_AND_READ + everyone: + access_level: READ_ONLY diff --git a/src/dev/precommit_hook/casing_check_config.js b/src/dev/precommit_hook/casing_check_config.js index c3b1a27491e67..93eba1bb171b2 100644 --- a/src/dev/precommit_hook/casing_check_config.js +++ b/src/dev/precommit_hook/casing_check_config.js @@ -50,6 +50,9 @@ export const IGNORE_FILE_GLOBS = [ // Required to match the name in the docs.elastic.dev repo. 'nav-kibana-dev.docnav.json', + // Match elastic wide naming convention for catalog-info.yaml + 'catalog-info.yaml', + // filename must match language code which requires capital letters '**/translations/*.json', From 9ad81fcce8c88162e89cb0fd04a0b3736bd65462 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Tue, 22 Aug 2023 13:39:04 +0100 Subject: [PATCH 25/26] Update x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx Co-authored-by: Dima Arnautov --- .../ml/date_picker/src/hooks/use_date_picker_context.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx b/x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx index 05b0fbc1237fb..28ad6a12de745 100644 --- a/x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx +++ b/x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx @@ -41,7 +41,7 @@ export interface DatePickerDependencies { */ uiSettingsKeys: typeof UI_SETTINGS; /** - * Tnternationalisation service + * Internationalisation service */ i18n: I18nStart; } From 83a0eecf25bd6cb5adf71251ceb81ef8ef429ba5 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Tue, 22 Aug 2023 13:53:50 +0100 Subject: [PATCH 26/26] skip flaky suite (#164381) --- .../apps/ml/anomaly_detection_result_views/forecasts.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional/apps/ml/anomaly_detection_result_views/forecasts.ts b/x-pack/test/functional/apps/ml/anomaly_detection_result_views/forecasts.ts index 93ec331230a8a..63f72381d0185 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection_result_views/forecasts.ts +++ b/x-pack/test/functional/apps/ml/anomaly_detection_result_views/forecasts.ts @@ -42,7 +42,8 @@ export default function ({ getService }: FtrProviderContext) { describe('forecasts', function () { this.tags(['ml']); - describe('with single metric job', function () { + // FLAKY: https://github.com/elastic/kibana/issues/164381 + describe.skip('with single metric job', function () { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote'); await ml.testResources.createIndexPatternIfNeeded('ft_farequote', '@timestamp');