Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
1bc88c3806
commit
52ebfa1ac3
|
|
@ -408,25 +408,6 @@ export default {
|
|||
'ee/app/assets/javascripts/roadmap/components/roadmap_filters.vue',
|
||||
'ee/app/assets/javascripts/roadmap/components/roadmap_shell.vue',
|
||||
'ee/app/assets/javascripts/roadmap/components/roadmap_timeline_section.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/components/configuration_page_layout.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/components/configuration_snippet_modal.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/components/container_scanning_for_registry_feature_card.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/corpus_management/components/corpus_upload_button.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_pre_scan_verification/components/pre_scan_verification_alert.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/components/base_dast_profile_form.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/components/dast_profiles_list.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/components/dast_site_profiles_list.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/components/dast_variables_form_group.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/components/dast_variables_modal.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/dast_profile_selector/site_profile_summary.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/dast_profiles_configurator/dast_profiles_configurator.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/dast_scanner_profiles/components/dast_scanner_profile_form.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_profiles/dast_site_profiles/components/dast_site_profile_form.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_site_validation/components/dast_site_validation_modal.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/dast_site_validation/components/dast_site_validation_revoke_modal.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/sast/components/app.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/secret_detection/components/exclusion_delete_modal.vue',
|
||||
'ee/app/assets/javascripts/security_configuration/secret_detection/components/exclusion_form_drawer.vue',
|
||||
'ee/app/assets/javascripts/security_dashboard/components/agent/agent_vulnerability_report.vue',
|
||||
'ee/app/assets/javascripts/security_dashboard/components/pipeline/pipeline_vulnerability_report.vue',
|
||||
'ee/app/assets/javascripts/security_dashboard/components/pipeline/vulnerability_finding_modal.vue',
|
||||
|
|
|
|||
|
|
@ -109,8 +109,6 @@ Gitlab/FeatureFlagWithoutActor:
|
|||
- 'ee/lib/gitlab/llm/tanuki_bot.rb'
|
||||
- 'ee/lib/gitlab/search/zoekt/client.rb'
|
||||
- 'ee/lib/gitlab/usage_data_counters/epic_activity_unique_counter.rb'
|
||||
- 'ee/lib/gitlab_subscriptions/billable_users_utils.rb'
|
||||
- 'ee/lib/gitlab_subscriptions/member_management/promotion_management_utils.rb'
|
||||
- 'ee/lib/search/zoekt/circuit_breaker.rb'
|
||||
- 'ee/spec/lib/gitlab/product_analytics/developments/setup_spec.rb'
|
||||
- 'ee/spec/models/gitlab_subscriptions/features_spec.rb'
|
||||
|
|
|
|||
|
|
@ -589,7 +589,6 @@ Layout/LineEndStringConcatenationIndentation:
|
|||
- 'spec/support/helpers/stub_gitlab_calls.rb'
|
||||
- 'spec/support/matchers/have_gitlab_http_status.rb'
|
||||
- 'spec/support/permissions_check.rb'
|
||||
- 'spec/support/rspec_run_time.rb'
|
||||
- 'spec/support/shared_examples/features/inviting_members_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/features/project_upload_files_shared_examples.rb'
|
||||
- 'spec/support/shared_examples/features/value_streams_dashboard_shared_examples.rb'
|
||||
|
|
|
|||
|
|
@ -668,7 +668,6 @@ Layout/LineLength:
|
|||
- 'ee/app/services/ee/groups/import_export/import_service.rb'
|
||||
- 'ee/app/services/ee/groups/update_service.rb'
|
||||
- 'ee/app/services/ee/ip_restrictions/update_service.rb'
|
||||
- 'ee/app/services/ee/issuable/common_system_notes_service.rb'
|
||||
- 'ee/app/services/ee/issues/base_service.rb'
|
||||
- 'ee/app/services/ee/issues/clone_service.rb'
|
||||
- 'ee/app/services/ee/merge_requests/merge_base_service.rb'
|
||||
|
|
@ -803,7 +802,6 @@ Layout/LineLength:
|
|||
- 'ee/lib/ee/api/entities/application_setting.rb'
|
||||
- 'ee/lib/ee/api/entities/dependency.rb'
|
||||
- 'ee/lib/ee/api/entities/epic.rb'
|
||||
- 'ee/lib/ee/api/entities/group.rb'
|
||||
- 'ee/lib/ee/api/entities/member.rb'
|
||||
- 'ee/lib/ee/api/entities/namespace.rb'
|
||||
- 'ee/lib/ee/api/entities/project.rb'
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
# Empty after resolving Lint/SafeNavigationConsistency
|
||||
|
|
@ -171,7 +171,6 @@ Lint/UnusedMethodArgument:
|
|||
- 'app/workers/gitlab/jira_import/import_issue_worker.rb'
|
||||
- 'app/workers/issues/rebalancing_worker.rb'
|
||||
- 'app/workers/personal_access_tokens/expired_notification_worker.rb'
|
||||
- 'app/workers/projects/inactive_projects_deletion_cron_worker.rb'
|
||||
- 'app/workers/projects/refresh_build_artifacts_size_statistics_worker.rb'
|
||||
- 'config/initializers/00_active_record_disable_joins.rb'
|
||||
- 'config/initializers/active_record_table_definition.rb'
|
||||
|
|
|
|||
|
|
@ -91,7 +91,6 @@ Rails/Date:
|
|||
- 'ee/spec/requests/gitlab_subscriptions/api/internal/users_spec.rb'
|
||||
- 'ee/spec/requests/groups/settings/access_tokens_controller_spec.rb'
|
||||
- 'ee/spec/requests/projects/settings/access_tokens_controller_spec.rb'
|
||||
- 'ee/spec/serializers/ee/group_child_entity_spec.rb'
|
||||
- 'ee/spec/services/app_sec/dast/profile_schedules/audit/update_service_spec.rb'
|
||||
- 'ee/spec/services/audit_event_service_spec.rb'
|
||||
- 'ee/spec/services/ci/minutes/additional_packs/create_service_spec.rb'
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ Rake/Require:
|
|||
- 'lib/tasks/contracts/pipeline_schedules.rake'
|
||||
- 'lib/tasks/contracts/pipelines.rake'
|
||||
- 'lib/tasks/gitlab/artifacts/migrate.rake'
|
||||
- 'lib/tasks/gitlab/backup.rake'
|
||||
- 'lib/tasks/gitlab/docs/redirect.rake'
|
||||
- 'lib/tasks/gitlab/graphql.rake'
|
||||
- 'lib/tasks/gitlab/lfs/migrate.rake'
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ Rake/TopLevelMethodDefinition:
|
|||
- 'lib/tasks/gettext.rake'
|
||||
- 'lib/tasks/gitlab/assets.rake'
|
||||
- 'lib/tasks/gitlab/background_migrations.rake'
|
||||
- 'lib/tasks/gitlab/backup.rake'
|
||||
- 'lib/tasks/gitlab/cleanup.rake'
|
||||
- 'lib/tasks/gitlab/click_house/migration.rake'
|
||||
- 'lib/tasks/gitlab/container_registry.rake'
|
||||
|
|
|
|||
|
|
@ -376,7 +376,6 @@ RSpec/BeEq:
|
|||
- 'ee/spec/requests/users/identity_verification_controller_spec.rb'
|
||||
- 'ee/spec/requests/users/registrations_identity_verification_controller_spec.rb'
|
||||
- 'ee/spec/serializers/ee/admin/abuse_report_details_entity_spec.rb'
|
||||
- 'ee/spec/serializers/ee/group_child_entity_spec.rb'
|
||||
- 'ee/spec/serializers/ee/note_entity_spec.rb'
|
||||
- 'ee/spec/serializers/environment_entity_spec.rb'
|
||||
- 'ee/spec/serializers/epic_note_entity_spec.rb'
|
||||
|
|
@ -497,7 +496,6 @@ RSpec/BeEq:
|
|||
- 'ee/spec/support_specs/stub_saas_features_spec.rb'
|
||||
- 'ee/spec/workers/app_sec/container_scanning/scan_image_worker_spec.rb'
|
||||
- 'ee/spec/workers/click_house/rebuild_materialized_view_cron_worker_spec.rb'
|
||||
- 'ee/spec/workers/ee/projects/inactive_projects_deletion_cron_worker_spec.rb'
|
||||
- 'ee/spec/workers/ee/repository_check/batch_worker_spec.rb'
|
||||
- 'ee/spec/workers/ee/repository_check/single_repository_worker_spec.rb'
|
||||
- 'ee/spec/workers/elastic_remove_expired_namespace_subscriptions_from_index_cron_worker_spec.rb'
|
||||
|
|
|
|||
|
|
@ -1706,7 +1706,6 @@ RSpec/FeatureCategory:
|
|||
- 'spec/helpers/gitlab_routing_helper_spec.rb'
|
||||
- 'spec/helpers/gitlab_script_tag_helper_spec.rb'
|
||||
- 'spec/helpers/graph_helper_spec.rb'
|
||||
- 'spec/helpers/hooks_helper_spec.rb'
|
||||
- 'spec/helpers/icons_helper_spec.rb'
|
||||
- 'spec/helpers/instance_configuration_helper_spec.rb'
|
||||
- 'spec/helpers/invite_members_helper_spec.rb'
|
||||
|
|
@ -2140,7 +2139,6 @@ RSpec/FeatureCategory:
|
|||
- 'spec/lib/gitlab/ci/status/bridge/waiting_for_resource_spec.rb'
|
||||
- 'spec/lib/gitlab/ci/status/build/action_spec.rb'
|
||||
- 'spec/lib/gitlab/ci/status/build/cancelable_spec.rb'
|
||||
- 'spec/lib/gitlab/ci/status/build/common_spec.rb'
|
||||
- 'spec/lib/gitlab/ci/status/build/created_spec.rb'
|
||||
- 'spec/lib/gitlab/ci/status/build/erased_spec.rb'
|
||||
- 'spec/lib/gitlab/ci/status/build/factory_spec.rb'
|
||||
|
|
|
|||
|
|
@ -113,7 +113,6 @@ Style/HashEachMethods:
|
|||
- 'spec/models/user_spec.rb'
|
||||
- 'spec/presenters/ci/pipeline_presenter_spec.rb'
|
||||
- 'spec/presenters/commit_status_presenter_spec.rb'
|
||||
- 'spec/requests/api/project_templates_spec.rb'
|
||||
- 'spec/services/system_notes/incident_service_spec.rb'
|
||||
- 'spec/support/helpers/database/multiple_databases_helpers.rb'
|
||||
- 'spec/support/helpers/reactive_caching_helpers.rb'
|
||||
|
|
|
|||
|
|
@ -1453,7 +1453,6 @@ Style/InlineDisableAnnotation:
|
|||
- 'ee/lib/ee/gitlab/object_hierarchy.rb'
|
||||
- 'ee/lib/ee/gitlab/quick_actions/users_extractor.rb'
|
||||
- 'ee/lib/ee/gitlab/usage_data.rb'
|
||||
- 'ee/lib/ee/users/internal.rb'
|
||||
- 'ee/lib/elastic/instance_proxy_util.rb'
|
||||
- 'ee/lib/elastic/latest/git_class_proxy.rb'
|
||||
- 'ee/lib/elastic/latest/note_class_proxy.rb'
|
||||
|
|
@ -2034,7 +2033,6 @@ Style/InlineDisableAnnotation:
|
|||
- 'lib/tasks/tokens.rake'
|
||||
- 'lib/unnested_in_filters/dsl.rb'
|
||||
- 'lib/uploaded_file.rb'
|
||||
- 'lib/users/internal.rb'
|
||||
- 'locale/unfound_translations.rb'
|
||||
- 'metrics_server/dependencies.rb'
|
||||
- 'metrics_server/metrics_server.rb'
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ Style/MutableConstant:
|
|||
- 'lib/gitlab/seeder.rb'
|
||||
- 'lib/gitlab/sidekiq_signals.rb'
|
||||
- 'lib/gitlab/web_hooks/recursion_detection/uuid.rb'
|
||||
- 'lib/tasks/gitlab/backup.rake'
|
||||
- 'scripts/perf/gc/collect_gc_stats.rb'
|
||||
- 'spec/support/helpers/jira_integration_helpers.rb'
|
||||
- 'tooling/danger/stable_branch.rb'
|
||||
|
|
|
|||
|
|
@ -1,46 +0,0 @@
|
|||
#import "~/graphql_shared/fragments/ci_icon.fragment.graphql"
|
||||
|
||||
fragment BaseProject on Project {
|
||||
id
|
||||
fullPath
|
||||
archived
|
||||
nameWithNamespace
|
||||
webUrl
|
||||
topics
|
||||
forksCount
|
||||
avatarUrl
|
||||
starCount
|
||||
visibility
|
||||
openMergeRequestsCount
|
||||
openIssuesCount
|
||||
descriptionHtml
|
||||
createdAt
|
||||
updatedAt
|
||||
lastActivityAt
|
||||
group {
|
||||
id
|
||||
}
|
||||
mergeRequestsAccessLevel {
|
||||
stringValue
|
||||
}
|
||||
issuesAccessLevel {
|
||||
stringValue
|
||||
}
|
||||
forkingAccessLevel {
|
||||
stringValue
|
||||
}
|
||||
userPermissions {
|
||||
removeProject
|
||||
viewEditPage
|
||||
}
|
||||
maxAccessLevel {
|
||||
integerValue
|
||||
}
|
||||
isCatalogResource
|
||||
exploreCatalogPath
|
||||
pipeline {
|
||||
detailedStatus {
|
||||
...CiIcon
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,50 @@
|
|||
#import "./base_project.fragment.graphql"
|
||||
#import "~/graphql_shared/fragments/ci_icon.fragment.graphql"
|
||||
|
||||
fragment Project on Project {
|
||||
...BaseProject
|
||||
id
|
||||
fullPath
|
||||
archived
|
||||
nameWithNamespace
|
||||
webUrl
|
||||
topics
|
||||
forksCount
|
||||
avatarUrl
|
||||
starCount
|
||||
visibility
|
||||
openMergeRequestsCount
|
||||
openIssuesCount
|
||||
descriptionHtml
|
||||
createdAt
|
||||
updatedAt
|
||||
lastActivityAt
|
||||
group {
|
||||
id
|
||||
}
|
||||
mergeRequestsAccessLevel {
|
||||
stringValue
|
||||
}
|
||||
issuesAccessLevel {
|
||||
stringValue
|
||||
}
|
||||
forkingAccessLevel {
|
||||
stringValue
|
||||
}
|
||||
userPermissions {
|
||||
removeProject
|
||||
viewEditPage
|
||||
}
|
||||
maxAccessLevel {
|
||||
integerValue
|
||||
}
|
||||
isCatalogResource
|
||||
exploreCatalogPath
|
||||
pipeline {
|
||||
id
|
||||
detailedStatus {
|
||||
...CiIcon
|
||||
}
|
||||
}
|
||||
markedForDeletionOn
|
||||
isAdjournedDeletionEnabled
|
||||
permanentDeletionDate
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#import "~/graphql_shared/fragments/page_info.fragment.graphql"
|
||||
#import "ee_else_ce/graphql_shared/fragments/project.fragment.graphql"
|
||||
#import "~/graphql_shared/fragments/project.fragment.graphql"
|
||||
|
||||
query getOrganizationProjects(
|
||||
$id: OrganizationsOrganizationID!
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#import "~/graphql_shared/fragments/page_info.fragment.graphql"
|
||||
#import "ee_else_ce/graphql_shared/fragments/project.fragment.graphql"
|
||||
#import "~/graphql_shared/fragments/project.fragment.graphql"
|
||||
|
||||
query getYourWorkProjects(
|
||||
$archived: ProjectArchived = EXCLUDE
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#import "~/graphql_shared/fragments/page_info.fragment.graphql"
|
||||
#import "ee_else_ce/graphql_shared/fragments/project.fragment.graphql"
|
||||
#import "~/graphql_shared/fragments/project.fragment.graphql"
|
||||
|
||||
query getYourWorkUserProjects(
|
||||
$contributed: Boolean = false
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import ProjectListItemDescription from './project_list_item_description.vue';
|
||||
import ProjectListItemDescription from '~/vue_shared/components/projects_list/project_list_item_description.vue';
|
||||
|
||||
export default {
|
||||
component: ProjectListItemDescription,
|
||||
|
|
@ -28,3 +28,13 @@ Default.args = {
|
|||
The app integrates with smart home devices and local transportation data to provide real-time suggestions for energy savings and greener commutes.</p>`,
|
||||
},
|
||||
};
|
||||
|
||||
export const PendingDeletionProject = Template.bind({});
|
||||
PendingDeletionProject.args = {
|
||||
...Default.args,
|
||||
project: {
|
||||
...Default.args.project,
|
||||
markedForDeletionOn: '2024-12-01',
|
||||
permanentDeletionDate: '2024-12-07',
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,11 +1,20 @@
|
|||
<script>
|
||||
import { GlSprintf, GlIcon } from '@gitlab/ui';
|
||||
import { SHORT_DATE_FORMAT } from '~/vue_shared/constants';
|
||||
import { s__ } from '~/locale';
|
||||
import { formatDate, newDate } from '~/lib/utils/datetime_utility';
|
||||
import SafeHtml from '~/vue_shared/directives/safe_html';
|
||||
import ListItemDescription from '~/vue_shared/components/resource_lists/list_item_description.vue';
|
||||
|
||||
export default {
|
||||
name: 'ProjectListItemDescription',
|
||||
i18n: {
|
||||
scheduledDeletion: s__('Projects|Scheduled for deletion on %{date}'),
|
||||
},
|
||||
components: {
|
||||
ListItemDescription,
|
||||
GlSprintf,
|
||||
GlIcon,
|
||||
},
|
||||
directives: {
|
||||
SafeHtml,
|
||||
|
|
@ -17,6 +26,12 @@ export default {
|
|||
},
|
||||
},
|
||||
computed: {
|
||||
isPendingDeletion() {
|
||||
return Boolean(this.project.markedForDeletionOn);
|
||||
},
|
||||
formattedDate() {
|
||||
return formatDate(newDate(this.project.permanentDeletionDate), SHORT_DATE_FORMAT);
|
||||
},
|
||||
showDescription() {
|
||||
return this.project.descriptionHtml && !this.project.archived;
|
||||
},
|
||||
|
|
@ -25,5 +40,13 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<list-item-description v-if="showDescription" :description-html="project.descriptionHtml" />
|
||||
<div v-if="isPendingDeletion" class="md gl-mt-2 gl-text-sm gl-text-secondary">
|
||||
<gl-icon name="calendar" />
|
||||
<gl-sprintf :message="$options.i18n.scheduledDeletion">
|
||||
<template #date>
|
||||
{{ formattedDate }}
|
||||
</template>
|
||||
</gl-sprintf>
|
||||
</div>
|
||||
<list-item-description v-else-if="showDescription" :description-html="project.descriptionHtml" />
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { __ } from '~/locale';
|
|||
export default {
|
||||
name: 'ProjectListItemInactiveBadge',
|
||||
i18n: {
|
||||
pendingDeletion: __('Pending deletion'),
|
||||
archived: __('Archived'),
|
||||
},
|
||||
components: {
|
||||
|
|
@ -17,7 +18,17 @@ export default {
|
|||
},
|
||||
},
|
||||
computed: {
|
||||
isPendingDeletion() {
|
||||
return Boolean(this.project.markedForDeletionOn);
|
||||
},
|
||||
inactiveBadge() {
|
||||
if (this.isPendingDeletion) {
|
||||
return {
|
||||
variant: 'warning',
|
||||
text: this.$options.i18n.pendingDeletion,
|
||||
};
|
||||
}
|
||||
|
||||
if (this.project.archived) {
|
||||
return {
|
||||
variant: 'info',
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ import {
|
|||
renderDeleteSuccessToast,
|
||||
deleteParams,
|
||||
} from 'ee_else_ce/vue_shared/components/projects_list/utils';
|
||||
import ProjectListItemDescription from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_description.vue';
|
||||
import ProjectListItemDescription from '~/vue_shared/components/projects_list/project_list_item_description.vue';
|
||||
import ProjectListItemActions from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_actions.vue';
|
||||
import ProjectListItemInactiveBadge from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_inactive_badge.vue';
|
||||
import ProjectListItemInactiveBadge from '~/vue_shared/components/projects_list/project_list_item_inactive_badge.vue';
|
||||
import { VISIBILITY_TYPE_ICON, PROJECT_VISIBILITY_TYPE } from '~/visibility_level/constants';
|
||||
import { ACCESS_LEVEL_LABELS, ACCESS_LEVEL_NO_ACCESS_INTEGER } from '~/access_level/constants';
|
||||
import { FEATURABLE_ENABLED } from '~/featurable/constants';
|
||||
|
|
|
|||
|
|
@ -1559,7 +1559,7 @@ This is not applicable yet as multiple indices functionality is not fully implem
|
|||
|
||||
{{< /alert >}}
|
||||
|
||||
Currently GitLab can only handle a single version of setting. Any setting/schema changes would require reindexing everything from scratch. Since reindexing can take a long time, this can cause search functionality downtime.
|
||||
Currently, GitLab can only handle a single version of setting. Any setting/schema changes would require reindexing everything from scratch. Since reindexing can take a long time, this can cause search functionality downtime.
|
||||
|
||||
To avoid downtime, GitLab is working to support multiple indices that
|
||||
can function at the same time. Whenever the schema changes, the administrator
|
||||
|
|
@ -1571,7 +1571,7 @@ index.
|
|||
|
||||
This is also helpful for migrating to new servers, for example, moving to/from AWS.
|
||||
|
||||
Currently we are on the process of migrating to this new design. Everything is hardwired to work with one single version for now.
|
||||
Currently, we are on the process of migrating to this new design. Everything is hardwired to work with one single version for now.
|
||||
|
||||
## Performance Monitoring
|
||||
|
||||
|
|
@ -1586,12 +1586,12 @@ is impacting overall performance relative to the time spent doing other things.
|
|||
|
||||
GitLab also exports [Prometheus metrics](../administration/monitoring/prometheus/gitlab_metrics.md)
|
||||
for indexing queues, which can help diagnose performance bottlenecks and determine
|
||||
whether or not your GitLab instance or Elasticsearch server can keep up with
|
||||
whether your GitLab instance or Elasticsearch server can keep up with
|
||||
the volume of updates.
|
||||
|
||||
### Logs
|
||||
|
||||
All of the indexing happens in Sidekiq, so much of the relevant logs for the
|
||||
All indexing happens in Sidekiq, so much of the relevant logs for the
|
||||
Elasticsearch integration can be found in
|
||||
[`sidekiq.log`](../administration/logs/_index.md#sidekiqlog). In particular, all
|
||||
Sidekiq workers that make requests to Elasticsearch in any way will log the
|
||||
|
|
@ -1631,6 +1631,7 @@ in the cluster back the request in GitLab.
|
|||
|
||||
- [Creating indices from scratch](advanced_search/tips.md#creating-all-indices-from-scratch-and-populating-with-local-data)
|
||||
- [Index data](advanced_search/tips.md#index-data)
|
||||
- [Updating dependent associations in the index](advanced_search/tips.md#dependent-association-index-updates)
|
||||
- [Kibana](advanced_search/tips.md#kibana)
|
||||
- [Running tests with Elasticsearch](advanced_search/tips.md#testing)
|
||||
- [Testing migrations](advanced_search/tips.md#advanced-search-migrations)
|
||||
|
|
|
|||
|
|
@ -100,6 +100,18 @@ Elastic::ProcessBookkeepingService.track!(*MergeRequest.all)
|
|||
Elastic::ProcessBookkeepingService.new.execute
|
||||
```
|
||||
|
||||
## Dependent association index updates
|
||||
|
||||
You can use elastic_index_dependant_association to automatically update associated records in the index
|
||||
when specific fields change. For example, to reindex all work items when a project's `visibility_level` changes
|
||||
|
||||
```ruby
|
||||
elastic_index_dependant_association :work_items, on_change: :visibility_level, depends_on_finished_migration: :add_mapping_migration
|
||||
```
|
||||
|
||||
The `depends_on_finished_migration` parameter is optional and ensures the update only occurs after the specified advanced
|
||||
search migration has completed (such as a migration that added the necessary field to the mapping).
|
||||
|
||||
## Testing
|
||||
|
||||
{{< alert type="warning" >}}
|
||||
|
|
|
|||
|
|
@ -19961,9 +19961,6 @@ msgstr ""
|
|||
msgid "DastProfiles|No variables found"
|
||||
msgstr ""
|
||||
|
||||
msgid "DastProfiles|Not Validated"
|
||||
msgstr ""
|
||||
|
||||
msgid "DastProfiles|Number of workers that passive scan in parallel. Defaults to the number of available CPUs."
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -20270,9 +20267,6 @@ msgstr ""
|
|||
msgid "DastProfiles|Validate site profile"
|
||||
msgstr ""
|
||||
|
||||
msgid "DastProfiles|Validated"
|
||||
msgstr ""
|
||||
|
||||
msgid "DastProfiles|Validation status"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -57400,6 +57394,9 @@ msgstr ""
|
|||
msgid "Simulate a pipeline created for the default branch"
|
||||
msgstr ""
|
||||
|
||||
msgid "Single component can be selected for component filter to be able to filter by version."
|
||||
msgstr ""
|
||||
|
||||
msgid "Site profile failed to delete"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import { GlTruncateText } from '@gitlab/ui';
|
||||
import { GlIcon, GlSprintf, GlTruncateText } from '@gitlab/ui';
|
||||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import ProjectListItemDescription from '~/vue_shared/components/projects_list/project_list_item_description.vue';
|
||||
import ListItemDescription from '~/vue_shared/components/resource_lists/list_item_description.vue';
|
||||
|
||||
describe('ProjectListItemDescriptionCE', () => {
|
||||
describe('ProjectListItemDescription', () => {
|
||||
let wrapper;
|
||||
|
||||
const defaultProps = {
|
||||
|
|
@ -15,11 +15,12 @@ describe('ProjectListItemDescriptionCE', () => {
|
|||
const createComponent = ({ props = {} } = {}) => {
|
||||
wrapper = shallowMountExtended(ProjectListItemDescription, {
|
||||
propsData: { ...defaultProps, ...props },
|
||||
stubs: { GlTruncateText },
|
||||
stubs: { GlTruncateText, GlSprintf },
|
||||
});
|
||||
};
|
||||
|
||||
const findListItemDescription = () => wrapper.findComponent(ListItemDescription);
|
||||
const findGlIcon = () => wrapper.findComponent(GlIcon);
|
||||
|
||||
describe('when project has a description but is archived', () => {
|
||||
it('does not render description', () => {
|
||||
|
|
@ -59,4 +60,21 @@ describe('ProjectListItemDescriptionCE', () => {
|
|||
expect(findListItemDescription().exists()).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when pending deletion', () => {
|
||||
it('renders correct icon and scheduled for deletion information', () => {
|
||||
createComponent({
|
||||
props: {
|
||||
project: {
|
||||
...defaultProps.project,
|
||||
markedForDeletionOn: '2024-12-24',
|
||||
permanentDeletionDate: '2024-12-31',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(findGlIcon().props('name')).toBe('calendar');
|
||||
expect(wrapper.text().replace(/\s+/g, ' ')).toBe('Scheduled for deletion on Dec 31, 2024');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -55,4 +55,32 @@ describe('ProjectListItemInactiveBadgeCE', () => {
|
|||
expect(findGlBadge().exists()).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe.each`
|
||||
archived | markedForDeletionOn | variant | text
|
||||
${false} | ${null} | ${false} | ${false}
|
||||
${true} | ${null} | ${'info'} | ${'Archived'}
|
||||
${false} | ${'2024-01-01'} | ${'warning'} | ${'Pending deletion'}
|
||||
${true} | ${'2024-01-01'} | ${'warning'} | ${'Pending deletion'}
|
||||
`(
|
||||
'when project.archived is $archived and project.markedForDeletionOn is $markedForDeletionOn',
|
||||
({ archived, markedForDeletionOn, variant, text }) => {
|
||||
beforeEach(() => {
|
||||
createComponent({
|
||||
props: {
|
||||
project: {
|
||||
...project,
|
||||
archived,
|
||||
markedForDeletionOn,
|
||||
},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('renders the badge correctly', () => {
|
||||
expect(findGlBadge().exists() && findGlBadge().props('variant')).toBe(variant);
|
||||
expect(findGlBadge().exists() && findGlBadge().text()).toBe(text);
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ import { GlAvatarLabeled, GlIcon, GlTooltip } from '@gitlab/ui';
|
|||
import projects from 'test_fixtures/api/users/projects/get.json';
|
||||
import { stubComponent } from 'helpers/stub_component';
|
||||
import { mountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import ProjectListItemDescription from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_description.vue';
|
||||
import ProjectListItemDescription from '~/vue_shared/components/projects_list/project_list_item_description.vue';
|
||||
import ProjectListItemActions from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_actions.vue';
|
||||
import ProjectListItemInactiveBadge from 'ee_else_ce/vue_shared/components/projects_list/project_list_item_inactive_badge.vue';
|
||||
import ProjectListItemInactiveBadge from '~/vue_shared/components/projects_list/project_list_item_inactive_badge.vue';
|
||||
import ProjectsListItem from '~/vue_shared/components/projects_list/projects_list_item.vue';
|
||||
import { ACTION_EDIT, ACTION_DELETE } from '~/vue_shared/components/list_actions/constants';
|
||||
import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils';
|
||||
|
|
|
|||
Loading…
Reference in New Issue