Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-04-01 15:19:34 +00:00
parent 0d537d4128
commit 3a045e1e08
215 changed files with 1664 additions and 967 deletions

View File

@ -2,26 +2,6 @@
# Cop supports --autocorrect.
Layout/FirstHashElementIndentation:
Exclude:
- 'ee/spec/services/projects/disable_deploy_key_service_spec.rb'
- 'ee/spec/services/projects/enable_deploy_key_service_spec.rb'
- 'ee/spec/services/projects/group_links/create_service_spec.rb'
- 'ee/spec/services/projects/group_links/destroy_service_spec.rb'
- 'ee/spec/services/projects/transfer_service_spec.rb'
- 'ee/spec/services/security/security_orchestration_policies/create_pipeline_service_spec.rb'
- 'ee/spec/services/security/token_revocation_service_spec.rb'
- 'ee/spec/services/security/track_scan_service_spec.rb'
- 'ee/spec/services/timebox_report_service_spec.rb'
- 'lib/banzai/filter/playable_link_filter.rb'
- 'lib/gitlab/application_rate_limiter.rb'
- 'lib/gitlab/asciidoc.rb'
- 'lib/gitlab/asciidoc/include_processor.rb'
- 'lib/gitlab/auth/otp/strategies/forti_token_cloud.rb'
- 'lib/gitlab/ci/config/entry/processable.rb'
- 'lib/gitlab/database/migrations/observers/query_details.rb'
- 'lib/gitlab/database/migrations/observers/transaction_duration.rb'
- 'lib/gitlab/hook_data/release_builder.rb'
- 'lib/gitlab/quick_actions/issuable_actions.rb'
- 'qa/qa/resource/snippet.rb'
- 'spec/controllers/concerns/issuable_collections_spec.rb'
- 'spec/controllers/groups/group_members_controller_spec.rb'
- 'spec/controllers/import/manifest_controller_spec.rb'

View File

@ -1817,7 +1817,6 @@ Layout/LineLength:
- 'ee/spec/support/shared_examples/services/vulnerabilities/calls_vulnerability_statistics_utility_services_in_order.rb'
- 'ee/spec/tasks/geo_rake_spec.rb'
- 'ee/spec/validators/json_schema_validator_spec.rb'
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
- 'ee/spec/views/admin/application_settings/general.html.haml_spec.rb'
- 'ee/spec/views/admin/dashboard/index.html.haml_spec.rb'
- 'ee/spec/views/groups/security/discover/show.html.haml_spec.rb'

View File

@ -137,7 +137,6 @@ RSpec/BeEq:
- 'ee/spec/lib/gitlab/database/desired_sharding_key_spec.rb'
- 'ee/spec/lib/gitlab/duo/chat/react_executor_spec.rb'
- 'ee/spec/lib/gitlab/duo_workflow/client_spec.rb'
- 'ee/spec/lib/gitlab/elastic/client_spec.rb'
- 'ee/spec/lib/gitlab/elastic/document_reference_spec.rb'
- 'ee/spec/lib/gitlab/elastic/elasticsearch_enabled_cache_spec.rb'
- 'ee/spec/lib/gitlab/exclusive_lease_spec.rb'

View File

@ -775,7 +775,6 @@ RSpec/ContextWording:
- 'ee/spec/support/shared_examples/services/search_service_shared_examples.rb'
- 'ee/spec/support/shared_examples/services/update_issuable_health_status_shared_examples.rb'
- 'ee/spec/tasks/gitlab/license_rake_spec.rb'
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
- 'ee/spec/views/groups/edit.html.haml_spec.rb'
- 'ee/spec/views/layouts/header/_read_only_banner.html.haml_spec.rb'
- 'ee/spec/views/profiles/preferences/show.html.haml_spec.rb'

View File

@ -174,7 +174,6 @@ RSpec/ReceiveMessages:
- 'ee/spec/support/shared_examples/models/concerns/verifiable_replicator_shared_examples.rb'
- 'ee/spec/support/shared_examples/services/audit_events/streaming/headers_operations_shared_examples.rb'
- 'ee/spec/support/shared_examples/services/base_sync_service_shared_examples.rb'
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
- 'ee/spec/views/admin/dashboard/index.html.haml_spec.rb'
- 'ee/spec/views/devise/registrations/new.html.haml_spec.rb'
- 'ee/spec/views/devise/sessions/new.html.haml_spec.rb'

View File

@ -29,7 +29,6 @@ RSpec/ReturnFromStub:
- 'ee/spec/support/shared_examples/services/base_sync_service_shared_examples.rb'
- 'ee/spec/support/shared_examples/services/geo_event_store_shared_examples.rb'
- 'ee/spec/support/shared_examples/services/merge_merge_requests_shared_examples.rb'
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
- 'ee/spec/views/admin/application_settings/_git_abuse_rate_limit.html.haml_spec.rb'
- 'ee/spec/views/admin/groups/_form.html.haml_spec.rb'
- 'ee/spec/views/shared/_mirror_update_button.html.haml_spec.rb'

View File

@ -65,7 +65,6 @@ RSpec/VerifiedDoubleReference:
- 'ee/spec/support/shared_examples/lib/ai/context/dependencies/config_files/config_file_shared_examples.rb'
- 'ee/spec/support/shared_examples/lib/gitlab/llm/anthropic/client_shared_examples.rb'
- 'ee/spec/tasks/gitlab/license_rake_spec.rb'
- 'ee/spec/views/admin/application_settings/_elasticsearch_form.html.haml_spec.rb'
- 'ee/spec/views/groups/settings/_enforce_ssh_certificates.html.haml_spec.rb'
- 'ee/spec/workers/analytics/devops_adoption/create_snapshot_worker_spec.rb'
- 'ee/spec/workers/analytics/value_stream_dashboard/count_worker_spec.rb'

View File

@ -52,7 +52,6 @@ RSpec/VerifiedDoubles:
- 'ee/spec/lib/gitlab/code_owners/groups_loader_spec.rb'
- 'ee/spec/lib/gitlab/code_owners/users_loader_spec.rb'
- 'ee/spec/lib/gitlab/custom_file_templates_spec.rb'
- 'ee/spec/lib/gitlab/elastic/client_spec.rb'
- 'ee/spec/lib/gitlab/expiring_subscription_message_spec.rb'
- 'ee/spec/lib/gitlab/geo/git_ssh_proxy_spec.rb'
- 'ee/spec/lib/gitlab/geo/log_cursor/lease_spec.rb'

View File

@ -13,7 +13,7 @@ import IssueMilestone from '~/issuable/components/issue_milestone.vue';
import {
LINKED_CATEGORIES_MAP,
STATE_CLOSED,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
} from '~/work_items/constants';
import WorkItemRelationshipIcons from '~/work_items/components/shared/work_item_relationship_icons.vue';
import { ListType } from '../constants';
@ -180,7 +180,7 @@ export default {
return !this.disabled && this.list.listType !== ListType.closed;
},
workItemType() {
return this.isEpicBoard ? WORK_ITEM_TYPE_VALUE_EPIC : this.item.type;
return this.isEpicBoard ? WORK_ITEM_TYPE_NAME_EPIC : this.item.type;
},
workItemDrawerEnabled() {
if (gon.current_user_use_work_items_view) return true;

View File

@ -1,8 +1,8 @@
import { __ } from '~/locale';
import {
WORK_ITEM_TYPE_VALUE_KEY_RESULT,
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
WORK_ITEM_TYPE_VALUE_TASK,
WORK_ITEM_TYPE_NAME_KEY_RESULT,
WORK_ITEM_TYPE_NAME_OBJECTIVE,
WORK_ITEM_TYPE_NAME_TASK,
} from '~/work_items/constants';
export const STATUS_ALL = 'all';
@ -47,9 +47,9 @@ export const issuableTypeText = {
[TYPE_ALERT]: __('alert'),
[TYPE_INCIDENT]: __('incident'),
[TYPE_TEST_CASE]: __('test case'),
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: __('key result'),
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: __('objective'),
[WORK_ITEM_TYPE_VALUE_TASK]: __('task'),
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: __('key result'),
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: __('objective'),
[WORK_ITEM_TYPE_NAME_TASK]: __('task'),
};
const SHIFT_KEY = 16;

View File

@ -20,7 +20,7 @@ import {
sprintfWorkItem,
I18N_WORK_ITEM_ERROR_CREATING,
I18N_WORK_ITEM_ERROR_DELETING,
WORK_ITEM_TYPE_VALUE_TASK,
WORK_ITEM_TYPE_NAME_TASK,
} from '~/work_items/constants';
import { renderGFM } from '~/behaviors/markdown/render_gfm';
import eventHub from '../event_hub';
@ -121,7 +121,7 @@ export default {
},
computed: {
taskWorkItemTypeId() {
return this.workItemTypes.find((type) => type.name === WORK_ITEM_TYPE_VALUE_TASK)?.id;
return this.workItemTypes.find((type) => type.name === WORK_ITEM_TYPE_NAME_TASK)?.id;
},
issueGid() {
return this.issueId ? convertToGraphQLId(TYPENAME_WORK_ITEM, this.issueId) : null;
@ -382,7 +382,7 @@ export default {
},
showAlert(message, error) {
createAlert({
message: sprintfWorkItem(message, WORK_ITEM_TYPE_VALUE_TASK),
message: sprintfWorkItem(message, WORK_ITEM_TYPE_NAME_TASK),
error,
captureError: true,
});

View File

@ -1,14 +1,14 @@
<script>
import { GlDisclosureDropdown, GlDisclosureDropdownItem, GlTooltipDirective } from '@gitlab/ui';
import { TYPE_INCIDENT, TYPE_ISSUE } from '~/issues/constants';
import { WORK_ITEM_TYPE_VALUE_EPIC, WORK_ITEM_TYPE_VALUE_ISSUE } from '~/work_items/constants';
import { WORK_ITEM_TYPE_NAME_EPIC, WORK_ITEM_TYPE_NAME_ISSUE } from '~/work_items/constants';
import eventHub from '../event_hub';
const allowedTypes = [
TYPE_INCIDENT,
TYPE_ISSUE,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_VALUE_ISSUE,
WORK_ITEM_TYPE_NAME_EPIC,
WORK_ITEM_TYPE_NAME_ISSUE,
];
export default {

View File

@ -1,6 +1,6 @@
id: gitlab/pages
title: Get started with GitLab Pages
description: "Use GitLab Pages to deploy your static website. Follow these steps to create the configuration file, .gitlab-ci.yml, and start a pipeline to deploy the site."
description: 'Use GitLab Pages to deploy your static website. Follow these steps to create the configuration file, .gitlab-ci.yml, and start a pipeline to deploy the site.'
steps:
- inputs:
- label: Select your build image
@ -10,42 +10,43 @@ steps:
widget: text
target: $BUILD_IMAGE
required: true
pattern: "(?:[a-z]+/)?([a-z]+)(?::[0-9]+)?"
pattern: '(?:[a-z]+/)?([a-z]+)(?::[0-9]+)?'
invalid-feedback: Please enter a valid docker image
- widget: checklist
items:
- text: The application files are in the `public` folder
help: GitLab Pages publishes files in the public folder only. If needed, change your jobs to send output to this folder.
- label: Choose a directory to publish
monospace: true
required: true
widget: text
default: public
description: 'Enter a project directory to publish. The default is "public".'
target: $DIRECTORY
template:
# The Docker image that will be used to build your app
image: $BUILD_IMAGE
- inputs:
- label: Installation Steps
monospace: true
description: "Enter steps to set up a local build environment, like installing dependencies."
placeholder: npm ci
widget: list
target: $INSTALLATION_STEPS
template:
# Functions that should be executed before the build script is run
before_script: $INSTALLATION_STEPS
- inputs:
- label: Build Steps
monospace: true
description: "Enter steps to build a production version of your application."
widget: list
target: $BUILD_STEPS
template:
pages:
script: $BUILD_STEPS
artifacts:
paths:
# The folder that contains the files to be exposed at the Page URL
- public
create-pages:
pages:
# The folder that contains the files to be exposed at the Page URL
publish: $DIRECTORY
rules:
# This ensures that only pushes to the default branch will trigger
# a pages deploy
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
- inputs:
- label: Installation Steps
monospace: true
description: 'Enter steps to set up a local build environment, like installing dependencies.'
placeholder: npm ci
widget: list
target: $INSTALLATION_STEPS
template:
create-pages:
# Functions that should be executed before the build script is run
before_script: $INSTALLATION_STEPS
- inputs:
- label: Build Steps
monospace: true
description: 'Enter steps to build a production version of your application.'
widget: list
target: $BUILD_STEPS
template:
create-pages:
script: $BUILD_STEPS

View File

@ -1,28 +1,19 @@
<script>
import Vue from 'vue';
import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem, GlToast } from '@gitlab/ui';
import { GlDisclosureDropdownGroup, GlDisclosureDropdownItem } from '@gitlab/ui';
import { __ } from '~/locale';
import Shortcuts from '~/behaviors/shortcuts/shortcuts';
import {
keysFor,
PROJECT_FILES_GO_TO_PERMALINK,
START_SEARCH_PROJECT_FILE,
} from '~/behaviors/shortcuts/keybindings';
import { Mousetrap } from '~/lib/mousetrap';
import { keysFor, START_SEARCH_PROJECT_FILE } from '~/behaviors/shortcuts/keybindings';
import { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';
import { getBaseURL, relativePathToAbsolute } from '~/lib/utils/url_utility';
import { InternalEvents } from '~/tracking';
import { FIND_FILE_BUTTON_CLICK } from '~/tracking/constants';
import { lineState } from '~/blob/state';
import { getPageParamValue, getPageSearchString } from '~/blob/utils';
import { showBlameButton } from '~/repository/utils/storage_info_utils';
Vue.use(GlToast);
import PermalinkDropdownItem from '~/repository/components/header_area/permalink_dropdown_item.vue';
export default {
components: {
GlDisclosureDropdownGroup,
GlDisclosureDropdownItem,
PermalinkDropdownItem,
},
inject: ['blobInfo'],
props: {
@ -35,21 +26,9 @@ export default {
findFileShortcutKey() {
return keysFor(START_SEARCH_PROJECT_FILE)[0];
},
permalinkShortcutKey() {
return keysFor(PROJECT_FILES_GO_TO_PERMALINK)[0];
},
shortcutsDisabled() {
return shouldDisableShortcuts();
},
absolutePermalinkPath() {
const baseAbsolutePath = relativePathToAbsolute(this.permalinkPath, getBaseURL());
if (lineState.currentLineNumber) {
const page = getPageParamValue(lineState.currentLineNumber);
const searchString = getPageSearchString(baseAbsolutePath, page);
return `${baseAbsolutePath}${searchString}#L${lineState.currentLineNumber}`;
}
return baseAbsolutePath;
},
blameItem() {
return {
text: __('Blame'),
@ -63,25 +42,11 @@ export default {
return showBlameButton(this.blobInfo);
},
},
mounted() {
Mousetrap.bind(keysFor(PROJECT_FILES_GO_TO_PERMALINK), this.triggerCopyPermalink);
},
beforeDestroy() {
Mousetrap.unbind(keysFor(PROJECT_FILES_GO_TO_PERMALINK));
},
methods: {
handleFindFile() {
InternalEvents.trackEvent(FIND_FILE_BUTTON_CLICK);
Shortcuts.focusSearchFile();
},
triggerCopyPermalink() {
const buttonElement = this.$refs.copyPermalinkButton.$el;
buttonElement.click();
this.onCopyPermalink();
},
onCopyPermalink() {
this.$toast.show(__('Permalink copied to clipboard.'));
},
},
};
</script>
@ -109,22 +74,6 @@ export default {
class="js-blob-blame-link sm:gl-hidden"
data-testid="blame-dropdown-item"
/>
<gl-disclosure-dropdown-item
ref="copyPermalinkButton"
:aria-keyshortcuts="permalinkShortcutKey"
data-testid="permalink"
:data-clipboard-text="absolutePermalinkPath"
data-clipboard-handle-tooltip="false"
@action="onCopyPermalink"
>
<template #list-item>
<span class="gl-flex gl-items-center gl-justify-between">
<span>{{ __('Copy permalink') }}</span>
<kbd v-if="permalinkShortcutKey && !shortcutsDisabled" class="flat">{{
permalinkShortcutKey
}}</kbd>
</span>
</template>
</gl-disclosure-dropdown-item>
<permalink-dropdown-item :permalink-path="permalinkPath" />
</gl-disclosure-dropdown-group>
</template>

View File

@ -0,0 +1,78 @@
<script>
import Vue from 'vue';
import { GlDisclosureDropdownItem, GlToast } from '@gitlab/ui';
import { __ } from '~/locale';
import { keysFor, PROJECT_FILES_GO_TO_PERMALINK } from '~/behaviors/shortcuts/keybindings';
import { Mousetrap } from '~/lib/mousetrap';
import { shouldDisableShortcuts } from '~/behaviors/shortcuts/shortcuts_toggle';
import { getBaseURL, relativePathToAbsolute } from '~/lib/utils/url_utility';
import { lineState } from '~/blob/state';
import { getPageParamValue, getPageSearchString } from '~/blob/utils';
Vue.use(GlToast);
export default {
components: {
GlDisclosureDropdownItem,
},
props: {
permalinkPath: {
type: String,
required: true,
},
},
computed: {
permalinkShortcutKey() {
return keysFor(PROJECT_FILES_GO_TO_PERMALINK)[0];
},
shortcutsDisabled() {
return shouldDisableShortcuts();
},
absolutePermalinkPath() {
const baseAbsolutePath = relativePathToAbsolute(this.permalinkPath, getBaseURL());
if (lineState.currentLineNumber) {
const page = getPageParamValue(lineState.currentLineNumber);
const searchString = getPageSearchString(baseAbsolutePath, page);
return `${baseAbsolutePath}${searchString}#L${lineState.currentLineNumber}`;
}
return baseAbsolutePath;
},
},
mounted() {
Mousetrap.bind(keysFor(PROJECT_FILES_GO_TO_PERMALINK), this.triggerCopyPermalink);
},
beforeDestroy() {
Mousetrap.unbind(keysFor(PROJECT_FILES_GO_TO_PERMALINK));
},
methods: {
triggerCopyPermalink() {
const buttonElement = this.$refs.copyPermalinkButton.$el;
buttonElement.click();
this.onCopyPermalink();
},
onCopyPermalink() {
this.$toast.show(__('Permalink copied to clipboard.'));
},
},
};
</script>
<template>
<gl-disclosure-dropdown-item
ref="copyPermalinkButton"
:aria-keyshortcuts="permalinkShortcutKey"
data-testid="permalink"
:data-clipboard-text="absolutePermalinkPath"
data-clipboard-handle-tooltip="false"
@action="onCopyPermalink"
>
<template #list-item>
<span class="gl-flex gl-items-center gl-justify-between">
<span>{{ __('Copy permalink') }}</span>
<kbd v-if="permalinkShortcutKey && !shortcutsDisabled" class="flat">{{
permalinkShortcutKey
}}</kbd>
</span>
</template>
</gl-disclosure-dropdown-item>
</template>

View File

@ -82,6 +82,9 @@ export default {
codeTheme() {
return gon?.user_color_scheme || CODE_THEME_DEFAULT;
},
showSecondLine() {
return !this.query.project_id && this.projectPath;
},
},
methods: {
trackClipboardClick() {
@ -95,40 +98,46 @@ export default {
};
</script>
<template>
<div class="gl-flex gl-items-center gl-leading-1">
<file-icon :file-name="filePath" :size="16" aria-hidden="true" css-classes="gl-mr-3" />
<div>
<div class="gl-flex gl-items-center gl-leading-1">
<file-icon :file-name="filePath" :size="16" aria-hidden="true" css-classes="gl-mr-3" />
<gl-link
:href="fileUrl"
:title="$options.i18n.fileLink"
:class="codeTheme"
@click="trackHeaderClick"
>
<template v-if="projectPath">
<strong class="project-path-content" data-testid="project-path-content"
>{{ projectPath }}:
</strong>
</template>
<strong
v-safe-html="highlightedFilePath"
class="file-name-content"
data-testid="file-name-content"
></strong>
</gl-link>
<clipboard-button
:text="filePath"
:gfm="gfmCopyText"
:title="__('Copy file path')"
category="tertiary"
css-class="gl-mr-2"
@click="trackClipboardClick"
/>
<gl-label
v-if="isHeaderOnly"
:background-color="$options.DEFAULT_HEADER_LABEL_COLOR"
:title="$options.i18n.isHeaderOnly"
class="gl-self-center"
/>
<gl-link
:href="fileUrl"
:title="$options.i18n.fileLink"
class="gl-font-bold !gl-text-link"
:class="codeTheme"
@click="trackHeaderClick"
>
<strong
v-safe-html="highlightedFilePath"
class="file-name-content"
data-testid="file-name-content"
></strong>
</gl-link>
<clipboard-button
:text="filePath"
:gfm="gfmCopyText"
:title="__('Copy file path')"
size="small"
category="tertiary"
css-class="gl-mr-2"
@click="trackClipboardClick"
/>
<gl-label
v-if="isHeaderOnly"
:background-color="$options.DEFAULT_HEADER_LABEL_COLOR"
:title="$options.i18n.isHeaderOnly"
class="gl-self-center"
/>
</div>
<div v-if="showSecondLine">
<gl-link
:href="projectPath"
class="gl-text-sm !gl-text-subtle"
data-testid="project-path-content"
>{{ projectPath }}
</gl-link>
</div>
</div>
</template>

View File

@ -63,7 +63,7 @@ export const TARGET_TYPES = [
// eslint-disable-next-line @gitlab/require-i18n-strings
id: 'Issue',
value: TODO_TARGET_TYPE_ISSUE,
title: s__('Todos|Issue or Epic'),
title: s__('Todos|Issue'),
},
{
id: 'MergeRequest',

View File

@ -79,11 +79,11 @@ export const TOKEN_TITLE_MY_REACTION = __('My reaction');
export const TOKEN_TITLE_ORGANIZATION = s__('Crm|Organization');
export const TOKEN_TITLE_RELEASE = __('Release');
export const TOKEN_TITLE_REVIEWER = s__('SearchToken|Reviewer');
export const TOKEN_TITLE_SOURCE_BRANCH = __('Source Branch');
export const TOKEN_TITLE_SOURCE_BRANCH = __('Source branch');
export const TOKEN_TITLE_STATUS = __('Status');
export const TOKEN_TITLE_JOBS_RUNNER_TYPE = s__('Job|Runner type');
export const TOKEN_TITLE_JOBS_SOURCE = s__('Job|Source');
export const TOKEN_TITLE_TARGET_BRANCH = __('Target Branch');
export const TOKEN_TITLE_TARGET_BRANCH = __('Target branch');
export const TOKEN_TITLE_TYPE = __('Type');
export const TOKEN_TITLE_UPDATED = __('Updated');
export const TOKEN_TITLE_VERSION = __('Version');

View File

@ -23,8 +23,8 @@ import {
STATE_OPEN,
STATE_CLOSED,
LINKED_CATEGORIES_MAP,
WORK_ITEM_TYPE_VALUE_INCIDENT,
WORK_ITEM_TYPE_VALUE_ISSUE,
WORK_ITEM_TYPE_NAME_INCIDENT,
WORK_ITEM_TYPE_NAME_ISSUE,
WORK_ITEM_TYPE_ENUM_INCIDENT,
WORK_ITEM_TYPE_ENUM_ISSUE,
} from '~/work_items/constants';
@ -122,14 +122,14 @@ export default {
},
isIncident() {
return (
this.issuable.workItemType?.name === WORK_ITEM_TYPE_VALUE_INCIDENT ||
this.issuable.workItemType?.name === WORK_ITEM_TYPE_NAME_INCIDENT ||
this.issuable?.type === WORK_ITEM_TYPE_ENUM_INCIDENT
);
},
isServiceDeskIssue() {
return (
(this.issuable?.type === WORK_ITEM_TYPE_ENUM_ISSUE ||
this.issuable.workItemType?.name === WORK_ITEM_TYPE_VALUE_ISSUE) &&
this.issuable.workItemType?.name === WORK_ITEM_TYPE_NAME_ISSUE) &&
this.issuable?.author?.username === SUPPORT_BOT_USERNAME
);
},

View File

@ -54,8 +54,8 @@ import {
WORK_ITEM_TYPE_NAME_LOWERCASE_MAP,
WORK_ITEM_TYPE_NAME_MAP,
WORK_ITEM_TYPE_VALUE_MAP,
WORK_ITEM_TYPE_VALUE_INCIDENT,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_INCIDENT,
WORK_ITEM_TYPE_NAME_EPIC,
} from '../constants';
import createWorkItemMutation from '../graphql/create_work_item.mutation.graphql';
import namespaceWorkItemTypesQuery from '../graphql/namespace_work_item_types.query.graphql';
@ -342,7 +342,7 @@ export default {
// detail view instead. Since the legacy view doesn't support setting a parent
// we need to hide this attribute here until the migration has been finished.
// https://gitlab.com/gitlab-org/gitlab/-/issues/502823
if (this.selectedWorkItemTypeName === WORK_ITEM_TYPE_VALUE_INCIDENT) {
if (this.selectedWorkItemTypeName === WORK_ITEM_TYPE_NAME_INCIDENT) {
return false;
}
@ -504,7 +504,7 @@ export default {
);
},
shouldDatesRollup() {
return this.selectedWorkItemTypeName === WORK_ITEM_TYPE_VALUE_EPIC;
return this.selectedWorkItemTypeName === WORK_ITEM_TYPE_NAME_EPIC;
},
},
watch: {

View File

@ -5,7 +5,7 @@ import { s__, __ } from '~/locale';
import { capitalizeFirstCharacter } from '~/lib/utils/text_utility';
import {
STATE_OPEN,
WORK_ITEM_TYPE_VALUE_TASK,
WORK_ITEM_TYPE_NAME_TASK,
WIDGET_TYPE_EMAIL_PARTICIPANTS,
i18n,
} from '~/work_items/constants';
@ -206,7 +206,7 @@ export default {
return this.isNoteInternal ? this.$options.i18n.addInternalNote : this.commentButtonText;
},
docsLinks() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_TASK
return this.workItemType === WORK_ITEM_TYPE_NAME_TASK
? {
confidential_issues_docs_path: DOCS_WORK_ITEM_CONFIDENTIAL_TASKS_PATH,
locked_discussion_docs_path: DOCS_WORK_ITEM_LOCKED_TASKS_PATH,

View File

@ -3,7 +3,7 @@ import { GlLink, GlIcon } from '@gitlab/ui';
import { __, sprintf } from '~/locale';
import { helpPagePath } from '~/helpers/help_page_helper';
import { issuableTypeText } from '~/issues/constants';
import { WORK_ITEM_TYPE_VALUE_TASK } from '~/work_items/constants';
import { WORK_ITEM_TYPE_NAME_TASK } from '~/work_items/constants';
export default {
components: {
@ -14,7 +14,7 @@ export default {
workItemType: {
required: false,
type: String,
default: WORK_ITEM_TYPE_VALUE_TASK,
default: WORK_ITEM_TYPE_NAME_TASK,
},
isProjectArchived: {
required: false,

View File

@ -1,7 +1,7 @@
<script>
import { GlPopover, GlLoadingIcon, GlTooltipDirective, GlLink } from '@gitlab/ui';
import { n__ } from '~/locale';
import { WORK_ITEM_TYPE_VALUE_ISSUE, STATE_CLOSED } from '~/work_items/constants';
import { WORK_ITEM_TYPE_NAME_ISSUE, STATE_CLOSED } from '~/work_items/constants';
import WorkItemRelationshipPopoverMetadata from 'ee_else_ce/work_items/components/shared/work_item_relationship_popover_metadata.vue';
import WorkItemTypeIcon from '../work_item_type_icon.vue';
@ -71,7 +71,7 @@ export default {
.slice(0, defaultDisplayLimit);
},
moreItemsLink() {
return `${this.workItemWebUrl}#${this.workItemType === WORK_ITEM_TYPE_VALUE_ISSUE ? 'related-issues' : 'linkeditems'}`;
return `${this.workItemWebUrl}#${this.workItemType === WORK_ITEM_TYPE_NAME_ISSUE ? 'related-issues' : 'linkeditems'}`;
},
},
};

View File

@ -26,12 +26,12 @@ import WorkItemChangeTypeModal from 'ee_else_ce/work_items/components/work_item_
import {
sprintfWorkItem,
BASE_ALLOWED_CREATE_TYPES,
WORK_ITEM_TYPE_VALUE_KEY_RESULT,
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
WORK_ITEM_TYPE_NAME_KEY_RESULT,
WORK_ITEM_TYPE_NAME_OBJECTIVE,
WORK_ITEM_TYPE_ENUM_EPIC,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
WORK_ITEM_TYPE_VALUE_MAP,
WORK_ITEM_TYPE_VALUE_ISSUE,
WORK_ITEM_TYPE_NAME_ISSUE,
} from '../constants';
import updateWorkItemMutation from '../graphql/update_work_item.mutation.graphql';
import updateWorkItemNotificationsMutation from '../graphql/update_work_item_notifications.mutation.graphql';
@ -256,7 +256,7 @@ export default {
return data.workspace?.workItemTypes?.nodes;
},
skip() {
return !this.canUpdateMetadata || this.workItemType !== WORK_ITEM_TYPE_VALUE_KEY_RESULT;
return !this.canUpdateMetadata || this.workItemType !== WORK_ITEM_TYPE_NAME_KEY_RESULT;
},
},
},
@ -289,7 +289,7 @@ export default {
};
},
newRelatedItemLabel() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC
? sprintfWorkItem(s__('WorkItem|New related %{workItemType}'), this.workItemType)
: s__('WorkItem|New related item');
},
@ -304,7 +304,7 @@ export default {
return sprintfWorkItem(message, this.workItemType);
},
canPromoteToObjective() {
return this.canUpdateMetadata && this.workItemType === WORK_ITEM_TYPE_VALUE_KEY_RESULT;
return this.canUpdateMetadata && this.workItemType === WORK_ITEM_TYPE_NAME_KEY_RESULT;
},
confidentialItem() {
return {
@ -323,7 +323,7 @@ export default {
return this.isDiscussionLocked ? __('Unlock discussion') : __('Lock discussion');
},
objectiveWorkItemTypeId() {
return this.workItemTypes.find((type) => type.name === WORK_ITEM_TYPE_VALUE_OBJECTIVE).id;
return this.workItemTypes.find((type) => type.name === WORK_ITEM_TYPE_NAME_OBJECTIVE).id;
},
showDropdownTooltip() {
return !this.isDropdownVisible ? this.$options.i18n.moreActions : '';
@ -344,7 +344,7 @@ export default {
};
},
isEpic() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC;
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC;
},
confidentialityToggledText() {
return this.isConfidential
@ -361,8 +361,8 @@ export default {
if (this.glFeatures.okrsMvc && this.hasOkrsFeature) {
return BASE_ALLOWED_CREATE_TYPES.concat(
WORK_ITEM_TYPE_VALUE_KEY_RESULT,
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
WORK_ITEM_TYPE_NAME_KEY_RESULT,
WORK_ITEM_TYPE_NAME_OBJECTIVE,
);
}
@ -372,7 +372,7 @@ export default {
return WORK_ITEM_TYPE_VALUE_MAP[this.workItemType];
},
showMoveButton() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_ISSUE && this.canMove;
return this.workItemType === WORK_ITEM_TYPE_NAME_ISSUE && this.canMove;
},
toggleSidebarLabel() {
return this.showSidebar ? s__('WorkItem|Hide sidebar') : s__('WorkItem|Show sidebar');

View File

@ -20,7 +20,7 @@ import {
WIDGET_TYPE_WEIGHT,
WIDGET_TYPE_COLOR,
WIDGET_TYPE_CRM_CONTACTS,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
WORK_ITEM_TYPE_VALUE_MAP,
WIDGET_TYPE_CUSTOM_FIELDS,
} from '../constants';
@ -145,7 +145,7 @@ export default {
return this.isWidgetPresent(WIDGET_TYPE_START_AND_DUE_DATE);
},
canWorkItemRollUp() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC;
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC;
},
workItemWeight() {
return this.isWidgetPresent(WIDGET_TYPE_WEIGHT);
@ -166,10 +166,10 @@ export default {
return this.isWidgetPresent(WIDGET_TYPE_MILESTONE);
},
showRolledupDates() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC;
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC;
},
isParentEnabled() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC ? this.hasSubepicsFeature : true;
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC ? this.hasSubepicsFeature : true;
},
workItemParent() {
return this.isWidgetPresent(WIDGET_TYPE_HIERARCHY)?.parent;

View File

@ -11,7 +11,7 @@ import {
WIDGET_TYPE_HIERARCHY,
ALLOWED_CONVERSION_TYPES,
WORK_ITEM_TYPE_ENUM_EPIC,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
sprintfWorkItem,
WORK_ITEM_WIDGETS_NAME_MAP,
WIDGET_TYPE_DESIGNS,
@ -362,7 +362,7 @@ export default {
'WorkItem|Parent item type %{parentWorkItemType} is not supported on %{workItemType}. Remove the parent item to change type.',
),
this.isSelectedWorkItemTypeEpic
? WORK_ITEM_TYPE_VALUE_EPIC
? WORK_ITEM_TYPE_NAME_EPIC
: this.selectedWorkItemType.text,
this.parentWorkItemType,
);
@ -379,7 +379,7 @@ export default {
{
workItemType: capitalizeFirstCharacter(
this.isSelectedWorkItemTypeEpic
? WORK_ITEM_TYPE_VALUE_EPIC.toLocaleLowerCase()
? WORK_ITEM_TYPE_NAME_EPIC.toLocaleLowerCase()
: this.selectedWorkItemType.text.toLocaleLowerCase(),
),
childItemType: this.allowedChildTypes?.[0]?.name?.toLocaleLowerCase(),
@ -406,7 +406,7 @@ export default {
'WorkItem|Some fields are not present in %{workItemType}. If you change type now, this information will be lost.',
),
this.isSelectedWorkItemTypeEpic
? WORK_ITEM_TYPE_VALUE_EPIC
? WORK_ITEM_TYPE_NAME_EPIC
: this.selectedWorkItemType.text,
);
}

View File

@ -20,7 +20,7 @@ import SafeHtml from '~/vue_shared/directives/safe_html';
import {
WORK_ITEM_TYPE_ENUM_ISSUE,
WORK_ITEM_TYPE_ENUM_TASK,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
} from '../constants';
const trackingMixin = InternalEvents.mixin();
@ -90,7 +90,7 @@ export default {
},
computed: {
childItemType() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC
? WORK_ITEM_TYPE_ENUM_ISSUE
: WORK_ITEM_TYPE_ENUM_TASK;
},

View File

@ -32,19 +32,19 @@ import {
WIDGET_TYPE_DESCRIPTION,
WIDGET_TYPE_AWARD_EMOJI,
WIDGET_TYPE_HIERARCHY,
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
WORK_ITEM_TYPE_NAME_OBJECTIVE,
WIDGET_TYPE_NOTES,
WIDGET_TYPE_LINKED_ITEMS,
WIDGET_TYPE_DESIGNS,
WORK_ITEM_REFERENCE_CHAR,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
WIDGET_TYPE_WEIGHT,
WIDGET_TYPE_DEVELOPMENT,
STATE_OPEN,
WIDGET_TYPE_ERROR_TRACKING,
WIDGET_TYPE_ITERATION,
WIDGET_TYPE_MILESTONE,
WORK_ITEM_TYPE_VALUE_INCIDENT,
WORK_ITEM_TYPE_NAME_INCIDENT,
} from '../constants';
import workItemUpdatedSubscription from '../graphql/work_item_updated.subscription.graphql';
@ -363,7 +363,7 @@ export default {
hasParent() {
const { workItemType, parentWorkItem, hasSubepicsFeature } = this;
if (workItemType === WORK_ITEM_TYPE_VALUE_EPIC) {
if (workItemType === WORK_ITEM_TYPE_NAME_EPIC) {
return Boolean(hasSubepicsFeature && parentWorkItem);
}
@ -449,7 +449,7 @@ export default {
return !this.isModal && !this.editMode && !this.isDrawer;
},
workItemLinkedItems() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC
? this.findWidget(WIDGET_TYPE_LINKED_ITEMS) && this.hasLinkedItemsEpicsFeature
: this.findWidget(WIDGET_TYPE_LINKED_ITEMS);
},
@ -629,7 +629,7 @@ export default {
openContextualView({ event, modalWorkItem }) {
if (
!this.contextualViewEnabled ||
modalWorkItem.workItemType?.name === WORK_ITEM_TYPE_VALUE_INCIDENT ||
modalWorkItem.workItemType?.name === WORK_ITEM_TYPE_NAME_INCIDENT ||
this.isDrawer
) {
return;
@ -854,7 +854,7 @@ export default {
});
},
},
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
WORK_ITEM_TYPE_NAME_OBJECTIVE,
WORKSPACE_PROJECT,
noAccessSvg,
};

View File

@ -4,8 +4,8 @@ import { helpPagePath } from '~/helpers/help_page_helper';
import { s__ } from '~/locale';
import HelpIcon from '~/vue_shared/components/help_icon/help_icon.vue';
import {
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
WORK_ITEM_TYPE_NAME_EPIC,
WORK_ITEM_TYPE_NAME_OBJECTIVE,
sprintfWorkItem,
} from '../../constants';
@ -51,11 +51,11 @@ export default {
},
getPopoverLink(workItemType) {
switch (workItemType) {
case WORK_ITEM_TYPE_VALUE_EPIC:
case WORK_ITEM_TYPE_NAME_EPIC:
return helpPagePath('/user/group/epics/manage_epics', {
anchor: 'multi-level-child-epics',
});
case WORK_ITEM_TYPE_VALUE_OBJECTIVE:
case WORK_ITEM_TYPE_NAME_OBJECTIVE:
return helpPagePath('/user/okrs', { anchor: 'child-objectives-and-key-results' });
default:
return '';

View File

@ -11,7 +11,7 @@ import { s__ } from '~/locale';
import { defaultSortableOptions, DRAG_DELAY } from '~/sortable/constants';
import { sortableStart, sortableEnd } from '~/sortable/utils';
import { WORK_ITEM_TYPE_VALUE_OBJECTIVE, WORK_ITEM_TYPE_VALUE_EPIC } from '../../constants';
import { WORK_ITEM_TYPE_NAME_OBJECTIVE, WORK_ITEM_TYPE_NAME_EPIC } from '../../constants';
import { findHierarchyWidgetChildren, getItems, findHierarchyWidgets } from '../../utils';
import {
addHierarchyChild,
@ -233,7 +233,7 @@ export default {
});
},
prefetchWorkItem({ iid }) {
if (this.workItemType !== WORK_ITEM_TYPE_VALUE_OBJECTIVE) {
if (this.workItemType !== WORK_ITEM_TYPE_NAME_OBJECTIVE) {
this.prefetch = setTimeout(
() => this.addWorkItemQuery({ iid }),
DEFAULT_DEBOUNCE_AND_THROTTLE_MS,
@ -499,9 +499,7 @@ export default {
// Check if current item is an Epic
if (
[WORK_ITEM_TYPE_VALUE_EPIC, WORK_ITEM_TYPE_VALUE_OBJECTIVE].includes(
item?.workItemType.name,
)
[WORK_ITEM_TYPE_NAME_EPIC, WORK_ITEM_TYPE_NAME_OBJECTIVE].includes(item?.workItemType.name)
) {
const { top, left } = originalEvent.target.getBoundingClientRect();

View File

@ -2,7 +2,7 @@
import { GlButton, GlTooltipDirective } from '@gitlab/ui';
import { __, s__ } from '~/locale';
import { createAlert } from '~/alert';
import { STATE_OPEN, WORK_ITEM_TYPE_VALUE_TASK } from '../../constants';
import { STATE_OPEN, WORK_ITEM_TYPE_NAME_TASK } from '../../constants';
import { findHierarchyWidgets, getDefaultHierarchyChildrenCount, getItems } from '../../utils';
import toggleHierarchyTreeChildMutation from '../../graphql/client/toggle_hierarchy_tree_child.mutation.graphql';
import isExpandedHierarchyTreeChildQuery from '../../graphql/client/is_expanded_hierarchy_tree_child.query.graphql';
@ -190,7 +190,7 @@ export default {
return this.childItem.workItemType.name;
},
iconClass() {
if (this.childItemType === WORK_ITEM_TYPE_VALUE_TASK) {
if (this.childItemType === WORK_ITEM_TYPE_NAME_TASK) {
return this.isItemOpen ? 'gl-fill-icon-success' : 'gl-fill-icon-info';
}
return '';
@ -214,7 +214,7 @@ export default {
};
},
shouldShowWeight() {
return this.childItemType === WORK_ITEM_TYPE_VALUE_TASK ? this.showTaskWeight : true;
return this.childItemType === WORK_ITEM_TYPE_NAME_TASK ? this.showTaskWeight : true;
},
allowedChildTypes() {
return this.allowedChildrenByType?.[this.childItemType] || [];

View File

@ -12,7 +12,7 @@ import {
FORM_TYPES,
WORK_ITEMS_TYPE_MAP,
WORK_ITEM_TYPE_ENUM_TASK,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
MAX_WORK_ITEMS,
sprintfWorkItem,
WIDGET_TYPE_MILESTONE,
@ -126,7 +126,7 @@ export default {
},
computed: {
workItemChildIsEpic() {
return this.childrenTypeValue === WORK_ITEM_TYPE_VALUE_EPIC;
return this.childrenTypeValue === WORK_ITEM_TYPE_NAME_EPIC;
},
workItemInput() {
let workItemInput = {

View File

@ -6,7 +6,7 @@ import { findWidget } from '~/issues/list/utils';
import {
i18n,
WIDGET_TYPE_WEIGHT,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
WIDGET_TYPE_HEALTH_STATUS,
} from '../../constants';
@ -96,7 +96,7 @@ export default {
return Math.round((this.rolledUpCompletedWeight / this.rolledUpWeight) * 100);
},
weightTooltip() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_EPIC ? __('Issue weight') : __('Weight');
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC ? __('Issue weight') : __('Weight');
},
rolledUpHealthStatus() {
return this.workItemHealthStatus?.rolledUpHealthStatus;

View File

@ -16,7 +16,7 @@ import {
CHILD_ITEMS_ANCHOR,
WORKITEM_TREE_SHOWLABELS_LOCALSTORAGEKEY,
WORKITEM_TREE_SHOWCLOSED_LOCALSTORAGEKEY,
WORK_ITEM_TYPE_VALUE_EPIC,
WORK_ITEM_TYPE_NAME_EPIC,
WIDGET_TYPE_HIERARCHY,
INJECTION_LINK_CHILD_PREVENT_ROUTER_NAVIGATION,
DETAIL_VIEW_QUERY_PARAM_NAME,
@ -266,7 +266,7 @@ export default {
return this.showRolledUpWeight && this.rolledUpWeight !== null;
},
showTaskWeight() {
return this.workItemType !== WORK_ITEM_TYPE_VALUE_EPIC;
return this.workItemType !== WORK_ITEM_TYPE_NAME_EPIC;
},
allowedChildrenByType() {
return this.workItemTypes.reduce((acc, type) => {

View File

@ -17,7 +17,7 @@ import {
I18N_WORK_ITEM_ERROR_UPDATING,
sprintfWorkItem,
WORK_ITEM_TYPE_ENUM_EPIC,
WORK_ITEM_TYPE_VALUE_ISSUE,
WORK_ITEM_TYPE_NAME_ISSUE,
WORK_ITEM_TYPE_VALUE_MAP,
} from '../constants';
import { isReference, findHierarchyWidgetDefinition, newWorkItemId } from '../utils';
@ -93,7 +93,7 @@ export default {
},
computed: {
isIssue() {
return this.workItemType === WORK_ITEM_TYPE_VALUE_ISSUE;
return this.workItemType === WORK_ITEM_TYPE_NAME_ISSUE;
},
isLoading() {
return (

View File

@ -13,7 +13,7 @@ import WorkItemLinkChildContents from '../shared/work_item_link_child_contents.v
import removeLinkedItemsMutation from '../../graphql/remove_linked_items.mutation.graphql';
import addLinkedItemsMutation from '../../graphql/add_linked_items.mutation.graphql';
import { RELATIONSHIP_TYPE_ENUM, WORK_ITEM_TYPE_VALUE_INCIDENT } from '../../constants';
import { RELATIONSHIP_TYPE_ENUM, WORK_ITEM_TYPE_NAME_INCIDENT } from '../../constants';
export default {
RELATIONSHIP_TYPE_ENUM,
@ -189,7 +189,7 @@ export default {
},
handleLinkedItemClick(event, linkedItem) {
// if the linkedItem is incident, redirect to the incident page
if (linkedItem?.workItem?.workItemType?.name === WORK_ITEM_TYPE_VALUE_INCIDENT) {
if (linkedItem?.workItem?.workItemType?.name === WORK_ITEM_TYPE_NAME_INCIDENT) {
visitUrl(linkedItem.workItem.webUrl);
} else {
this.$emit('showModal', { event, child: linkedItem.workItem });

View File

@ -44,15 +44,15 @@ export const WORK_ITEM_TYPE_ENUM_TASK = 'TASK';
export const WORK_ITEM_TYPE_ENUM_TEST_CASE = 'TEST_CASE';
export const WORK_ITEM_TYPE_ENUM_TICKET = 'TICKET';
export const WORK_ITEM_TYPE_VALUE_EPIC = 'Epic';
export const WORK_ITEM_TYPE_VALUE_INCIDENT = 'Incident';
export const WORK_ITEM_TYPE_VALUE_ISSUE = 'Issue';
export const WORK_ITEM_TYPE_VALUE_KEY_RESULT = 'Key Result';
export const WORK_ITEM_TYPE_VALUE_OBJECTIVE = 'Objective';
export const WORK_ITEM_TYPE_VALUE_REQUIREMENTS = 'Requirement';
export const WORK_ITEM_TYPE_VALUE_TASK = 'Task';
export const WORK_ITEM_TYPE_VALUE_TEST_CASE = 'Test Case';
export const WORK_ITEM_TYPE_VALUE_TICKET = 'Ticket';
export const WORK_ITEM_TYPE_NAME_EPIC = 'Epic';
export const WORK_ITEM_TYPE_NAME_INCIDENT = 'Incident';
export const WORK_ITEM_TYPE_NAME_ISSUE = 'Issue';
export const WORK_ITEM_TYPE_NAME_KEY_RESULT = 'Key Result';
export const WORK_ITEM_TYPE_NAME_OBJECTIVE = 'Objective';
export const WORK_ITEM_TYPE_NAME_REQUIREMENTS = 'Requirement';
export const WORK_ITEM_TYPE_NAME_TASK = 'Task';
export const WORK_ITEM_TYPE_NAME_TEST_CASE = 'Test Case';
export const WORK_ITEM_TYPE_NAME_TICKET = 'Ticket';
export const SEARCH_DEBOUNCE = 500;
@ -92,57 +92,57 @@ export const WORK_ITEMS_TYPE_MAP = {
[WORK_ITEM_TYPE_ENUM_INCIDENT]: {
icon: `issue-type-incident`,
name: s__('WorkItem|Incident'),
value: WORK_ITEM_TYPE_VALUE_INCIDENT,
value: WORK_ITEM_TYPE_NAME_INCIDENT,
},
[WORK_ITEM_TYPE_ENUM_ISSUE]: {
icon: `issue-type-issue`,
name: s__('WorkItem|Issue'),
value: WORK_ITEM_TYPE_VALUE_ISSUE,
value: WORK_ITEM_TYPE_NAME_ISSUE,
routeParamName: 'issues',
},
[WORK_ITEM_TYPE_ENUM_TASK]: {
icon: `issue-type-task`,
name: s__('WorkItem|Task'),
value: WORK_ITEM_TYPE_VALUE_TASK,
value: WORK_ITEM_TYPE_NAME_TASK,
},
[WORK_ITEM_TYPE_ENUM_TEST_CASE]: {
icon: `issue-type-test-case`,
name: s__('WorkItem|Test case'),
value: WORK_ITEM_TYPE_VALUE_TEST_CASE,
value: WORK_ITEM_TYPE_NAME_TEST_CASE,
},
[WORK_ITEM_TYPE_ENUM_REQUIREMENTS]: {
icon: `issue-type-requirements`,
name: s__('WorkItem|Requirements'),
value: WORK_ITEM_TYPE_VALUE_REQUIREMENTS,
value: WORK_ITEM_TYPE_NAME_REQUIREMENTS,
},
[WORK_ITEM_TYPE_ENUM_OBJECTIVE]: {
icon: `issue-type-objective`,
name: s__('WorkItem|Objective'),
value: WORK_ITEM_TYPE_VALUE_OBJECTIVE,
value: WORK_ITEM_TYPE_NAME_OBJECTIVE,
},
[WORK_ITEM_TYPE_ENUM_KEY_RESULT]: {
icon: `issue-type-keyresult`,
name: s__('WorkItem|Key result'),
value: WORK_ITEM_TYPE_VALUE_KEY_RESULT,
value: WORK_ITEM_TYPE_NAME_KEY_RESULT,
},
[WORK_ITEM_TYPE_ENUM_EPIC]: {
icon: `epic`,
name: s__('WorkItem|Epic'),
value: WORK_ITEM_TYPE_VALUE_EPIC,
value: WORK_ITEM_TYPE_NAME_EPIC,
routeParamName: 'epics',
},
};
export const WORK_ITEM_TYPE_VALUE_MAP = {
[WORK_ITEM_TYPE_VALUE_EPIC]: WORK_ITEM_TYPE_ENUM_EPIC,
[WORK_ITEM_TYPE_VALUE_INCIDENT]: WORK_ITEM_TYPE_ENUM_INCIDENT,
[WORK_ITEM_TYPE_VALUE_ISSUE]: WORK_ITEM_TYPE_ENUM_ISSUE,
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: WORK_ITEM_TYPE_ENUM_KEY_RESULT,
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: WORK_ITEM_TYPE_ENUM_OBJECTIVE,
[WORK_ITEM_TYPE_VALUE_REQUIREMENTS]: WORK_ITEM_TYPE_ENUM_REQUIREMENTS,
[WORK_ITEM_TYPE_VALUE_TASK]: WORK_ITEM_TYPE_ENUM_TASK,
[WORK_ITEM_TYPE_VALUE_TEST_CASE]: WORK_ITEM_TYPE_ENUM_TEST_CASE,
[WORK_ITEM_TYPE_VALUE_TICKET]: WORK_ITEM_TYPE_ENUM_TICKET,
[WORK_ITEM_TYPE_NAME_EPIC]: WORK_ITEM_TYPE_ENUM_EPIC,
[WORK_ITEM_TYPE_NAME_INCIDENT]: WORK_ITEM_TYPE_ENUM_INCIDENT,
[WORK_ITEM_TYPE_NAME_ISSUE]: WORK_ITEM_TYPE_ENUM_ISSUE,
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: WORK_ITEM_TYPE_ENUM_KEY_RESULT,
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: WORK_ITEM_TYPE_ENUM_OBJECTIVE,
[WORK_ITEM_TYPE_NAME_REQUIREMENTS]: WORK_ITEM_TYPE_ENUM_REQUIREMENTS,
[WORK_ITEM_TYPE_NAME_TASK]: WORK_ITEM_TYPE_ENUM_TASK,
[WORK_ITEM_TYPE_NAME_TEST_CASE]: WORK_ITEM_TYPE_ENUM_TEST_CASE,
[WORK_ITEM_TYPE_NAME_TICKET]: WORK_ITEM_TYPE_ENUM_TICKET,
};
export const FORM_TYPES = {
@ -223,9 +223,9 @@ export const LINKED_ITEM_TYPE_VALUE = {
};
export const LINK_ITEM_FORM_HEADER_LABEL = {
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: s__('WorkItem|The current objective'),
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: s__('WorkItem|The current key result'),
[WORK_ITEM_TYPE_VALUE_TASK]: s__('WorkItem|The current task'),
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: s__('WorkItem|The current objective'),
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: s__('WorkItem|The current key result'),
[WORK_ITEM_TYPE_NAME_TASK]: s__('WorkItem|The current task'),
};
export const LINKED_ITEMS_ANCHOR = 'linkeditems';
@ -301,40 +301,40 @@ export const WORK_ITEM_CREATE_ENTITY_MODAL_TARGET_SOURCE = 'source';
export const WORK_ITEM_CREATE_ENTITY_MODAL_TARGET_BRANCH = 'branch';
export const BASE_ALLOWED_CREATE_TYPES = [
WORK_ITEM_TYPE_VALUE_INCIDENT,
WORK_ITEM_TYPE_VALUE_ISSUE,
WORK_ITEM_TYPE_VALUE_TASK,
WORK_ITEM_TYPE_NAME_INCIDENT,
WORK_ITEM_TYPE_NAME_ISSUE,
WORK_ITEM_TYPE_NAME_TASK,
];
export const ALLOWED_CONVERSION_TYPES = [
WORK_ITEM_TYPE_VALUE_KEY_RESULT,
WORK_ITEM_TYPE_VALUE_OBJECTIVE,
WORK_ITEM_TYPE_VALUE_TASK,
WORK_ITEM_TYPE_VALUE_ISSUE,
WORK_ITEM_TYPE_NAME_KEY_RESULT,
WORK_ITEM_TYPE_NAME_OBJECTIVE,
WORK_ITEM_TYPE_NAME_TASK,
WORK_ITEM_TYPE_NAME_ISSUE,
];
export const WORK_ITEM_TYPE_NAME_MAP = {
[WORK_ITEM_TYPE_VALUE_EPIC]: s__('WorkItem|Epic'),
[WORK_ITEM_TYPE_VALUE_INCIDENT]: s__('WorkItem|Incident'),
[WORK_ITEM_TYPE_VALUE_ISSUE]: s__('WorkItem|Issue'),
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: s__('WorkItem|Key result'),
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: s__('WorkItem|Objective'),
[WORK_ITEM_TYPE_VALUE_REQUIREMENTS]: s__('WorkItem|Requirement'),
[WORK_ITEM_TYPE_VALUE_TASK]: s__('WorkItem|Task'),
[WORK_ITEM_TYPE_VALUE_TEST_CASE]: s__('WorkItem|Test case'),
[WORK_ITEM_TYPE_VALUE_TICKET]: s__('WorkItem|Ticket'),
[WORK_ITEM_TYPE_NAME_EPIC]: s__('WorkItem|Epic'),
[WORK_ITEM_TYPE_NAME_INCIDENT]: s__('WorkItem|Incident'),
[WORK_ITEM_TYPE_NAME_ISSUE]: s__('WorkItem|Issue'),
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: s__('WorkItem|Key result'),
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: s__('WorkItem|Objective'),
[WORK_ITEM_TYPE_NAME_REQUIREMENTS]: s__('WorkItem|Requirement'),
[WORK_ITEM_TYPE_NAME_TASK]: s__('WorkItem|Task'),
[WORK_ITEM_TYPE_NAME_TEST_CASE]: s__('WorkItem|Test case'),
[WORK_ITEM_TYPE_NAME_TICKET]: s__('WorkItem|Ticket'),
};
export const WORK_ITEM_TYPE_NAME_LOWERCASE_MAP = {
[WORK_ITEM_TYPE_VALUE_EPIC]: s__('WorkItem|epic'),
[WORK_ITEM_TYPE_VALUE_INCIDENT]: s__('WorkItem|incident'),
[WORK_ITEM_TYPE_VALUE_ISSUE]: s__('WorkItem|issue'),
[WORK_ITEM_TYPE_VALUE_KEY_RESULT]: s__('WorkItem|key result'),
[WORK_ITEM_TYPE_VALUE_OBJECTIVE]: s__('WorkItem|objective'),
[WORK_ITEM_TYPE_VALUE_REQUIREMENTS]: s__('WorkItem|requirement'),
[WORK_ITEM_TYPE_VALUE_TASK]: s__('WorkItem|task'),
[WORK_ITEM_TYPE_VALUE_TEST_CASE]: s__('WorkItem|test case'),
[WORK_ITEM_TYPE_VALUE_TICKET]: s__('WorkItem|ticket'),
[WORK_ITEM_TYPE_NAME_EPIC]: s__('WorkItem|epic'),
[WORK_ITEM_TYPE_NAME_INCIDENT]: s__('WorkItem|incident'),
[WORK_ITEM_TYPE_NAME_ISSUE]: s__('WorkItem|issue'),
[WORK_ITEM_TYPE_NAME_KEY_RESULT]: s__('WorkItem|key result'),
[WORK_ITEM_TYPE_NAME_OBJECTIVE]: s__('WorkItem|objective'),
[WORK_ITEM_TYPE_NAME_REQUIREMENTS]: s__('WorkItem|requirement'),
[WORK_ITEM_TYPE_NAME_TASK]: s__('WorkItem|task'),
[WORK_ITEM_TYPE_NAME_TEST_CASE]: s__('WorkItem|test case'),
[WORK_ITEM_TYPE_NAME_TICKET]: s__('WorkItem|ticket'),
};
export const WORK_ITEM_WIDGETS_NAME_MAP = {

View File

@ -35,21 +35,30 @@ module Resolvers
return unless runner.project_type?
BatchLoader::GraphQL.for(runner.id).batch do |runner_ids, loader|
# rubocop: disable CodeReuse/ActiveRecord -- this runs on a limited number of records
runner_id_to_owner_id =
::Ci::Runner.project_type.id_in(runner_ids)
.pluck(:id, :sharding_key_id)
.to_h
# rubocop: enable CodeReuse/ActiveRecord
# rubocop:disable CodeReuse/ActiveRecord -- this query is too specific to generalize in model
runner_and_projects_with_row_number =
::Ci::RunnerProject
.where(runner_id: runner_ids)
.select('id, runner_id, project_id, ROW_NUMBER() OVER (PARTITION BY runner_id ORDER BY id ASC)')
runner_and_owner_projects =
::Ci::RunnerProject
.select(:id, :runner_id, :project_id)
.from("(#{runner_and_projects_with_row_number.to_sql}) temp WHERE row_number = 1")
owner_project_id_by_runner_id =
runner_and_owner_projects
.group_by(&:runner_id)
.transform_values { |runner_projects| runner_projects.first.project_id }
project_ids = owner_project_id_by_runner_id.values.uniq
projects = apply_lookahead(Project.id_in(runner_id_to_owner_id.values.uniq))
projects = apply_lookahead(Project.id_in(project_ids))
Preloaders::ProjectPolicyPreloader.new(projects, current_user).execute
projects_by_id = projects.index_by(&:id)
runner_ids.each do |runner_id|
owner_project_id = runner_id_to_owner_id[runner_id]
owner_project_id = owner_project_id_by_runner_id[runner_id]
loader.call(runner_id, projects_by_id[owner_project_id])
end
# rubocop: enable CodeReuse/ActiveRecord
end
end
end

View File

@ -3,6 +3,7 @@
module Ci
class Partition < Ci::ApplicationRecord
MAX_PARTITION_SIZE = 100.gigabytes
GSTG_PARTITION_SIZE = 4.gigabytes
INITIAL_PARTITION_VALUE = 100
LATEST_PARTITION_VALUE = 102

View File

@ -420,11 +420,11 @@ module Ci
when 'instance_type'
::User.find_by_id(creator_id)
when 'group_type'
::Group.find_by_id(sharding_key_id)
runner_namespaces.first&.namespace
when 'project_type'
owner_project = ::Project.find_by_id(sharding_key_id)
owner_project || fallback_owner_project
# If runner projects are not yet saved (e.g. when calculating `routable_token`), use in-memory collection
candidates = persisted? ? runner_projects.order(:id) : runner_projects
candidates.first&.project
end
end
strong_memoize_attr :owner

View File

@ -317,7 +317,7 @@ class ContainerRepository < ApplicationRecord
return false unless project.has_container_registry_protected_tag_rules?(
action: 'delete',
access_level: user.max_member_access_for_project(project.id)
access_level: project.team.max_member_access(user.id)
)
# This is an API call so we put it last

View File

@ -152,7 +152,7 @@ module Auth
# can return early here, but not any earlier.
return patterns if user.can_admin_all_resources?
user_access_level = user.max_member_access_for_project(project.id)
user_access_level = project.team.max_member_access(user.id)
applicable_rules = rules.for_actions_and_access(actions_to_check, user_access_level, include_immutable: false)
applicable_rules.each do |rule|
@ -386,10 +386,9 @@ module Auth
next unless push_scope_container_registry_path.valid?
repository_project = push_scope_container_registry_path.repository_project
current_user_project_authorization_access_level = current_user&.max_member_access_for_project(repository_project.id)
repository_project.container_registry_protection_rules.for_push_exists?(
access_level: current_user_project_authorization_access_level,
access_level: repository_project.team.max_member_access(current_user&.id),
repository_path: push_scope_container_registry_path.to_s
)
end

View File

@ -25,7 +25,10 @@ module Ci
end
def above_threshold?
partition.above_threshold?(Ci::Partition::MAX_PARTITION_SIZE)
threshold = Ci::Partition::MAX_PARTITION_SIZE
threshold = Ci::Partition::GSTG_PARTITION_SIZE if Gitlab.staging?
partition.above_threshold?(threshold)
end
def headroom_available?

View File

@ -24,7 +24,10 @@ module Ci
attr_reader :partition
def above_threshold?
partition.above_threshold?(Ci::Partition::MAX_PARTITION_SIZE)
threshold = Ci::Partition::MAX_PARTITION_SIZE
threshold = Ci::Partition::GSTG_PARTITION_SIZE if Gitlab.staging?
partition.above_threshold?(threshold)
end
def sync_available_partitions_statuses!

View File

@ -40,10 +40,9 @@ module ContainerRegistry
def check_rule_exists_for_user
return false if current_user.can_admin_all_resources?
user_project_authorization_access_level = current_user.max_member_access_for_project(project.id)
project.container_registry_protection_rules.for_action_exists?(
action: params[:action],
access_level: user_project_authorization_access_level,
access_level: project.team.max_member_access(current_user.id),
repository_path: params[:repository_path]
)
end

View File

@ -15,10 +15,8 @@ module Packages
return ERROR_RESPONSE_UNAUTHORIZED unless current_user_can_destroy_package?
return SUCCESS_RESPONSE_RULE_DOESNT_EXIST if current_user.can_admin_all_resources?
user_project_authorization_access_level = current_user.max_member_access_for_project(project.id)
response = project.package_protection_rules.for_delete_exists?(
access_level: user_project_authorization_access_level,
access_level: project.team.max_member_access(current_user.id),
package_name: params[:package_name],
package_type: params[:package_type]
)

View File

@ -33,10 +33,9 @@ module Packages
def check_rule_exists_for_user
return false if current_user.can_admin_all_resources?
user_project_authorization_access_level = current_user.max_member_access_for_project(project.id)
project.package_protection_rules.for_action_exists?(
action: :push,
access_level: user_project_authorization_access_level,
access_level: project.team.max_member_access(current_user.id),
package_name: params[:package_name],
package_type: params[:package_type]
)

View File

@ -29,7 +29,7 @@ module Projects
if current_user
return if current_user.can_admin_all_resources?
user_access_level = current_user.max_member_access_for_project(project.id)
user_access_level = project.team.max_member_access(current_user.id)
tag_rules = tag_rules.for_delete_and_access(user_access_level)
end

View File

@ -59,7 +59,7 @@ module Projects
if current_user
return if current_user.can_admin_all_resources?
user_access_level = current_user.max_member_access_for_project(project.id)
user_access_level = project.team.max_member_access(current_user.id)
tag_rules = tag_rules.for_delete_and_access(user_access_level)
end

View File

@ -334,7 +334,7 @@ module Projects
return false unless project.has_container_registry_protected_tag_rules?(
action: 'delete',
access_level: current_user.max_member_access_for_project(project.id)
access_level: project.team.max_member_access(current_user.id)
)
return false unless project.has_container_registry_tags?

View File

@ -10,4 +10,4 @@ milestone: '13.0'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -8,6 +8,6 @@ description: Keeps approval merge request rules
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8497
milestone: '11.7'
gitlab_schema: gitlab_main_cell
table_size: small
table_size: large
sharding_key:
project_id: projects

View File

@ -17,5 +17,5 @@ desired_sharding_key:
table: approval_merge_request_rules
sharding_key: project_id
belongs_to: approval_merge_request_rule
table_size: small
table_size: medium
desired_sharding_key_migration_job_name: BackfillApprovalMergeRequestRulesApprovedApproversProjectId

View File

@ -17,5 +17,5 @@ desired_sharding_key:
table: approval_merge_request_rules
sharding_key: project_id
belongs_to: approval_merge_request_rule
table_size: small
table_size: over_limit
desired_sharding_key_migration_job_name: BackfillApprovalMergeRequestRulesUsersProjectId

View File

@ -10,4 +10,4 @@ milestone: '7.12'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -8,4 +8,4 @@ description: TODO
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39652
milestone: '13.4'
gitlab_schema: gitlab_main_clusterwide
table_size: small
table_size: large

View File

@ -17,5 +17,5 @@ desired_sharding_key:
table: deployments
sharding_key: project_id
belongs_to: deployment
table_size: small
table_size: medium
desired_sharding_key_migration_job_name: BackfillDeploymentMergeRequestsProjectId

View File

@ -21,4 +21,4 @@ schema_inconsistencies:
- type: missing_indexes
object_name: index_deployments_on_user_id_and_status_and_created_at
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/157136
table_size: small
table_size: over_limit

View File

@ -9,4 +9,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17147
milestone: '12.4'
gitlab_schema: gitlab_main
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/514600
table_size: small
table_size: over_limit

View File

@ -9,4 +9,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/28113
milestone: '13.0'
gitlab_schema: gitlab_main_cell
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/444222
table_size: small
table_size: medium

View File

@ -8,6 +8,6 @@ description: Stores daily snapshots of DORA4 metrics per environment.
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55473
milestone: '13.10'
gitlab_schema: gitlab_main_cell
table_size: small
table_size: medium
sharding_key:
project_id: projects

View File

@ -4,10 +4,10 @@ classes:
- Ai::DuoWorkflows::Checkpoint
feature_categories:
- duo_workflow
description:
introduced_by_url:
description:
introduced_by_url:
milestone: '17.2'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -11,4 +11,4 @@ milestone: '8.9'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -19,4 +19,4 @@ sharding_key:
project_id: projects
group_id: namespaces
personal_namespace_id: namespaces
table_size: small
table_size: over_limit

View File

@ -10,4 +10,4 @@ milestone: '9.5'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -10,4 +10,4 @@ milestone: '17.2'
gitlab_schema: gitlab_main_cell
sharding_key:
namespace_id: namespaces
table_size: small
table_size: medium

View File

@ -10,4 +10,4 @@ milestone: '15.6'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -17,5 +17,5 @@ desired_sharding_key:
table: issues
sharding_key: namespace_id
belongs_to: issue
table_size: small
table_size: medium
desired_sharding_key_migration_job_name: BackfillIssueMetricsNamespaceId

View File

@ -17,5 +17,5 @@ desired_sharding_key:
table: issues
sharding_key: namespace_id
belongs_to: issue
table_size: small
table_size: medium
desired_sharding_key_migration_job_name: BackfillIssueUserMentionsNamespaceId

View File

@ -11,4 +11,4 @@ milestone: "<6.0"
gitlab_schema: gitlab_main_cell
sharding_key:
namespace_id: namespaces
table_size: small
table_size: over_limit

View File

@ -12,4 +12,4 @@ description: SSH keys used by users or for deployments.
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/9ba1224867665844b117fa037e1465bb706b3685
milestone: "<6.0"
gitlab_schema: gitlab_main_clusterwide
table_size: small
table_size: medium

View File

@ -10,4 +10,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/03654a6abf47c88
milestone: '7.2'
gitlab_schema: gitlab_main
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/514599
table_size: small
table_size: medium

View File

@ -9,4 +9,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17
milestone: '8.2'
gitlab_schema: gitlab_main_cell_local
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/490482
table_size: small
table_size: medium

View File

@ -10,4 +10,4 @@ milestone: '8.2'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -13,4 +13,4 @@ milestone: '7.4'
gitlab_schema: gitlab_main_cell
sharding_key:
member_namespace_id: namespaces
table_size: small
table_size: medium

View File

@ -8,6 +8,6 @@ description: Store allocated assignees for merge requests
introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/26496
milestone: '11.10'
gitlab_schema: gitlab_main_cell
table_size: small
table_size: medium
sharding_key:
project_id: projects

View File

@ -17,5 +17,5 @@ desired_sharding_key:
table: merge_requests
sharding_key: target_project_id
belongs_to: merge_request
table_size: small
table_size: medium
desired_sharding_key_migration_job_name: BackfillMergeRequestCleanupSchedulesProjectId

View File

@ -17,4 +17,4 @@ desired_sharding_key:
table: merge_request_diffs
sharding_key: project_id
belongs_to: merge_request_diff
table_size: small
table_size: over_limit

View File

@ -17,4 +17,4 @@ desired_sharding_key:
table: merge_request_diffs
sharding_key: project_id
belongs_to: merge_request_diff
table_size: small
table_size: over_limit

View File

@ -11,4 +11,4 @@ milestone: '6.6'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: over_limit

View File

@ -11,4 +11,4 @@ milestone: '8.12'
gitlab_schema: gitlab_main_cell
sharding_key:
target_project_id: projects
table_size: small
table_size: over_limit

View File

@ -8,6 +8,6 @@ description: Store allocated reviewers for merge requests
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40358
milestone: '13.4'
gitlab_schema: gitlab_main_cell
table_size: small
table_size: medium
sharding_key:
project_id: projects

View File

@ -8,6 +8,6 @@ description: Store user mentions for merge requests
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/19009
milestone: '12.6'
gitlab_schema: gitlab_main_cell
table_size: small
table_size: medium
sharding_key:
project_id: projects

View File

@ -10,4 +10,4 @@ milestone: "<6.0"
gitlab_schema: gitlab_main_cell
sharding_key:
target_project_id: projects
table_size: small
table_size: over_limit

View File

@ -8,6 +8,6 @@ description: TODO
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74290
milestone: '14.6'
gitlab_schema: gitlab_main_cell
table_size: small
table_size: medium
sharding_key:
target_project_id: projects

View File

@ -20,4 +20,4 @@ schema_inconsistencies:
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135040
sharding_key:
organization_id: organizations
table_size: small
table_size: large

View File

@ -9,4 +9,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/18
milestone: '11.0'
gitlab_schema: gitlab_main_cell
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/444222
table_size: small
table_size: over_limit

View File

@ -23,4 +23,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/9ba122486766584
milestone: "<6.0"
gitlab_schema: gitlab_main_cell
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/444222
table_size: small
table_size: over_limit

View File

@ -11,4 +11,4 @@ milestone: '7.7'
gitlab_schema: gitlab_main_cell
sharding_key:
organization_id: organizations
table_size: small
table_size: medium

View File

@ -11,4 +11,4 @@ milestone: '7.7'
gitlab_schema: gitlab_main_cell
sharding_key:
organization_id: organizations
table_size: small
table_size: over_limit

View File

@ -8,6 +8,6 @@ description: Join table between packages_packages and packages_dependencies
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/20549
milestone: '12.6'
gitlab_schema: gitlab_main_cell
table_size: small
table_size: medium
sharding_key:
project_id: projects

View File

@ -17,5 +17,5 @@ desired_sharding_key:
table: packages_package_files
sharding_key: project_id
belongs_to: package_file
table_size: small
table_size: medium
desired_sharding_key_migration_job_name: BackfillPackagesPackageFileBuildInfosProjectId

View File

@ -10,4 +10,4 @@ milestone: '11.3'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: over_limit

View File

@ -24,4 +24,4 @@ milestone: '11.3'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -10,4 +10,4 @@ milestone: '8.9'
gitlab_schema: gitlab_main_cell
sharding_key:
organization_id: organizations
table_size: small
table_size: large

View File

@ -8,4 +8,4 @@ description: Tracks licenses under which a given package version has been publis
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102794
milestone: '15.6'
gitlab_schema: gitlab_pm
table_size: small
table_size: medium

View File

@ -8,4 +8,4 @@ description: Tracks package versions served by public package registries.
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/102794
milestone: '15.6'
gitlab_schema: gitlab_pm
table_size: small
table_size: medium

View File

@ -11,4 +11,4 @@ milestone: '8.14'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: over_limit

View File

@ -10,4 +10,4 @@ milestone: '11.9'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

View File

@ -11,4 +11,4 @@ milestone: '8.12'
gitlab_schema: gitlab_main_cell
sharding_key:
project_id: projects
table_size: small
table_size: medium

Some files were not shown because too many files have changed in this diff Show More