diff --git a/.rubocop_todo/capybara/testid_finders.yml b/.rubocop_todo/capybara/testid_finders.yml index c674b7f46b1..558b21c7d35 100644 --- a/.rubocop_todo/capybara/testid_finders.yml +++ b/.rubocop_todo/capybara/testid_finders.yml @@ -17,21 +17,6 @@ Capybara/TestidFinders: - 'spec/features/projects/compare_spec.rb' - 'spec/features/projects/environments/environment_spec.rb' - 'spec/features/projects/environments/environments_spec.rb' - - 'spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb' - - 'spec/features/projects/fork_spec.rb' - - 'spec/features/projects/integrations/user_activates_jira_spec.rb' - - 'spec/features/projects/issues/design_management/user_views_designs_with_svg_xss_spec.rb' - - 'spec/features/projects/jobs/permissions_spec.rb' - - 'spec/features/projects/jobs/user_browses_job_spec.rb' - - 'spec/features/projects/jobs/user_browses_jobs_spec.rb' - - 'spec/features/projects/jobs/user_triggers_manual_job_with_variables_spec.rb' - - 'spec/features/projects/jobs_spec.rb' - - 'spec/features/projects/members/group_member_cannot_leave_group_project_spec.rb' - - 'spec/features/projects/members/groups_with_access_list_spec.rb' - - 'spec/features/projects/members/master_adds_member_with_expiration_date_spec.rb' - - 'spec/features/projects/members/sorting_spec.rb' - - 'spec/features/projects/packages_spec.rb' - - 'spec/features/projects/pipeline_schedules_spec.rb' - 'spec/features/projects/pipelines/pipeline_spec.rb' - 'spec/features/projects/pipelines/pipelines_spec.rb' - 'spec/features/projects/releases/user_creates_release_spec.rb' diff --git a/.rubocop_todo/style/inline_disable_annotation.yml b/.rubocop_todo/style/inline_disable_annotation.yml index 4bf891cd5c3..c464f13d704 100644 --- a/.rubocop_todo/style/inline_disable_annotation.yml +++ b/.rubocop_todo/style/inline_disable_annotation.yml @@ -2833,7 +2833,6 @@ Style/InlineDisableAnnotation: - 'spec/lib/banzai/filter/image_link_filter_spec.rb' - 'spec/lib/banzai/pipeline/incident_management/timeline_event_pipeline_spec.rb' - 'spec/lib/container_registry/gitlab_api_client_spec.rb' - - 'spec/lib/generators/batched_background_migration/batched_background_migration_generator_spec.rb' - 'spec/lib/gitlab/alert_management/payload/base_spec.rb' - 'spec/lib/gitlab/audit/target_spec.rb' - 'spec/lib/gitlab/audit/type/definition_spec.rb' diff --git a/app/assets/javascripts/diffs/store/mutations.js b/app/assets/javascripts/diffs/store/mutations.js index 370073f1033..2cc2e13648f 100644 --- a/app/assets/javascripts/diffs/store/mutations.js +++ b/app/assets/javascripts/diffs/store/mutations.js @@ -210,6 +210,8 @@ export default { if (diffLines.length && positionType !== FILE_DIFF_POSITION_TYPE) { const line = diffLines.find(isTargetLine); + // skip if none of the discussion positions matched a diff position + if (!line) return; const discussions = addDiscussion(line.discussions || []); Object.assign(line, { discussions, diff --git a/app/assets/javascripts/environments/components/kubernetes_agent_info.vue b/app/assets/javascripts/environments/components/kubernetes_agent_info.vue index 03bde8d64ac..a2c7daf0797 100644 --- a/app/assets/javascripts/environments/components/kubernetes_agent_info.vue +++ b/app/assets/javascripts/environments/components/kubernetes_agent_info.vue @@ -46,7 +46,7 @@ export default { > - + - {{ $options.i18n.neverConnectedText }} diff --git a/app/assets/javascripts/environments/components/kubernetes_status_bar.vue b/app/assets/javascripts/environments/components/kubernetes_status_bar.vue index b41d1773851..2cf37ccca27 100644 --- a/app/assets/javascripts/environments/components/kubernetes_status_bar.vue +++ b/app/assets/javascripts/environments/components/kubernetes_status_bar.vue @@ -2,6 +2,8 @@ import { GlLoadingIcon, GlBadge, GlPopover, GlSprintf, GlLink } from '@gitlab/ui'; import { s__ } from '~/locale'; import { + CLUSTER_HEALTH_SUCCESS, + CLUSTER_HEALTH_ERROR, HEALTH_BADGES, SYNC_STATUS_BADGES, STATUS_TRUE, @@ -28,7 +30,7 @@ export default { type: String, default: '', validator(val) { - return ['error', 'success', ''].includes(val); + return [CLUSTER_HEALTH_ERROR, CLUSTER_HEALTH_SUCCESS, ''].includes(val); }, }, configuration: { diff --git a/app/assets/javascripts/environments/constants.js b/app/assets/javascripts/environments/constants.js index 64873a6ac68..28f0bde547e 100644 --- a/app/assets/javascripts/environments/constants.js +++ b/app/assets/javascripts/environments/constants.js @@ -94,13 +94,16 @@ export const SERVICES_LIMIT_PER_PAGE = 10; export const CLUSTER_STATUS_HEALTHY_TEXT = s__('Environment|Healthy'); export const CLUSTER_STATUS_UNHEALTHY_TEXT = s__('Environment|Unhealthy'); +export const CLUSTER_HEALTH_SUCCESS = 'success'; +export const CLUSTER_HEALTH_ERROR = 'error'; + export const HEALTH_BADGES = { - success: { + [CLUSTER_HEALTH_SUCCESS]: { variant: 'success', text: CLUSTER_STATUS_HEALTHY_TEXT, icon: 'status-success', }, - error: { + [CLUSTER_HEALTH_ERROR]: { variant: 'danger', text: CLUSTER_STATUS_UNHEALTHY_TEXT, icon: 'status-alert', diff --git a/app/assets/javascripts/environments/environment_details/components/kubernetes_overview.vue b/app/assets/javascripts/environments/environment_details/components/kubernetes_overview.vue new file mode 100644 index 00000000000..e7d6d639679 --- /dev/null +++ b/app/assets/javascripts/environments/environment_details/components/kubernetes_overview.vue @@ -0,0 +1,155 @@ + + diff --git a/app/assets/javascripts/environments/environment_details/index.vue b/app/assets/javascripts/environments/environment_details/index.vue index e22a51389ee..690942349d6 100644 --- a/app/assets/javascripts/environments/environment_details/index.vue +++ b/app/assets/javascripts/environments/environment_details/index.vue @@ -3,12 +3,14 @@ import { GlTabs, GlTab } from '@gitlab/ui'; import { s__ } from '~/locale'; import DeploymentHistory from './components/deployment_history.vue'; +import KubernetesOverview from './components/kubernetes_overview.vue'; export default { components: { GlTabs, GlTab, DeploymentHistory, + KubernetesOverview, }, props: { projectFullPath: { @@ -30,19 +32,43 @@ export default { default: null, }, }, + data() { + return { + currentTabIndex: 0, + }; + }, i18n: { deploymentHistory: s__('Environments|Deployment history'), + kubernetesOverview: s__('Environments|Kubernetes overview'), }, params: { deployments: 'deployment-history', + kubernetes: 'kubernetes-overview', + }, + methods: { + linkClass(index) { + return index === this.currentTabIndex ? 'gl-inset-border-b-2-theme-accent' : ''; + }, }, };