Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2023-12-06 12:11:09 +00:00
parent 08608c8e9e
commit e9aabbc4b5
219 changed files with 1271 additions and 1820 deletions

View File

@ -14,7 +14,7 @@ include:
gitlab_auth_token_variable_name: "PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE"
allure_job_name: "${QA_RUN_TYPE}"
- project: gitlab-org/quality/pipeline-common
ref: 7.13.3
ref: 8.0.0
file:
- /ci/base.gitlab-ci.yml
- /ci/knapsack-report.yml

View File

@ -66,6 +66,5 @@ Capybara/VisibilityMatcher:
- 'spec/support/shared_examples/features/rss_shared_examples.rb'
- 'spec/support/shared_examples/features/wiki/file_attachments_shared_examples.rb'
- 'spec/views/import/gitlab_projects/new.html.haml_spec.rb'
- 'spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
- 'spec/views/profiles/preferences/show.html.haml_spec.rb'
- 'spec/views/projects/merge_requests/edit.html.haml_spec.rb'

View File

@ -2288,7 +2288,6 @@ Layout/LineLength:
- 'ee/spec/views/compliance_management/compliance_framework/_project_settings.html.haml_spec.rb'
- 'ee/spec/views/groups/security/discover/show.html.haml_spec.rb'
- 'ee/spec/views/layouts/header/_current_user_dropdown.html.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
- 'ee/spec/views/operations/environments.html.haml_spec.rb'
- 'ee/spec/views/projects/security/discover/show.html.haml_spec.rb'
- 'ee/spec/views/shared/_mirror_status.html.haml_spec.rb'
@ -4885,7 +4884,6 @@ Layout/LineLength:
- 'spec/views/groups/edit.html.haml_spec.rb'
- 'spec/views/help/index.html.haml_spec.rb'
- 'spec/views/layouts/_head.html.haml_spec.rb'
- 'spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
- 'spec/views/notify/push_to_merge_request_email.text.haml_spec.rb'
- 'spec/views/profiles/keys/_form.html.haml_spec.rb'
- 'spec/views/projects/commits/_commit.html.haml_spec.rb'

View File

@ -735,8 +735,6 @@ RSpec/BeforeAllRoleAssignment:
- 'ee/spec/support/shared_examples/serializers/report_status_shared_examples.rb'
- 'ee/spec/views/compliance_management/compliance_framework/_project_settings.html.haml_spec.rb'
- 'ee/spec/views/layouts/header/_new_dropdown.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
- 'ee/spec/views/shared/promotions/_promotion_link_project.html.haml_spec.rb'
- 'ee/spec/workers/abuse/new_abuse_report_worker_spec.rb'
- 'ee/spec/workers/app_sec/dast/profile_schedule_worker_spec.rb'

View File

@ -852,9 +852,6 @@ RSpec/ContextWording:
- 'ee/spec/views/groups/edit.html.haml_spec.rb'
- 'ee/spec/views/groups/security/discover/show.html.haml_spec.rb'
- 'ee/spec/views/layouts/header/_read_only_banner.html.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_admin.html.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_push_rules_link.html.haml_spec.rb'
- 'ee/spec/views/profiles/preferences/show.html.haml_spec.rb'
- 'ee/spec/views/projects/security/discover/show.html.haml_spec.rb'
- 'ee/spec/views/shared/_clone_panel.html.haml_spec.rb'
@ -3006,7 +3003,6 @@ RSpec/ContextWording:
- 'spec/views/groups/_home_panel.html.haml_spec.rb'
- 'spec/views/groups/edit.html.haml_spec.rb'
- 'spec/views/layouts/application.html.haml_spec.rb'
- 'spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
- 'spec/views/notify/changed_milestone_email.html.haml_spec.rb'
- 'spec/views/profiles/keys/_key.html.haml_spec.rb'
- 'spec/views/profiles/preferences/show.html.haml_spec.rb'

View File

@ -207,8 +207,6 @@ RSpec/FactoryBot/AvoidCreate:
- 'ee/spec/views/layouts/group.html.haml_spec.rb'
- 'ee/spec/views/layouts/header/_current_user_dropdown.html.haml_spec.rb'
- 'ee/spec/views/layouts/header/_read_only_banner.html.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
- 'ee/spec/views/layouts/project.html.haml_spec.rb'
- 'ee/spec/views/projects/edit.html.haml_spec.rb'
- 'ee/spec/views/projects/on_demand_scans/index.html.haml_spec.rb'
@ -569,9 +567,6 @@ RSpec/FactoryBot/AvoidCreate:
- 'spec/views/layouts/application.html.haml_spec.rb'
- 'spec/views/layouts/devise.html.haml_spec.rb'
- 'spec/views/layouts/fullscreen.html.haml_spec.rb'
- 'spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb'
- 'spec/views/layouts/nav/sidebar/_profile.html.haml_spec.rb'
- 'spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb'
- 'spec/views/layouts/profile.html.haml_spec.rb'
- 'spec/views/layouts/terms.html.haml_spec.rb'
- 'spec/views/notify/approved_merge_request_email.html.haml_spec.rb'
@ -627,7 +622,6 @@ RSpec/FactoryBot/AvoidCreate:
- 'spec/views/shared/issuable/_sidebar.html.haml_spec.rb'
- 'spec/views/shared/milestones/_issuable.html.haml_spec.rb'
- 'spec/views/shared/milestones/_top.html.haml_spec.rb'
- 'spec/views/shared/nav/_sidebar.html.haml_spec.rb'
- 'spec/views/shared/projects/_inactive_project_deletion_alert.html.haml_spec.rb'
- 'spec/views/shared/projects/_list.html.haml_spec.rb'
- 'spec/views/shared/projects/_project.html.haml_spec.rb'

View File

@ -1450,7 +1450,6 @@ RSpec/FeatureCategory:
- 'ee/spec/views/layouts/header/_current_user_dropdown.html.haml_spec.rb'
- 'ee/spec/views/layouts/header/_ee_subscribable_banner.html.haml_spec.rb'
- 'ee/spec/views/layouts/header/_read_only_banner.html.haml_spec.rb'
- 'ee/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb'
- 'ee/spec/views/operations/environments.html.haml_spec.rb'
- 'ee/spec/views/operations/index.html.haml_spec.rb'
- 'ee/spec/views/profiles/preferences/show.html.haml_spec.rb'
@ -5408,8 +5407,6 @@ RSpec/FeatureCategory:
- 'spec/views/layouts/devise_empty.html.haml_spec.rb'
- 'spec/views/layouts/fullscreen.html.haml_spec.rb'
- 'spec/views/layouts/header/_gitlab_version.html.haml_spec.rb'
- 'spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb'
- 'spec/views/layouts/nav/sidebar/_profile.html.haml_spec.rb'
- 'spec/views/layouts/profile.html.haml_spec.rb'
- 'spec/views/layouts/signup_onboarding.html.haml_spec.rb'
- 'spec/views/layouts/terms.html.haml_spec.rb'
@ -5474,7 +5471,6 @@ RSpec/FeatureCategory:
- 'spec/views/shared/milestones/_issuable.html.haml_spec.rb'
- 'spec/views/shared/milestones/_issuables.html.haml_spec.rb'
- 'spec/views/shared/milestones/_top.html.haml_spec.rb'
- 'spec/views/shared/nav/_sidebar.html.haml_spec.rb'
- 'spec/views/shared/projects/_inactive_project_deletion_alert.html.haml_spec.rb'
- 'spec/views/shared/projects/_list.html.haml_spec.rb'
- 'spec/views/shared/projects/_project.html.haml_spec.rb'

View File

@ -213,7 +213,7 @@ export default {
@submit.prevent.stop="onSubmit"
>
<gl-form-group :label="s__('Badges|Name')" label-for="badge-name" class="gl-max-w-48">
<gl-form-input id="badge-name" v-model="name" data-qa-selector="badge_name_field" />
<gl-form-input id="badge-name" v-model="name" data-testid="badge-name-field" />
</gl-form-group>
<div class="form-group">
@ -222,7 +222,7 @@ export default {
<input
id="badge-link-url"
v-model="linkUrl"
data-qa-selector="badge_link_url_field"
data-testid="badge-link-url-field"
type="URL"
class="form-control gl-form-input gl-max-w-80"
required
@ -238,7 +238,7 @@ export default {
<input
id="badge-image-url"
v-model="imageUrl"
data-qa-selector="badge_image_url_field"
data-testid="badge-image-url-field"
type="URL"
class="form-control gl-form-input gl-max-w-80"
required
@ -270,7 +270,7 @@ export default {
type="submit"
variant="confirm"
category="primary"
data-qa-selector="add_badge_button"
data-testid="add-badge-button"
class="gl-mr-3"
>
{{ saveText }}

View File

@ -252,12 +252,7 @@ export default {
class="gl-w-6 gl-h-6 gl-display-flex gl-align-items-center"
/>
<gl-link
data-qa-selector="cluster"
:data-qa-cluster-name="item.name"
:href="item.path"
class="gl-px-3"
>
<gl-link :href="item.path" class="gl-px-3">
{{ item.name }}
</gl-link>

View File

@ -266,7 +266,6 @@ export default {
class="gl-form-input-xl"
name="deploy_token_expires_at"
:value="formattedExpiryDate"
data-qa-selector="deploy_token_expires_at_field"
/>
</gl-form-group>
<gl-form-group
@ -298,7 +297,6 @@ export default {
:key="scope.id"
v-model="scope.value"
:name="scope.id"
:data-qa-selector="`${scope.id}_checkbox`"
>
{{ scope.scopeName }}
<template #help>{{ scope.helpText }}</template>

View File

@ -169,16 +169,10 @@ export default {
{
text: this.ignoreBtnLabel,
action: this.onIgnoreStatusUpdate,
extraAttrs: {
'data-qa-selector': 'update_ignore_status_button',
},
},
{
text: this.resolveBtnLabel,
action: this.onResolveStatusUpdate,
extraAttrs: {
'data-qa-selector': 'update_resolve_status_button',
},
},
];
},
@ -187,7 +181,7 @@ export default {
text: __('View issue'),
href: this.error.gitlabIssuePath,
extraAttrs: {
'data-qa-selector': 'view_issue_button',
'data-testid': 'view-issue-button',
},
};
},
@ -342,7 +336,7 @@ export default {
<gl-button
v-if="error.gitlabIssuePath"
class="gl-ml-3"
data-testid="view_issue_button"
data-testid="view-issue-button"
:href="error.gitlabIssuePath"
variant="confirm"
>

View File

@ -11,7 +11,7 @@ import { state } from '~/sidebar/components/reviewers/sidebar_reviewers.vue';
import AjaxCache from './lib/utils/ajax_cache';
import { spriteIcon } from './lib/utils/common_utils';
import { parsePikadayDate } from './lib/utils/datetime_utility';
import glRegexp from './lib/utils/regexp';
import { unicodeLetters } from './lib/utils/regexp';
const USERS_ALIAS = 'users';
const ISSUES_ALIAS = 'issues';
@ -307,10 +307,7 @@ class GfmAutoComplete {
callbacks: {
...this.getDefaultCallbacks(),
matcher(flag, subtext) {
const regexp = new RegExp(
`(?:[^${glRegexp.unicodeLetters}0-9:]|\n|^):([^ :][^:]*)?$`,
'gi',
);
const regexp = new RegExp(`(?:[^${unicodeLetters}0-9:]|\n|^):([^ :][^:]*)?$`, 'gi');
const match = regexp.exec(subtext);
if (match && match.length) {

View File

@ -1,8 +1,8 @@
import { debounce, merge } from 'lodash';
import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';
const OLD_KEY = 'gl-bulk-imports-import-state';
export const KEY = 'gl-bulk-imports-import-state-v2';
const OLD_KEY = 'gl-bulk-imports-import-state-v2';
export const KEY = 'gl-bulk-imports-import-state-v3';
export const DEBOUNCE_INTERVAL = DEFAULT_DEBOUNCE_AND_THROTTLE_MS;
export class LocalStorageCache {

View File

@ -4,12 +4,5 @@
// Inspired by https://github.com/mishoo/UglifyJS/blob/2bc1d02363db3798d5df41fb5059a19edca9b7eb/lib/parse-js.js#L203
// Unicode 6.1
const unicodeLetters =
export const unicodeLetters =
'\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F0\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC';
/**
* A regex that matches all single quotes in a string
*/
export const allSingleQuotes = /'/g;
export default { unicodeLetters, allSingleQuotes };

View File

@ -5,7 +5,6 @@ import {
TRUNCATE_WIDTH_DEFAULT_WIDTH,
TRUNCATE_WIDTH_DEFAULT_FONT_SIZE,
} from '~/lib/utils/constants';
import { allSingleQuotes } from '~/lib/utils/regexp';
export const COLON = ':';
export const HYPHEN = '-';
@ -445,6 +444,11 @@ export const markdownConfig = {
ALLOW_DATA_ATTR: false,
};
/**
* A regex that matches all single quotes in a string
*/
const allSingleQuotes = /'/g;
/**
* Escapes a string into a shell string, for example
* when you want to give a user the command to checkout

View File

@ -19,7 +19,8 @@ import WorkItemDueDate from './work_item_due_date.vue';
import WorkItemAssignees from './work_item_assignees.vue';
import WorkItemLabels from './work_item_labels.vue';
import WorkItemMilestone from './work_item_milestone.vue';
import WorkItemParent from './work_item_parent.vue';
import WorkItemParentInline from './work_item_parent_inline.vue';
import WorkItemParent from './work_item_parent_with_edit.vue';
export default {
components: {
@ -28,6 +29,7 @@ export default {
WorkItemAssignees,
WorkItemDueDate,
WorkItemParent,
WorkItemParentInline,
WorkItemWeightInline: () =>
import('ee_component/work_items/components/work_item_weight_inline.vue'),
WorkItemWeight: () =>
@ -209,14 +211,25 @@ export default {
:work-item-type="workItemType"
@error="$emit('error', $event)"
/>
<work-item-parent
v-if="showWorkItemParent"
class="gl-mb-5"
:can-update="canUpdate"
:work-item-id="workItem.id"
:work-item-type="workItemType"
:parent="workItemParent"
@error="$emit('error', $event)"
/>
<template v-if="showWorkItemParent">
<work-item-parent
v-if="glFeatures.workItemsMvc2"
class="gl-mb-5"
:can-update="canUpdate"
:work-item-id="workItem.id"
:work-item-type="workItemType"
:parent="workItemParent"
@error="$emit('error', $event)"
/>
<work-item-parent-inline
v-else
class="gl-mb-5"
:can-update="canUpdate"
:work-item-id="workItem.id"
:work-item-type="workItemType"
:parent="workItemParent"
@error="$emit('error', $event)"
/>
</template>
</div>
</template>

View File

@ -0,0 +1,295 @@
<script>
import { GlButton, GlForm, GlLink, GlLoadingIcon, GlCollapsibleListbox } from '@gitlab/ui';
import { debounce } from 'lodash';
import * as Sentry from '~/sentry/sentry_browser_wrapper';
import { DEFAULT_DEBOUNCE_AND_THROTTLE_MS } from '~/lib/utils/constants';
import { s__ } from '~/locale';
import updateWorkItemMutation from '~/work_items/graphql/update_work_item.mutation.graphql';
import { removeHierarchyChild } from '../graphql/cache_utils';
import groupWorkItemsQuery from '../graphql/group_work_items.query.graphql';
import projectWorkItemsQuery from '../graphql/project_work_items.query.graphql';
import {
I18N_WORK_ITEM_ERROR_UPDATING,
sprintfWorkItem,
SUPPORTED_PARENT_TYPE_MAP,
} from '../constants';
export default {
inputId: 'work-item-parent-listbox-value',
noWorkItemId: 'no-work-item-id',
i18n: {
assignParentLabel: s__('WorkItem|Assign parent'),
parentLabel: s__('WorkItem|Parent'),
none: s__('WorkItem|None'),
noMatchingResults: s__('WorkItem|No matching results'),
unAssign: s__('WorkItem|Unassign'),
workItemsFetchError: s__(
'WorkItem|Something went wrong while fetching items. Please try again.',
),
},
components: {
GlButton,
GlLoadingIcon,
GlLink,
GlForm,
GlCollapsibleListbox,
},
inject: ['fullPath', 'isGroup'],
props: {
workItemId: {
type: String,
required: true,
},
parent: {
type: Object,
required: false,
default: null,
},
workItemType: {
type: String,
required: false,
default: '',
},
canUpdate: {
type: Boolean,
required: false,
default: false,
},
},
data() {
return {
isEditing: false,
search: '',
updateInProgress: false,
searchStarted: false,
availableWorkItems: [],
localSelectedItem: this.parent?.id,
oldParent: this.parent,
};
},
computed: {
hasParent() {
return this.parent !== null;
},
isLoading() {
return this.$apollo.queries.availableWorkItems.loading;
},
listboxText() {
return (
this.workItems.find(({ value }) => this.localSelectedItem === value)?.text ||
this.parent?.title ||
this.$options.i18n.none
);
},
workItems() {
return this.availableWorkItems.map(({ id, title }) => ({ text: title, value: id }));
},
parentType() {
return SUPPORTED_PARENT_TYPE_MAP[this.workItemType];
},
},
watch: {
parent: {
handler(newVal) {
if (!this.isEditing) {
this.localSelectedItem = newVal?.id;
}
},
},
},
created() {
this.debouncedSearchKeyUpdate = debounce(this.setSearchKey, DEFAULT_DEBOUNCE_AND_THROTTLE_MS);
},
apollo: {
availableWorkItems: {
query() {
return this.isGroup ? groupWorkItemsQuery : projectWorkItemsQuery;
},
variables() {
return {
fullPath: this.fullPath,
searchTerm: this.search,
types: this.parentType,
in: this.search ? 'TITLE' : undefined,
iid: null,
isNumber: false,
};
},
skip() {
return !this.searchStarted;
},
update(data) {
return data.workspace.workItems.nodes.filter((wi) => this.workItemId !== wi.id) || [];
},
error() {
this.$emit('error', this.$options.i18n.workItemsFetchError);
},
},
},
methods: {
blurInput() {
this.$refs.input.$el.blur();
},
handleFocus() {
this.isEditing = true;
},
setSearchKey(value) {
this.search = value;
},
async updateParent() {
if (this.parent?.id === this.localSelectedItem) return;
this.updateInProgress = true;
try {
const {
data: {
workItemUpdate: { errors },
},
} = await this.$apollo.mutate({
mutation: updateWorkItemMutation,
variables: {
input: {
id: this.workItemId,
hierarchyWidget: {
parentId:
this.localSelectedItem === this.$options.noWorkItemId
? null
: this.localSelectedItem,
},
},
},
update: (cache) =>
removeHierarchyChild({
cache,
fullPath: this.fullPath,
iid: this.oldParent?.iid,
isGroup: this.isGroup,
workItem: { id: this.workItemId },
}),
});
if (errors.length) {
this.$emit('error', errors.join('\n'));
this.localSelectedItem = this.parent?.id || this.$options.noWorkItemId;
}
} catch (error) {
this.$emit('error', sprintfWorkItem(I18N_WORK_ITEM_ERROR_UPDATING, this.workItemType));
Sentry.captureException(error);
} finally {
this.updateInProgress = false;
this.isEditing = false;
}
},
handleItemClick(item) {
this.localSelectedItem = item;
this.searchStarted = false;
this.search = '';
this.updateParent();
},
unassignParent() {
this.localSelectedItem = this.$options.noWorkItemId;
this.isEditing = false;
this.updateParent();
},
onListboxShown() {
this.searchStarted = true;
},
onListboxHide() {
this.searchStarted = false;
this.search = '';
this.isEditing = false;
},
},
};
</script>
<template>
<div>
<div class="gl-display-flex gl-align-items-center">
<!-- hide header when editing, since we then have a form label. Keep it reachable for screenreader nav -->
<h3 :class="{ 'gl-sr-only': isEditing }" class="gl-mb-0! gl-heading-scale-5">
{{ __('Parent') }}
</h3>
<gl-loading-icon
v-if="updateInProgress"
data-testid="loading-icon-parent"
size="sm"
inline
class="gl-ml-2 gl-my-0"
/>
<gl-button
v-if="canUpdate && !isEditing"
data-testid="edit-parent"
category="tertiary"
size="small"
class="gl-ml-auto gl-mr-2"
:disabled="updateInProgress"
@click="isEditing = true"
>{{ __('Edit') }}</gl-button
>
</div>
<gl-form v-if="isEditing" class="gl-flex-nowrap" data-testid="work-item-parent-form">
<div class="gl-display-flex gl-justify-content-space-between gl-align-items-center">
<label :for="$options.inputId" class="gl-mb-0">{{ __('Parent') }}</label>
<gl-button
data-testid="apply-parent"
category="tertiary"
size="small"
class="gl-mr-2"
:disabled="updateInProgress"
@click="isEditing = false"
>{{ __('Apply') }}</gl-button
>
</div>
<div>
<!-- wrapper for the form input so the borders fit inside the sidebar -->
<div class="gl-pr-2 gl-relative">
<gl-collapsible-listbox
id="$options.inputId"
ref="input"
class="gl-display-block"
data-testid="work-item-parent-listbox"
block
searchable
start-opened
is-check-centered
category="primary"
fluid-width
:searching="isLoading"
:header-text="$options.i18n.assignParentLabel"
:no-results-text="$options.i18n.noMatchingResults"
:loading="updateInProgress"
:items="workItems"
:toggle-text="listboxText"
:selected="localSelectedItem"
:reset-button-label="$options.i18n.unAssign"
@reset="unassignParent"
@search="debouncedSearchKeyUpdate"
@select="handleItemClick"
@shown="onListboxShown"
@hidden="onListboxHide"
>
<template #list-item="{ item }">
<div @click="handleItemClick(item.value, $event)">
{{ item.text }}
</div>
</template>
</gl-collapsible-listbox>
</div>
</div>
</gl-form>
<template v-else-if="hasParent">
<gl-link
data-testid="work-item-parent-link"
class="gl-link gl-text-gray-900 gl-display-inline-block gl-max-w-full gl-white-space-nowrap gl-text-overflow-ellipsis gl-overflow-hidden"
:href="parent.webUrl"
>{{ listboxText }}</gl-link
>
</template>
<template v-else>
<div data-testid="work-item-parent-none" class="gl-text-secondary">{{ __('None') }}</div>
</template>
</div>
</template>

View File

@ -97,11 +97,11 @@ module PackagesHelper
}
end
def settings_data
def settings_data(project)
cleanup_settings_data.merge(
show_container_registry_settings: show_container_registry_settings(@project).to_s,
show_package_registry_settings: show_package_registry_settings(@project).to_s,
cleanup_settings_path: cleanup_image_tags_project_settings_packages_and_registries_path(@project)
show_container_registry_settings: show_container_registry_settings(project).to_s,
show_package_registry_settings: show_package_registry_settings(project).to_s,
cleanup_settings_path: cleanup_image_tags_project_settings_packages_and_registries_path(project)
)
end
end

View File

@ -30,7 +30,7 @@ class ProjectFeature < ApplicationRecord
model_registry
].freeze
EXPORTABLE_FEATURES = (FEATURES - [:security_and_compliance, :pages]).freeze
EXPORTABLE_FEATURES = (FEATURES - [:security_and_compliance, :pages, :metrics_dashboard]).freeze
set_available_features(FEATURES)

View File

@ -58,6 +58,13 @@ module BulkImports
http_client.stream(relative_url) do |chunk|
next if bytes_downloaded == 0 && [301, 302, 303, 307, 308].include?(chunk.code)
if BulkImports::NetworkError::RETRIABLE_HTTP_CODES.include?(chunk.code)
raise BulkImports::NetworkError.new(
"Error downloading file from #{relative_url}. Error code: #{chunk.code}",
response: chunk.http_response
)
end
@response_code = chunk.code
@response_headers ||= Gitlab::HTTP::Response::Headers.new(chunk.http_response.to_hash)
@last_chunk_context = chunk.to_s.truncate(LAST_CHUNK_CONTEXT_CHAR_LIMIT)

View File

@ -4,9 +4,7 @@
%body{ class: "#{user_tab_width} #{@body_class} fullscreen-layout", data: { page: body_data_page } }
= render 'peek/bar'
= header_message
.gl--flex-full.gl-h-full{ class: nav ? ["layout-page", page_with_sidebar_class, "gl-mt-0!"]: '' }
- if defined?(nav) && nav
= render "layouts/nav/sidebar/#{nav}"
.gl--flex-full.gl-h-full
.gl--flex-full.gl-flex-direction-column.gl-w-full
.alert-wrapper
= render 'shared/outdated_browser'

View File

@ -1 +0,0 @@
= render partial: 'shared/nav/sidebar', object: Sidebars::Admin::Panel.new(Sidebars::Context.new(current_user: current_user, container: nil))

View File

@ -1 +0,0 @@
= render partial: 'shared/nav/sidebar', object: Sidebars::Explore::Panel.new(Sidebars::Context.new(current_user: current_user, container: nil))

View File

@ -1,2 +0,0 @@
- group = @parent_group || @group
= render partial: 'shared/nav/sidebar', object: Sidebars::Groups::Panel.new(group_sidebar_context(group, current_user))

View File

@ -1 +0,0 @@
= render partial: 'shared/nav/sidebar', object: Sidebars::Organizations::Panel.new(organization_sidebar_context(@organization, current_user))

View File

@ -1 +0,0 @@
= render partial: 'shared/nav/sidebar', object: Sidebars::UserSettings::Panel.new(Sidebars::Context.new(current_user: current_user, container: current_user))

View File

@ -1 +0,0 @@
= render partial: 'shared/nav/sidebar', object: Sidebars::Projects::Panel.new(project_sidebar_context(@project, current_user, current_ref, ref_type: @ref_type))

View File

@ -1 +0,0 @@
-# if this file is missing empty or not the old left menu throws error

View File

@ -1 +0,0 @@
= render partial: 'shared/nav/sidebar', object: Sidebars::UserProfile::Panel.new(Sidebars::Context.new(current_user: current_user, container: @user))

View File

@ -1 +0,0 @@
= render partial: 'shared/nav/sidebar', object: Sidebars::YourWork::Panel.new(your_work_sidebar_context(current_user))

View File

@ -24,10 +24,12 @@
.form-group
= f.fields_for :project_setting do |settings|
= settings.gitlab_ui_checkbox_component :pages_multiple_versions_enabled,
s_('GitLabPages|Use multiple versions'),
s_('GitLabPages|Use multiple deployments'),
label_options: { class: 'label-bold' }
%p.gl-pl-6
= s_("GitLabPages|When enabled, you can create multiple versions of your pages site.").html_safe
= safe_format(s_("GitLabPages|When enabled, you can create multiple deployments of your pages site. %{docs_link_start}Learn More.%{link_end}"),
tag_pair(tag.a(href: help_page_path('user/project/pages/index', anchor: 'create-multiple-deployments'), target: '_blank'),
:docs_link_start, :link_end))
.gl-mt-3
= f.submit s_('GitLabPages|Save changes'), pajamas_button: true

View File

@ -2,4 +2,4 @@
- page_title _('Packages and registries settings')
- @force_desktop_expanded_sidebar = true
#js-registry-settings{ data: settings_data }
#js-registry-settings{ data: settings_data(@project) }

View File

@ -1,7 +0,0 @@
%a.toggle-sidebar-button.js-toggle-sidebar.rspec-toggle-sidebar{ role: "button", type: "button", title: "Toggle sidebar" }
= sprite_icon('chevron-double-lg-left', size: 12, css_class: 'icon-chevron-double-lg-left')
%span.collapse-text.gl-ml-3= _("Collapse sidebar")
= button_tag class: 'close-nav-button', type: 'button' do
= sprite_icon('close')
%span.collapse-text.gl-ml-3= _("Close sidebar")

View File

@ -1,6 +0,0 @@
%li.context-header
= link_to admin_root_path, title: _('Admin Area'), class: 'has-tooltip', data: { container: 'body', placement: 'right' } do
%span.avatar-container.icon-avatar.rect-avatar.s32
= sprite_icon('admin', size: 18)
%span.sidebar-context-title
= _('Admin Area')

View File

@ -1,6 +0,0 @@
%li.context-header
= link_to explore_root_url, title: _('Explore'), class: 'has-tooltip', data: { container: 'body', placement: 'right' } do
%span.avatar-container.icon-avatar.rect-avatar.s32
= sprite_icon('compass', size: 18)
%span.sidebar-context-title
= _('Explore')

View File

@ -1,6 +0,0 @@
= nav_link(**scope_menu.active_routes, html_options: scope_menu.nav_link_html_options) do
= link_to scope_menu.link, **scope_menu.link_html_options, data: { qa_selector: 'sidebar_menu_link', qa_menu_item: scope_qa_menu_item(scope_menu.container) } do
%span{ class: scope_avatar_classes(scope_menu.container) }
= source_icon(scope_menu.container, alt: scope_menu.title, class: ['avatar', 'avatar-tile', 's32'], width: 32, height: 32)
%span.sidebar-context-title
= scope_menu.title

View File

@ -1,16 +0,0 @@
%aside.nav-sidebar{ class: ('sidebar-collapsed-desktop' if collapsed_sidebar?), **sidebar_tracking_attributes_by_object(sidebar.container), 'aria-label': sidebar.aria_label }
.nav-sidebar-inner-scroll
%ul.sidebar-top-level-items{ data: { testid: sidebar_qa_selector(sidebar.container) } }
- if sidebar.render_raw_scope_menu_partial
= render sidebar.render_raw_scope_menu_partial
- elsif sidebar.scope_menu
= render partial: 'shared/nav/scope_menu', object: sidebar.scope_menu
- if sidebar.renderable_menus.any?
= render partial: 'shared/nav/sidebar_menu', collection: sidebar.renderable_menus
- if sidebar.render_raw_menus_partial
= render sidebar.render_raw_menus_partial
= render partial: 'shared/nav/sidebar_hidden_menu_item', collection: sidebar.hidden_menu&.renderable_items
= render 'shared/sidebar_toggle_button'

View File

@ -1,3 +0,0 @@
%li.hidden
= link_to sidebar_hidden_menu_item.link, **sidebar_hidden_menu_item.link_html_options do
= sidebar_hidden_menu_item.title

View File

@ -1,19 +0,0 @@
= nav_link(**sidebar_menu.all_active_routes, html_options: sidebar_menu.nav_link_html_options) do
- if sidebar_menu.menu_with_partial?
= render_if_exists sidebar_menu.menu_partial, **sidebar_menu.menu_partial_options
- else
= link_to sidebar_menu.link, **sidebar_menu.link_html_options, data: { testid: 'sidebar_menu_link', qa_menu_item: sidebar_menu.title } do
- if sidebar_menu.icon_or_image?
%span.nav-icon-container
- if sidebar_menu.image_path
= image_tag(sidebar_menu.image_path, **sidebar_menu.image_html_options)
- elsif sidebar_menu.sprite_icon
= sprite_icon(sidebar_menu.sprite_icon, **sidebar_menu.sprite_icon_html_options)
%span.nav-item-name{ **sidebar_menu.title_html_options }
= sidebar_menu.title
- if sidebar_menu.has_pill?
= gl_badge_tag({ variant: :info, size: :sm }, { class: "count #{sidebar_menu.pill_html_options[:class]}" }) do
= number_with_delimiter(sidebar_menu.pill_count)
= render partial: 'shared/nav/sidebar_submenu', locals: { sidebar_menu: sidebar_menu }

View File

@ -1,11 +0,0 @@
= nav_link(**sidebar_menu_item.active_routes, html_options: sidebar_menu_item.nav_link_html_options) do
= link_to sidebar_menu_item.link, **sidebar_menu_item.link_html_options, data: { testid: 'sidebar_menu_item_link', qa_menu_item: sidebar_menu_item.title } do
%span.gl-flex-grow-1
= sidebar_menu_item.title
- if sidebar_menu_item.sprite_icon
= sprite_icon(sidebar_menu_item.sprite_icon, **sidebar_menu_item.sprite_icon_html_options)
- if sidebar_menu_item.has_pill?
= gl_badge_tag({ size: :sm, variant: :neutral }, { class: "count fly-out-badge gl-ml-3" }) do
= number_with_delimiter(sidebar_menu_item.pill_count)
- if sidebar_menu_item.show_hint?
.js-feature-highlight{ **sidebar_menu_item.hint_html_options }

View File

@ -1,12 +0,0 @@
%ul.sidebar-sub-level-items{ class: ('is-fly-out-only' unless sidebar_menu.has_renderable_items?) }
= nav_link(**sidebar_menu.all_active_routes, html_options: { class: 'fly-out-top-item' }) do
%span.fly-out-top-item-container
%strong.fly-out-top-item-name
= sidebar_menu.title
- if sidebar_menu.has_pill?
= gl_badge_tag({ variant: :info, size: :sm }, { class: "count fly-out-badge #{sidebar_menu.pill_html_options[:class]}" }) do
= number_with_delimiter(sidebar_menu.pill_count)
- if sidebar_menu.has_renderable_items?
%li.divider.fly-out-top-item
= render partial: 'shared/nav/sidebar_menu_item', collection: sidebar_menu.renderable_items

View File

@ -1,4 +0,0 @@
%li.context-header
= link_to profile_path, title: _('User Settings'), class: 'has-tooltip', data: { container: 'body', placement: 'right' } do
= render Pajamas::AvatarComponent.new(current_user, size: 32, alt: current_user.name, class: 'gl-mr-3 js-sidebar-user-avatar', avatar_options: { data: { testid: 'sidebar-user-avatar' } })
%span.sidebar-context-title= _('User Settings')

View File

@ -1,6 +0,0 @@
%li.context-header
= link_to root_path, title: _('Your work'), class: 'has-tooltip', data: { container: 'body', placement: 'right' } do
%span.avatar-container.icon-avatar.rect-avatar.s32
= sprite_icon('work', size: 18)
%span.sidebar-context-title
= _('Your work')

View File

@ -275,7 +275,7 @@
:tags: []
- :name: cronjob:ci_runners_reconcile_existing_runner_versions_cron
:worker_name: Ci::Runners::ReconcileExistingRunnerVersionsCronWorker
:feature_category: :runner_fleet
:feature_category: :fleet_visibility
:has_external_dependencies: false
:urgency: :low
:resource_boundary: :unknown
@ -284,7 +284,7 @@
:tags: []
- :name: cronjob:ci_runners_stale_machines_cleanup_cron
:worker_name: Ci::Runners::StaleMachinesCleanupCronWorker
:feature_category: :runner_fleet
:feature_category: :fleet_visibility
:has_external_dependencies: false
:urgency: :low
:resource_boundary: :unknown
@ -2741,7 +2741,7 @@
:tags: []
- :name: ci_runners_process_runner_version_update
:worker_name: Ci::Runners::ProcessRunnerVersionUpdateWorker
:feature_category: :runner_fleet
:feature_category: :fleet_visibility
:has_external_dependencies: false
:urgency: :low
:resource_boundary: :unknown

View File

@ -7,7 +7,7 @@ module Ci
data_consistency :always
feature_category :runner_fleet
feature_category :fleet_visibility
urgency :low
idempotent!

View File

@ -9,7 +9,7 @@ module Ci
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
data_consistency :sticky
feature_category :runner_fleet
feature_category :fleet_visibility
urgency :low
deduplicate :until_executed

View File

@ -9,7 +9,7 @@ module Ci
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
data_consistency :sticky
feature_category :runner_fleet
feature_category :fleet_visibility
urgency :low
idempotent!

View File

@ -24,7 +24,6 @@
- build_artifacts
- capacity_planning
- cell
- ci-cd_visibility
- cloud_connector
- cloud_native_installation
- code_quality
@ -61,6 +60,7 @@
- error_tracking
- feature_flags
- five_minute_production_app
- fleet_visibility
- fulfillment_admin_tooling
- fulfillment_infrastructure
- fuzz_testing
@ -109,7 +109,6 @@
- requirements_management
- review_apps
- runner
- runner_fleet
- runner_saas
- saas_provisioning
- sbom

View File

@ -4,5 +4,5 @@ description: backfills `admin_mode` scope to personal access tokens associated t
administrators
feature_category: system_access
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107875
milestone: 15.8
milestone: '15.8'
finalized_by: '20231128155514'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillCodeSuggestionsNamespaceSettings
description: Updates default value of code_suggestions on namespace_settings table
feature_category: code_suggestions
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121126
milestone: 16.1
milestone: '16.1'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillDefaultBranchProtectionNamespaceSetting
description: This migration back fills column default_branch_protection_defaults of namespace settings table
feature_category: database
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127335/
milestone: 16.3
milestone: '16.3'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillDesignManagementRepositories
description: Backfills the new table with project ids
feature_category: geo_replication
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/116975
milestone: 15.11
milestone: '15.11'

View File

@ -5,5 +5,5 @@ description: Backfill `dismissal_reason` for rows with `state` of `dismissed` in
feature_category: vulnerability_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123518
queued_migration_version: 20230612232000
milestone: 16.1
milestone: '16.1'
finalized_by: '20231201144826'

View File

@ -4,5 +4,5 @@ description: Backfills finding_id column on vulnerabilities table for a proper 1
feature_category: vulnerability_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130058
queued_migration_version: 20231116105945
milestone: 16.4
milestone: '16.4'
finalize_after: '2023-12-15'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillHasMergeRequestOfVulnerabilityReads
description: Backfills has_merge_request column for vulnerability_reads table.
feature_category: database
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130952
milestone: 16.4
milestone: '16.4'

View File

@ -5,5 +5,5 @@ description: Backfills has_remediations column for vulnerability_reads table.
RE-ran because there was a error in remediation ingestion logic.
feature_category: database
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/133714
milestone: 16.7
milestone: '16.7'
queued_migration_version: 20231011142714

View File

@ -3,7 +3,7 @@ migration_job_name: BackfillMergeRequestDiffsProjectId
description: Populates the new `merge_request_diffs.project_id` column after joining with the `merge_requests` table
feature_category: code_review_workflow
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136800
milestone: 16.7
milestone: '16.7'
queued_migration_version: 20231114043522
finalize_after: '2024-04-01'
finalized_by: # version of the migration that ensured this bbm

View File

@ -4,4 +4,4 @@ description: Backfills ci_cd_settings for projects that do not have them
feature_category: source_code_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124921
queued_migration_version: 20230628023103
milestone: 16.2
milestone: '16.2'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillMissingVulnerabilityDismissalDetails
description: Backfill missing vulnerability dimissal information as a result of https://gitlab.com/gitlab-org/gitlab/-/issues/412983
feature_category: vulnerability_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/126253
milestone: 16.2
milestone: '16.2'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillNugetNormalizedVersion
description: Introduce a batched background migration to backfill the normalized_version column in packages_nuget_metadata table.
feature_category: package_registry
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128675
milestone: 16.4
milestone: '16.4'

View File

@ -3,7 +3,7 @@ migration_job_name: BackfillPackagesTagsProjectId
description: Populates the new `packages_tags.project_id` column after joining with the `packages_packages` table
feature_category: package_registry
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/135451
milestone: 16.6
milestone: '16.6'
queued_migration_version: 20231030071209
finalize_after: '2023-12-23'
finalized_by: # version of the migration that ensured this bbm

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillProjectStatisticsStorageSizeWithRecentSize
description: Refreshes ProjectStatistics to use recent_objects_size for repository_size
feature_category: consumables_cost_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128730
milestone: 16.4
milestone: '16.4'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillProjectStatisticsStorageSizeWithoutPipelineArtifacts
description: Refreshes ProjectStatistics to remove pipeline_artifacts_size from the total storage_size
feature_category: consumables_cost_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/126053
milestone: 16.3
milestone: '16.3'

View File

@ -5,4 +5,4 @@ description: >-
does not have an entry in this table.
feature_category: geo
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113783
milestone: 15.10
milestone: '15.10'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillResourceLinkEvents
description: Backfills resource_link_events table based off system_note_metadata and notes
feature_category: team_planning
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/118605
milestone: 16.1
milestone: '16.1'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillRootStorageStatisticsForkStorageSizes
description: Backfill the public_forks_storage_size, internal_forks_storage_size, and private_forks_storage_size columns on the namespace_root_storage_statistics table
feature_category: consumables_cost_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120916
milestone: 16.1
milestone: '16.1'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillUserPreferencesWithDefaults
description: Backfills the user_preferences table columns with their default values
feature_category: user_profile
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125774
milestone: 16.4
milestone: '16.4'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillUsersWithDefaults
description: Backfills the users table columns with their default values
feature_category: user_profile
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125881
milestone: 16.4
milestone: '16.4'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillUuidConversionColumnInVulnerabilityOccurrences
description: backfill values for `uuid_convert_string_to_uuid` column in vulnerability_occurrences table
feature_category: vulnerability_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124986
milestone: 16.2
milestone: '16.2'

View File

@ -3,4 +3,4 @@ migration_job_name: BackfillWorkItemTypeIdForIssues
description: Backfills every record in the issues table with the appropriate work_item_type_id
feature_category: team_planning
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96591
milestone: 15.4
milestone: '15.4'

View File

@ -2,4 +2,4 @@ migration_job_name: BackfillWorkspacePersonalAccessToken
description: Create personal access token for workspaces without one
feature_category: remote_development
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131516
milestone: 16.4
milestone: '16.4'

View File

@ -5,4 +5,4 @@ description: Updates value of expires_at column to 365 days from now when it's n
Re-ran because there was a bypass that enabled some new PATs to be created with nil expires_at. That bypass was patched via https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121370.
feature_category: system_access
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/123002
milestone: 16.1
milestone: '16.1'

View File

@ -5,4 +5,4 @@ description: |
to hash and store values in new columns.
feature_category: user_profile
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129350
milestone: 16.4
milestone: '16.4'

View File

@ -4,4 +4,4 @@ description: This migration creates 'project_compliance_standards_adherence' tab
feature_category: compliance_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129941
queued_migration_version: 20230818142801
milestone: 16.4
milestone: '16.4'

View File

@ -3,5 +3,5 @@ migration_job_name: DeleteInvalidProtectedBranchMergeAccessLevels
description: Remove rows from protected_branch_merge_access_levels for groups that do not have project_group_links to the project for the associated protected branch
feature_category: source_code_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134337
milestone: 16.6
milestone: '16.6'
queued_migration_version: 20231016173129

View File

@ -3,5 +3,5 @@ migration_job_name: DeleteInvalidProtectedBranchPushAccessLevels
description: Remove rows from protected_branch_push_access_levels for groups that do not have project_group_links to the project for the associated protected branch
feature_category: source_code_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134337
milestone: 16.6
milestone: '16.6'
queued_migration_version: 20231016194927

View File

@ -3,5 +3,5 @@ migration_job_name: DeleteInvalidProtectedTagCreateAccessLevels
description: Remove rows from protected_tag_create_access_levels for groups that do not have project_group_links to the project for the associated protected tag
feature_category: source_code_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134337
milestone: 16.6
milestone: '16.6'
queued_migration_version: 20231016194943

View File

@ -5,4 +5,4 @@ description: |
that are defined for a group hierachy prior to transfer, so they cannot be applied, nor edited.
feature_category: security_policy_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127767
milestone: 16.3
milestone: '16.3'

View File

@ -6,4 +6,4 @@ Odescription: |
feature_category: security_policy_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127212
queued_migration_version: 20230721095222
milestone: 16.5
milestone: '16.5'

View File

@ -6,4 +6,4 @@ Odescription: |
feature_category: security_policy_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/127212
queued_migration_version: 20230721095222
milestone: 16.5
milestone: '16.5'

View File

@ -3,4 +3,4 @@ migration_job_name: FixAllowDescendantsOverrideDisabledSharedRunners
description: Clears invalid combination of shared runners settings (fixes subgroup creation)
feature_category: runner_fleet
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128112
milestone: 16.3
milestone: '16.3'

View File

@ -3,4 +3,4 @@ migration_job_name: FixNamespaceIdsOfVulnerabilityReads
description: Fixes the data integrity issues for `namespace_id` attribute of `vulnerability_reads` table
feature_category: vulnerability_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129244
milestone: 16.4
milestone: '16.4'

View File

@ -3,4 +3,4 @@ migration_job_name: MarkDuplicateNpmPackagesForDestruction
description: It seeks duplicate npm packages and marks them for destruction.
feature_category: package_registry
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/114695
milestone: 16.1
milestone: '16.1'

View File

@ -3,4 +3,4 @@ migration_job_name: MigrateHumanUserType
description: Migrates human user type from old value (nil) to new value (0) for better indexing
feature_category: user_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/115849
milestone: 16.0
milestone: '16.0'

View File

@ -3,4 +3,4 @@ migration_job_name: PopulateDenormalizedColumnsForSbomOccurrences
description: Populates the denormalized columns for `sbom_occurrences` table.
feature_category: dependency_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/129486
milestone: 16.4
milestone: '16.4'

View File

@ -4,4 +4,4 @@ description: This populates missing dismissal info for vulnerabilities.
feature_category: vulnerability_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117478
queued_migration_version: 20230412185837
milestone: 15.11
milestone: '15.11'

View File

@ -3,4 +3,4 @@ migration_job_name: RemoveInvalidDeployAccessLevelGroups
description: This deletes protected_environment_deploy_access_levels rows that have invalid group_id.
feature_category: continuous_delivery
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121222
milestone: 16.1
milestone: '16.1'

View File

@ -5,4 +5,4 @@ description: Security policies are stored as YAML files in the security policy p
for all security policy configurations.
feature_category: security_policy_management
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128378
milestone: 16.4
milestone: '16.4'

View File

@ -3,4 +3,4 @@ migration_job_name: UpdateCodeSuggestionsForNamespaceSettings
description: Enables Code Suggestions for all namespaces by default
feature_category: code_suggestions
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/117899
milestone: 16.0
milestone: '16.0'

View File

@ -3,4 +3,4 @@ migration_job_name: UpdateUsersSetExternalIfServiceAccount
description: Update external value for users of type Service Account
feature_category: system_access
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130597
milestone: 16.4
milestone: '16.4'

View File

@ -2,4 +2,4 @@ migration_job_name: UpdateWorkspacesConfigVersion
description: Update config_version to 2 and force_include_all_resources to true for existing workspaces
feature_category: remote_development
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131402
milestone: 16.5
milestone: '16.5'

View File

@ -3,7 +3,7 @@ table_name: ci_runner_machines
classes:
- Ci::RunnerManager
feature_categories:
- runner_fleet
- fleet_visibility
description: Information about runner managers associated to Ci::Runner models
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107801
milestone: '15.8'

View File

@ -3,7 +3,7 @@ table_name: ci_runner_versions
classes:
- Ci::RunnerVersion
feature_categories:
- runner_fleet
- fleet_visibility
description: Information about used Ci::Runner versions
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90982
milestone: '15.2'

View File

@ -4,7 +4,7 @@ classes:
- Ci::Runner
feature_categories:
- runner
- runner_fleet
- fleet_visibility
- runner_saas
description: Registered CI runners
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/046b28312704f3131e72dcd2dbdacc5264d4aa62

View File

@ -4,7 +4,7 @@ classes:
- NamespaceCiCdSetting
feature_categories:
- continuous_integration
- runner_fleet
- fleet_visibility
description: Namespace-scoped settings related to the CI/CD domain
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86477
milestone: '15.0'

View File

@ -3,7 +3,7 @@ table_name: p_ci_finished_build_ch_sync_events
classes:
- Ci::FinishedBuildChSyncEvent
feature_categories:
- runner_fleet
- fleet_visibility
description: Holds references to finished CI builds ready to be synced to ClickHouse
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/
milestone: '16.5'

View File

@ -2,7 +2,7 @@ table_name: p_ci_runner_machine_builds
classes:
- Ci::RunnerManagerBuild
feature_categories:
- runner_fleet
- fleet_visibility
description: Relationships between builds and runner managers
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111476
milestone: '15.9'

View File

@ -5,7 +5,7 @@ classes:
feature_categories:
- continuous_integration
- continuous_delivery
- runner_fleet
- fleet_visibility
description: Project-scoped settings related to the CI/CD domain
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/commit/392c411bdc16386ef42c86afaf8c4d8e4cddb955
milestone: '10.8'

View File

@ -0,0 +1,22 @@
# frozen_string_literal: true
class AddUrlSubFieldsToWorkspace < Gitlab::Database::Migration[2.2]
milestone '16.7'
disable_ddl_transaction!
def up
add_column :workspaces, :url_prefix, :text, if_not_exists: true
add_column :workspaces, :url_domain, :text, if_not_exists: true
add_column :workspaces, :url_query_string, :text, if_not_exists: true
add_text_limit :workspaces, :url_prefix, 256
add_text_limit :workspaces, :url_domain, 256
add_text_limit :workspaces, :url_query_string, 256
end
def down
remove_column :workspaces, :url_prefix, if_exists: true
remove_column :workspaces, :url_domain, if_exists: true
remove_column :workspaces, :url_query_string, if_exists: true
end
end

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