Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2023-09-15 12:10:16 +00:00
parent 340f85512a
commit c70fec25f8
150 changed files with 549 additions and 953 deletions

View File

@ -37,6 +37,9 @@ default:
CREATE_RAILS_TEST_FAILURE_ISSUES: "true"
CREATE_RAILS_SLOW_TEST_ISSUES: "true"
.default-merge-request-slow-tests-variables: &default-merge-request-slow-tests-variables
ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST: "true"
.if-merge-request-security-canonical-sync: &if-merge-request-security-canonical-sync
if: '$CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == "gitlab-org/security/gitlab" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
@ -81,6 +84,7 @@ workflow:
- if: '$CI_MERGE_REQUEST_IID'
variables:
<<: *default-ruby-variables
<<: *default-merge-request-slow-tests-variables
PIPELINE_NAME: 'Ruby $RUBY_VERSION $CI_MERGE_REQUEST_EVENT_TYPE MR pipeline'
NO_SOURCEMAPS: 'true'
# For the scheduled pipelines, we set specific variables.

View File

@ -88,6 +88,9 @@ include:
if [ "$CREATE_RAILS_SLOW_TEST_ISSUES" == "true" ]; then
bundle exec slow-test-issues --input-files "rspec/rspec-*.json" --project "gitlab-org/gitlab" --token "${TEST_FAILURES_PROJECT_TOKEN}";
fi
if [ "$ADD_SLOW_TEST_NOTE_TO_MERGE_REQUEST" == "true" ]; then
bundle exec slow-test-merge-request-report-note --input-files "rspec/rspec-*.json" --project "gitlab-org/gitlab" --merge_request_iid "$CI_MERGE_REQUEST_IID" --token "${TEST_FAILURES_PROJECT_TOKEN}";
fi
- echo -e "\e[0Ksection_end:`date +%s`:report_results_section\r\e[0K"
allow_failure:

View File

@ -158,6 +158,7 @@ gdk-qa-reliable:
variables:
QA_SCENARIO: Test::Instance::Blocking
QA_RUN_TYPE: gdk-qa-blocking
parallel: 10
rules:
- when: always
allow_failure: true

View File

@ -1 +1 @@
f521e116b2fb4731145b732e8a372f9db99ef986
16cd7e7fa2bb9afdd7061ae6187f739dc2fe120f

View File

@ -323,7 +323,7 @@ gem 'fast_blank', '~> 1.0.1'
gem 'gitlab-chronic', '~> 0.10.5'
gem 'gitlab_chronic_duration', '~> 0.11'
gem 'rack-proxy', '~> 0.7.6'
gem 'rack-proxy', '~> 0.7.7'
gem 'sassc-rails', '~> 2.1.0'
gem 'autoprefixer-rails', '10.2.5.1'

View File

@ -473,7 +473,7 @@
{"name":"rack-cors","version":"2.0.1","platform":"ruby","checksum":"bcc66bdf5c6a4af05d571c4d01d35ac4a873552ba4f86c05fbe39365c39b9b0a"},
{"name":"rack-oauth2","version":"1.21.3","platform":"ruby","checksum":"4e72a79dd6a866692e84422a552b27c38a5a1918ded06661e04910f2bbe676ba"},
{"name":"rack-protection","version":"2.2.2","platform":"ruby","checksum":"fd41414dbabbec274af0bdb1f72a48504449de4d979782c9af38cbb5dfff3299"},
{"name":"rack-proxy","version":"0.7.6","platform":"ruby","checksum":"8704c5009bb60eb16dacf4bcc5e067a8484e668321e8443534bb58ded320c2a8"},
{"name":"rack-proxy","version":"0.7.7","platform":"ruby","checksum":"446a4b57001022145d5c3ba73b775f66a2260eaf7420c6907483141900395c8a"},
{"name":"rack-test","version":"2.1.0","platform":"ruby","checksum":"0c61fc61904049d691922ea4bb99e28004ed3f43aa5cfd495024cc345f125dfb"},
{"name":"rack-timeout","version":"0.6.3","platform":"ruby","checksum":"1754892eacc124d405e7f1145731ec9b7421ebd1bee5d51ddc18b72c204d0ab3"},
{"name":"rails","version":"7.0.6","platform":"ruby","checksum":"5dfbd481a23556ad425fc8541399a129a08ed550f877294b44d0170ca5b9f421"},

View File

@ -1245,7 +1245,7 @@ GEM
rack (>= 2.1.0)
rack-protection (2.2.2)
rack
rack-proxy (0.7.6)
rack-proxy (0.7.7)
rack
rack-test (2.1.0)
rack (>= 1.3)
@ -1955,7 +1955,7 @@ DEPENDENCIES
rack-attack (~> 6.7.0)
rack-cors (~> 2.0.1)
rack-oauth2 (~> 1.21.3)
rack-proxy (~> 0.7.6)
rack-proxy (~> 0.7.7)
rack-timeout (~> 0.6.3)
rails (~> 7.0.6)
rails-controller-testing

View File

@ -20,6 +20,7 @@ import WorkItemTypeIcon from '~/work_items/components/work_item_type_icon.vue';
import IssuableBlockedIcon from '~/vue_shared/components/issuable_blocked_icon/issuable_blocked_icon.vue';
import { ListType } from '../constants';
import eventHub from '../eventhub';
import { setError } from '../graphql/cache_updates';
import IssueDueDate from './issue_due_date.vue';
import IssueTimeEstimate from './issue_time_estimate.vue';
@ -45,6 +46,7 @@ export default {
},
mixins: [boardCardInner],
inject: [
'allowSubEpics',
'rootPath',
'scopedLabelsAvailable',
'isEpicBoard',
@ -85,7 +87,7 @@ export default {
};
},
computed: {
...mapState(['isShowingLabels', 'allowSubEpics']),
...mapState(['isShowingLabels']),
isLoading() {
return this.item.isLoading || this.item.iid === '-1';
},
@ -175,7 +177,8 @@ export default {
},
},
methods: {
...mapActions(['performSearch', 'setError']),
...mapActions(['performSearch']),
setError,
isIndexLessThanlimit(index) {
return index < this.limitBeforeCounter;
},

View File

@ -222,7 +222,7 @@ export default {
<template #default>
<board-sidebar-title :active-item="activeBoardIssuable" data-testid="sidebar-title" />
<sidebar-assignees-widget
v-if="activeBoardItem.assignees"
v-if="activeBoardIssuable.assignees"
:iid="activeBoardIssuable.iid"
:full-path="projectPathForActiveIssue"
:initial-assignees="activeBoardIssuable.assignees"
@ -232,7 +232,7 @@ export default {
/>
<sidebar-dropdown-widget
v-if="epicFeatureAvailable && !isIncidentSidebar"
:key="`epic-${activeBoardItem.iid}`"
:key="`epic-${activeBoardIssuable.iid}`"
:iid="activeBoardIssuable.iid"
issuable-attribute="epic"
:workspace-path="projectPathForActiveIssue"
@ -242,7 +242,7 @@ export default {
/>
<div>
<sidebar-dropdown-widget
:key="`milestone-${activeBoardItem.iid}`"
:key="`milestone-${activeBoardIssuable.iid}`"
:iid="activeBoardIssuable.iid"
issuable-attribute="milestone"
:workspace-path="projectPathForActiveIssue"
@ -252,7 +252,7 @@ export default {
/>
<sidebar-iteration-widget
v-if="iterationFeatureAvailable && !isIncidentSidebar"
:key="`iteration-${activeBoardItem.iid}`"
:key="`iteration-${activeBoardIssuable.iid}`"
:iid="activeBoardIssuable.iid"
:workspace-path="projectPathForActiveIssue"
:attr-workspace-path="groupPathForActiveIssue"

View File

@ -88,6 +88,7 @@ export default {
toListId: null,
toList: {},
addItemToListInProgress: false,
updateIssueOrderInProgress: false,
};
},
apollo: {
@ -253,7 +254,9 @@ export default {
return this.canMoveIssue ? options : {};
},
disableScrollingWhenMutationInProgress() {
return this.hasNextPage && this.isUpdateIssueOrderInProgress;
return (
this.hasNextPage && (this.isUpdateIssueOrderInProgress || this.updateIssueOrderInProgress)
);
},
showMoveToPosition() {
return !this.disabled && this.list.listType !== ListType.closed;
@ -343,7 +346,7 @@ export default {
sortableStart();
this.track('drag_card', { label: 'board' });
},
handleDragOnEnd({
async handleDragOnEnd({
newIndex: originalNewIndex,
oldIndex,
from,
@ -394,7 +397,8 @@ export default {
}
if (this.isApolloBoard) {
this.moveBoardItem(
this.updateIssueOrderInProgress = true;
await this.moveBoardItem(
{
epicId: itemId,
iid: itemIid,
@ -404,7 +408,9 @@ export default {
moveAfterId,
},
newIndex,
);
).finally(() => {
this.updateIssueOrderInProgress = false;
});
} else {
this.moveItem({
itemId,

View File

@ -7,6 +7,7 @@ import { joinPaths } from '~/lib/utils/url_utility';
import { __ } from '~/locale';
import autofocusonshow from '~/vue_shared/directives/autofocusonshow';
import { titleQueries } from 'ee_else_ce/boards/constants';
import { setError } from '../../graphql/cache_updates';
export default {
components: {
@ -65,7 +66,7 @@ export default {
},
},
methods: {
...mapActions(['setActiveItemTitle', 'setError']),
...mapActions(['setActiveItemTitle']),
getPendingChangesKey(item) {
if (!item) {
return '';
@ -130,7 +131,7 @@ export default {
this.showChangesAlert = false;
} catch (e) {
this.title = this.item.title;
this.setError({ error: e, message: this.$options.i18n.updateTitleError });
setError({ error: e, message: this.$options.i18n.updateTitleError });
} finally {
this.loading = false;
}

View File

@ -102,6 +102,7 @@ function mountBoardApp(el) {
swimlanesFeatureAvailable: gon.licensed_features?.swimlanes,
multipleIssueBoardsAvailable: parseBoolean(el.dataset.multipleBoardsAvailable),
scopedIssueBoardFeatureEnabled: parseBoolean(el.dataset.scopedIssueBoardFeatureEnabled),
allowSubEpics: false,
},
render: (createComponent) => createComponent(BoardApp),
});

View File

@ -178,6 +178,22 @@ export default {
</script>
<template>
<div>
<header class="gl-my-5 gl-display-flex gl-justify-content-space-between">
<h2 class="gl-my-0 header-title">
{{ s__('Runners|Runners') }}
</h2>
<div class="gl-display-flex gl-gap-3">
<runner-dashboard-link />
<gl-button :href="newRunnerPath" variant="confirm">
{{ s__('Runners|New instance runner') }}
</gl-button>
<registration-dropdown
:registration-token="registrationToken"
:type="$options.INSTANCE_TYPE"
placement="right"
/>
</div>
</header>
<div
class="gl-display-flex gl-align-items-center gl-flex-direction-column-reverse gl-md-flex-direction-row gl-mt-3 gl-md-mt-0"
>
@ -189,18 +205,6 @@ export default {
content-class="gl-display-none"
nav-class="gl-border-none!"
/>
<div class="gl-w-full gl-md-w-auto gl-display-flex gl-gap-3">
<runner-dashboard-link />
<gl-button :href="newRunnerPath" variant="confirm">
{{ s__('Runners|New instance runner') }}
</gl-button>
<registration-dropdown
:registration-token="registrationToken"
:type="$options.INSTANCE_TYPE"
placement="right"
/>
</div>
</div>
<runner-filtered-search-bar

View File

@ -50,12 +50,7 @@ export default {
<template>
<div>
<gl-link
v-if="cell.href"
v-gl-tooltip="cell.tooltip"
:href="cell.href"
class="gl-text-body gl-text-decoration-underline"
>
<gl-link v-if="cell.href" v-gl-tooltip="cell.tooltip" :href="cell.href" class="gl-text-body">
{{ cell.text }}
</gl-link>
<span v-else>{{ cell.text }}</span>

View File

@ -12,7 +12,6 @@ import RunnerManagersBadge from '../runner_managers_badge.vue';
import { formatJobCount } from '../../utils';
import {
I18N_NO_DESCRIPTION,
I18N_LOCKED_RUNNER_DESCRIPTION,
I18N_VERSION_LABEL,
I18N_LAST_CONTACT_LABEL,
@ -73,7 +72,6 @@ export default {
formatNumber,
},
i18n: {
I18N_NO_DESCRIPTION,
I18N_LOCKED_RUNNER_DESCRIPTION,
I18N_VERSION_LABEL,
I18N_LAST_CONTACT_LABEL,
@ -100,7 +98,10 @@ export default {
<runner-type-badge :type="runner.runnerType" size="sm" class="gl-vertical-align-middle" />
</div>
<div class="gl-mb-3 gl-ml-auto gl-display-inline-flex gl-max-w-full">
<div
v-if="runner.version || runner.description"
class="gl-mb-3 gl-ml-auto gl-display-inline-flex gl-max-w-full gl-font-sm gl-align-items-center"
>
<template v-if="runner.version">
<div class="gl-flex-shrink-0">
<runner-upgrade-status-icon :upgrade-status="runner.upgradeStatus" />
@ -108,19 +109,20 @@ export default {
<template #version>{{ runner.version }}</template>
</gl-sprintf>
</div>
<div class="gl-text-secondary gl-mx-2" aria-hidden="true">·</div>
<div v-if="runner.description" class="gl-text-secondary gl-mx-2" aria-hidden="true">·</div>
</template>
<tooltip-on-truncate
v-if="runner.description"
class="gl-text-truncate gl-display-block"
:class="{ 'gl-text-secondary': !runner.description }"
:title="runner.description"
>
{{ runner.description || $options.i18n.I18N_NO_DESCRIPTION }}
{{ runner.description }}
</tooltip-on-truncate>
</div>
<div>
<runner-summary-field icon="clock">
<div class="gl-font-sm">
<runner-summary-field icon="clock" icon-size="sm">
<gl-sprintf :message="$options.i18n.I18N_LAST_CONTACT_LABEL">
<template #timeAgo>
<time-ago v-if="runner.contactedAt" :time="runner.contactedAt" />

View File

@ -25,7 +25,7 @@ export default {
<template>
<div v-gl-tooltip="tooltip" class="gl-display-inline-block gl-text-secondary gl-mb-3 gl-mr-4">
<gl-icon v-if="icon" :name="icon" />
<gl-icon v-if="icon" :name="icon" :size="12" />
<!-- display tooltip as a label for screen readers -->
<span class="gl-sr-only">{{ tooltip }}</span>
<slot></slot>

View File

@ -15,7 +15,7 @@ export const I18N_CREATE_ERROR = s__(
);
export const FILTER_CSS_CLASSES =
'gl-bg-gray-10 gl-p-5 gl-border-solid gl-border-gray-100 gl-border-0 gl-border-t-1 gl-border-b-1';
'gl-bg-gray-10 gl-p-5 gl-border-solid gl-border-gray-100 gl-border-0 gl-border-t-1';
// Type
@ -96,7 +96,6 @@ export const I18N_DELETE_RUNNER = s__('Runners|Delete runner');
export const I18N_DELETED_TOAST = s__('Runners|Runner %{name} was deleted');
// List
export const I18N_NO_DESCRIPTION = s__('Runners|No description');
export const I18N_LOCKED_RUNNER_DESCRIPTION = s__(
'Runners|Runner is locked and available for currently assigned projects only. Only administrators can change the assigned projects.',
);

View File

@ -212,6 +212,27 @@ export default {
<template>
<div>
<header class="gl-my-5 gl-display-flex gl-justify-content-space-between">
<h2 class="gl-my-0 header-title">
{{ s__('Runners|Runners') }}
</h2>
<div class="gl-display-flex gl-gap-3">
<gl-button
v-if="newRunnerPath"
:href="newRunnerPath"
variant="confirm"
data-testid="new-group-runner-button"
>
{{ s__('Runners|New group runner') }}
</gl-button>
<registration-dropdown
v-if="registrationToken"
:registration-token="registrationToken"
:type="$options.GROUP_TYPE"
placement="right"
/>
</div>
</header>
<div
class="gl-display-flex gl-align-items-center gl-flex-direction-column-reverse gl-md-flex-direction-row gl-mt-3 gl-md-mt-0"
>
@ -225,24 +246,6 @@ export default {
content-class="gl-display-none"
nav-class="gl-border-none!"
/>
<div class="gl-w-full gl-md-w-auto gl-display-flex">
<gl-button
v-if="newRunnerPath"
:href="newRunnerPath"
variant="confirm"
data-testid="new-group-runner-button"
>
{{ s__('Runners|New group runner') }}
</gl-button>
<registration-dropdown
v-if="registrationToken"
class="gl-ml-3"
:registration-token="registrationToken"
:type="$options.GROUP_TYPE"
placement="right"
/>
</div>
</div>
<div
class="gl-display-flex gl-flex-direction-column gl-md-flex-direction-row gl-gap-3"

View File

@ -28,3 +28,18 @@ export const swapArrayItems = (array, leftIndex = 0, rightIndex = 0) => {
export const getDuplicateItemsFromArray = (array) => [
...new Set(array.filter((value, index) => array.indexOf(value) !== index)),
];
/**
* Toggles the presence of an item in a given array.
* Use pass by reference when toggling non-primivive types.
*
* @param {Array} array - The array to use
* @param {Any} item - The array item to toggle
* @returns {Array} new array with toggled item
*/
export const toggleArrayItem = (array, value) => {
if (array.includes(value)) {
return array.filter((item) => item !== value);
}
return [...array, value];
};

View File

@ -24,6 +24,10 @@ export const containsSensitiveToken = (message) => {
name: 'Feed Token',
regex: 'feed_token=((glft-)?[0-9a-zA-Z_-]{20}|glft-[a-h0-9]+-[0-9]+_)',
},
{
name: 'GitLab OAuth Application Secret',
regex: `gloas-[0-9a-zA-Z_-]{64}`,
},
];
for (const rule of sensitiveDataPatterns) {

View File

@ -19,6 +19,7 @@ export const i18n = {
rolesSectionHeader: s__('AccessDropdown|Roles'),
groupsSectionHeader: s__('AccessDropdown|Groups'),
usersSectionHeader: s__('AccessDropdown|Users'),
noRole: s__('AccessDropdown|No role'),
deployKeysSectionHeader: s__('AccessDropdown|Deploy Keys'),
ownedBy: __('Owned by %{image_tag}'),
};
@ -121,6 +122,9 @@ export default {
this.deployKeys.length
);
},
isAccessesLevelNoneSelected() {
return this.selected.role[0].id === ACCESS_LEVEL_NONE;
},
toggleLabel() {
const counts = Object.entries(this.selected).reduce((acc, [key, value]) => {
acc[key] = value.length;
@ -140,7 +144,11 @@ export default {
const labelPieces = [];
if (counts[LEVEL_TYPES.ROLE] > 0) {
labelPieces.push(n__('1 role', '%d roles', counts[LEVEL_TYPES.ROLE]));
if (this.isAccessesLevelNoneSelected) {
labelPieces.push(this.$options.i18n.noRole);
} else {
labelPieces.push(n__('1 role', '%d roles', counts[LEVEL_TYPES.ROLE]));
}
}
if (counts[LEVEL_TYPES.USER] > 0) {

View File

@ -1,5 +1,5 @@
<script>
import { GlToggle } from '@gitlab/ui';
import { GlToggle, GlBadge } from '@gitlab/ui';
import { updateApplicationSettings } from '~/rest_api';
import { createAlert } from '~/alert';
import toast from '~/vue_shared/plugins/global_toast';
@ -13,9 +13,11 @@ export default {
saveError: s__('SilentMode|There was an error updating the Silent Mode Settings.'),
enabled: __('enabled'),
disabled: __('disabled'),
experiment: __('Experiment'),
},
components: {
GlToggle,
GlBadge,
},
props: {
isSilentModeEnabled: {
@ -60,5 +62,9 @@ export default {
:label="$options.i18n.toggleLabel"
:is-loading="isLoading"
@change="updateSilentModeSettings"
/>
>
<template #label
>{{ $options.i18n.toggleLabel }} <gl-badge>{{ $options.i18n.experiment }}</gl-badge></template
>
</gl-toggle>
</template>

View File

@ -1,12 +1,5 @@
<script>
import {
GlButton,
GlDropdown,
GlDropdownSectionHeader,
GlDropdownText,
GlFormInputGroup,
GlTooltipDirective,
} from '@gitlab/ui';
import { GlButton, GlDisclosureDropdown, GlFormInputGroup, GlTooltipDirective } from '@gitlab/ui';
import { escape as esc } from 'lodash';
import { __ } from '~/locale';
@ -17,9 +10,7 @@ const MSG_COPY = __('Copy');
export default {
components: {
GlButton,
GlDropdown,
GlDropdownSectionHeader,
GlDropdownText,
GlDisclosureDropdown,
GlFormInputGroup,
},
directives: {
@ -45,22 +36,16 @@ export default {
};
</script>
<template>
<gl-dropdown
right
:text="$options.MSG_EMBED"
menu-class="gl-px-1! gl-pb-5! gl-dropdown-menu-wide"
<gl-disclosure-dropdown
:auto-close="false"
fluid-width
placement="right"
:toggle-text="$options.MSG_EMBED"
>
<template v-for="{ name, value } in sections">
<gl-dropdown-section-header :key="`header_${name}`" data-testid="header">{{
name
}}</gl-dropdown-section-header>
<gl-dropdown-text
:key="`input_${name}`"
tag="div"
class="gl-dropdown-text-py-0 gl-dropdown-text-block"
data-testid="input"
>
<gl-form-input-group :value="value" readonly select-on-click :label="name">
<div :key="name" :data-testid="`section-${name}`" class="gl-px-4 gl-py-2">
<h5 class="gl-font-sm gl-mt-1 gl-mb-2" data-testid="header">{{ name }}</h5>
<gl-form-input-group class="gl-w-31" :value="value" readonly select-on-click :label="name">
<template #append>
<gl-button
v-gl-tooltip.hover
@ -73,7 +58,7 @@ export default {
/>
</template>
</gl-form-input-group>
</gl-dropdown-text>
</div>
</template>
</gl-dropdown>
</gl-disclosure-dropdown>
</template>

View File

@ -26,7 +26,7 @@ export default {
<template>
<a
v-gl-tooltip:super-sidebar.hover.bottom.ds500="$options.i18n.homepage"
v-gl-tooltip:super-sidebar.hover.bottom="$options.i18n.homepage"
class="brand-logo"
:href="rootPath"
data-track-action="click_link"

View File

@ -62,7 +62,7 @@ export default {
<template>
<gl-disclosure-dropdown
v-gl-tooltip:super-sidebar.hover.ds500.bottom="dropdownOpen ? '' : $options.i18n.createNew"
v-gl-tooltip:super-sidebar.hover.bottom="dropdownOpen ? '' : $options.i18n.createNew"
category="tertiary"
icon="plus"
no-caret

View File

@ -234,7 +234,7 @@ export default {
<template v-if="isPinnable">
<gl-button
v-if="isPinned"
v-gl-tooltip.noninteractive.ds500.right.viewport="$options.i18n.unpinItem"
v-gl-tooltip.noninteractive.right.viewport="$options.i18n.unpinItem"
:aria-label="unpinAriaLabel"
category="tertiary"
class="show-on-focus-or-hover--target transition-opacity-on-hover--target always-animate gl-absolute gl-right-3 gl-top-2"
@ -247,7 +247,7 @@ export default {
/>
<gl-button
v-else
v-gl-tooltip.noninteractive.ds500.right.viewport="$options.i18n.pinItem"
v-gl-tooltip.noninteractive.right.viewport="$options.i18n.pinItem"
:aria-label="pinAriaLabel"
category="tertiary"
class="show-on-focus-or-hover--target transition-opacity-on-hover--target always-animate gl-absolute gl-right-3 gl-top-2"

View File

@ -73,7 +73,7 @@ export default {
<template>
<gl-button
v-gl-tooltip.hover.ds500="tooltip"
v-gl-tooltip.hover="tooltip"
aria-controls="super-sidebar"
:aria-expanded="ariaExpanded"
:aria-label="$options.i18n.primaryNavigationSidebar"

View File

@ -139,7 +139,7 @@ export default {
<gl-button
v-if="isImpersonating"
v-gl-tooltip.ds500.bottom
v-gl-tooltip.bottom
:href="sidebarData.stop_impersonation_path"
:title="$options.i18n.stopImpersonating"
:aria-label="$options.i18n.stopImpersonating"
@ -154,7 +154,7 @@ export default {
class="gl-display-flex gl-justify-content-space-between gl-gap-2"
>
<counter
v-gl-tooltip:super-sidebar.hover.ds500.bottom="$options.i18n.issues"
v-gl-tooltip:super-sidebar.hover.bottom="$options.i18n.issues"
class="gl-flex-basis-third dashboard-shortcuts-issues"
icon="issues"
:count="userCounts.assigned_issues"
@ -172,9 +172,7 @@ export default {
@hidden="mrMenuShown = false"
>
<counter
v-gl-tooltip:super-sidebar.hover.ds500.bottom="
mrMenuShown ? '' : $options.i18n.mergeRequests
"
v-gl-tooltip:super-sidebar.hover.bottom="mrMenuShown ? '' : $options.i18n.mergeRequests"
class="gl-w-full"
icon="merge-request-open"
:count="mergeRequestTotalCount"
@ -186,7 +184,7 @@ export default {
/>
</merge-request-menu>
<counter
v-gl-tooltip:super-sidebar.hover.ds500.bottom="$options.i18n.todoList"
v-gl-tooltip:super-sidebar.hover.bottom="$options.i18n.todoList"
class="gl-flex-basis-third shortcuts-todos js-todos-count"
icon="todo-done"
:count="userCounts.todos"
@ -200,7 +198,7 @@ export default {
</div>
<button
id="super-sidebar-search"
v-gl-tooltip.bottom.hover.ds500.html="searchTooltip"
v-gl-tooltip.bottom.hover.html="searchTooltip"
v-gl-modal="$options.SEARCH_MODAL_ID"
class="counter gl-display-block gl-py-3 gl-bg-gray-10 gl-rounded-base gl-text-gray-900 gl-border-none gl-inset-border-1-gray-a-08 gl-line-height-1 gl-focus--focus gl-w-full"
data-testid="super-sidebar-search-button"

View File

@ -81,6 +81,7 @@ class Projects::MirrorsController < Projects::ApplicationController
only_protected_branches
keep_divergent_refs
auth_method
user
password
ssh_known_hosts
regenerate_ssh_private_key

View File

@ -15,12 +15,8 @@ module Groups
items = find_all_groups
if exact_matches_first_enabled?
# Search will perform an ORDER BY to ensure exact matches are returned first.
return by_search(items, exact_matches_first: true) if params[:search].present?
else
items = by_search(items)
end
# Search will perform an ORDER BY to ensure exact matches are returned first.
return by_search(items, exact_matches_first: true) if params[:search].present?
sort(items)
end
@ -66,9 +62,5 @@ module Groups
def can_transfer_group?
Ability.allowed?(current_user, :admin_group, group_to_be_transferred)
end
def exact_matches_first_enabled?
Feature.enabled?(:exact_matches_first_group_transfer, group_to_be_transferred)
end
end
end

View File

@ -84,3 +84,5 @@ module RestrictedSignup
end
end
end
::RestrictedSignup.prepend_mod

View File

@ -20,6 +20,7 @@ class PagesDeployment < ApplicationRecord
scope :with_files_stored_locally, -> { where(file_store: ::ObjectStorage::Store::LOCAL) }
scope :with_files_stored_remotely, -> { where(file_store: ::ObjectStorage::Store::REMOTE) }
scope :project_id_in, ->(ids) { where(project_id: ids) }
scope :active, -> { where(deleted_at: nil) }
validates :file, presence: true
validates :file_store, presence: true, inclusion: { in: ObjectStorage::SUPPORTED_STORES }
@ -34,6 +35,14 @@ class PagesDeployment < ApplicationRecord
skip_callback :save, :after, :store_file!
after_commit :store_file_after_commit!, on: [:create, :update]
def self.deactivate_deployments_older_than(deployment, time: nil)
now = Time.now.utc
active
.older_than(deployment.id)
.where(project_id: deployment.project_id, path_prefix: deployment.path_prefix)
.update_all(updated_at: now, deleted_at: time || now)
end
def migrated?
file.filename == MIGRATED_FILE_NAME
end

View File

@ -105,11 +105,15 @@ module Projects
def update_project_pages_deployment(deployment)
project.update_pages_deployment!(deployment)
PagesDeployment.deactivate_deployments_older_than(
deployment,
time: OLD_DEPLOYMENTS_DESTRUCTION_DELAY.from_now)
DestroyPagesDeploymentsWorker.perform_in(
OLD_DEPLOYMENTS_DESTRUCTION_DELAY,
project.id,
deployment.id
)
deployment.id)
end
def register_attempt

View File

@ -6,7 +6,7 @@
= render Pajamas::ButtonComponent.new(button_options: { class: 'js-settings-toggle' }) do
= expanded ? _('Collapse') : _('Expand')
%p.gl-text-secondary
- help_link = link_to('', help_page_path('development/snowplow/index'), target: '_blank', rel: 'noopener noreferrer')
- help_link = link_to('', help_page_path('development/internal_analytics/snowplow/index'), target: '_blank', rel: 'noopener noreferrer')
- snowplow_link = link_to('', 'https://snowplow.io/', target: '_blank', rel: 'noopener noreferrer')
= safe_format(_('Configure %{snowplow_link_start}Snowplow%{snowplow_link_end} to track events. %{help_link_start}Learn more.%{help_link_end}'), tag_pair(snowplow_link, :snowplow_link_start, :snowplow_link_end), tag_pair(help_link, :help_link_start, :help_link_end))
.settings-content

View File

@ -12,7 +12,7 @@
help_text: _("GitLab informs you if a new version is available. %{link_start}What information does GitLab Inc. collect?%{link_end}").html_safe % { link_start: help_link_start, link_end: link_end }
.form-group
- can_be_configured = @application_setting.usage_ping_can_be_configured?
- service_ping_link_start = link_start % { url: help_page_path('development/service_ping/index') }
- service_ping_link_start = link_start % { url: help_page_path('development/internal_analytics/service_ping/index') }
- deactivating_service_ping_link_start = link_start % { url: help_page_path('administration/settings/usage_statistics', anchor: 'disable-usage-statistics-with-the-configuration-file') }
- usage_ping_help_text = s_('AdminSettings|To help improve GitLab and its user experience, GitLab periodically collects usage information. %{link_start}What information is shared with GitLab Inc.?%{link_end}').html_safe % { link_start: service_ping_link_start, link_end: link_end }
- disabled_help_text = s_('AdminSettings|Service ping is disabled in your configuration file, and cannot be enabled through this form. For more information, see the documentation on %{link_start}deactivating service ping%{link_end}.').html_safe % { link_start: deactivating_service_ping_link_start, link_end: link_end }

View File

@ -1,6 +1,6 @@
- service_ping_enabled = Gitlab::CurrentSettings.usage_ping_enabled
- if !service_ping_enabled
#js-devops-service-ping-disabled{ data: { is_admin: current_user&.admin.to_s, empty_state_svg_path: image_path('illustrations/convdev/convdev_no_index.svg'), enable_service_ping_path: metrics_and_profiling_admin_application_settings_path(anchor: 'js-usage-settings'), docs_link: help_page_path('development/service_ping/index.md') } }
#js-devops-service-ping-disabled{ data: { is_admin: current_user&.admin.to_s, empty_state_svg_path: image_path('illustrations/convdev/convdev_no_index.svg'), enable_service_ping_path: metrics_and_profiling_admin_application_settings_path(anchor: 'js-usage-settings'), docs_link: help_page_path('development/internal_analytics/service_ping/index.md') } }
- else
#js-devops-score{ data: { devops_score_metrics: devops_score_metrics(@metric).to_json, no_data_image_path: image_path('dev_ops_report_no_data.svg'), devops_score_intro_image_path: image_path('dev_ops_report_overview.svg') } }

View File

@ -37,7 +37,7 @@
= render_if_exists 'groups/settings/wiki', f: f, group: @group
= render 'groups/settings/lfs', f: f
= render_if_exists 'groups/settings/code_suggestions', f: f, group: @group
= render_if_exists 'groups/settings/ai_related_settings', f: f, group: @group
= render_if_exists 'groups/settings/experimental_settings', f: f, group: @group
= render_if_exists 'groups/settings/ai_third_party_settings', f: f, group: @group
= render 'groups/settings/git_access_protocols', f: f, group: @group
= render 'groups/settings/project_creation_level', f: f, group: @group

View File

@ -7,5 +7,3 @@
%ul
- viewer.errors.each do |error|
%li= error
= link_to _('Learn more'), help_page_path('operations/metrics/dashboards/index.md')

View File

@ -1,4 +1,2 @@
= gl_loading_icon(inline: true, css_class: "mr-1")
= _('Metrics Dashboard YAML definition') + '…'
= link_to _('Learn more'), help_page_path('operations/metrics/dashboards/yaml.md')

View File

@ -1,5 +1,5 @@
- mirror = f.object
- auth_options = [[_('Password'), 'password'], [_('SSH public key'), 'ssh_public_key']]
- auth_options = [[_('Username and Password'), 'password'], [_('SSH public key'), 'ssh_public_key']]
.form-group
= f.label :auth_method, _('Authentication method'), class: 'label-bold'
@ -9,6 +9,9 @@
= f.hidden_field :auth_method, value: "password", class: "js-hidden-mirror-auth-type"
.form-group
.well-password-auth.collapse.js-well-password-auth
= f.label :user, _('Username'), class: 'label-bold'
= f.text_field :user, class: 'form-control gl-form-input gl-form-input-xl', value: nil, autocomplete: 'off', required: false, autocorrect: 'off', autocapitalize: 'off', spellcheck: false
.well-password-auth.collapse.js-well-password-auth
.form-group
= f.label :password, _("Password"), class: "label-bold"
= f.password_field :password, class: 'form-control gl-form-input js-mirror-password-field gl-form-input-xl', autocomplete: 'off', data: { qa_selector: 'password_field' }

View File

@ -4,7 +4,7 @@
= html_escape(_('The repository must be accessible over %{code_open}http://%{code_close},
%{code_open}https://%{code_close}, %{code_open}ssh://%{code_close} or %{code_open}git://%{code_close}.')) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe }
%li= html_escape(_('When using the %{code_open}http://%{code_close} or %{code_open}https://%{code_close} protocols, please provide the exact URL to the repository. HTTP redirects will not be followed.')) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe }
%li= html_escape(_('Include the username in the URL if required: %{code_open}https://username@gitlab.company.com/group/project.git%{code_close}.')) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe }
%li= html_escape(_('Do not include the username in the URL, use the username field below if required: %{code_open}https://gitlab.company.com/group/project.git%{code_close}.')) % { code_open: '<code>'.html_safe, code_close: '</code>'.html_safe }
%li
- minutes = Gitlab.config.gitlab_shell.git_timeout / 60
= _("The update action will time out after %{number_of_minutes} minutes. For big repositories, use a clone/push combination.") % { number_of_minutes: minutes }

View File

@ -3,7 +3,6 @@
.col-lg-3
%p
= s_('PrometheusService|Custom metrics require Prometheus installed on a cluster with environment scope "*" OR a manually configured Prometheus to be available.')
= link_to s_('PrometheusService|More information'), help_page_path('operations/metrics/index.md'), target: '_blank', rel: "noopener noreferrer"
.col-lg-9
= render Pajamas::CardComponent.new(header_options: { class: 'gl-display-flex gl-align-items-center' }, body_options: { class: 'gl-p-0' }, card_options: { class: 'gl-mb-5 custom-monitored-metrics js-panel-custom-monitored-metrics', data: { active_custom_metrics: project_prometheus_metrics_path(project), environments_data: environments_list_data, service_active: "#{integration.active}" } }) do |c|

View File

@ -5,10 +5,9 @@
.col-lg-3
%p
= s_('PrometheusService|Common metrics are automatically monitored based on a library of metrics from popular exporters.')
= link_to s_('PrometheusService|More information'), help_page_path('user/project/integrations/prometheus'), target: '_blank', rel: "noopener noreferrer"
.col-lg-9
= render Pajamas::CardComponent.new(body_options: { class: 'gl-p-0' }, card_options: { class: 'gl-mb-5 js-panel-monitored-metrics', data: { active_metrics: active_common_project_prometheus_metrics_path(project, :json), metrics_help_path: help_page_path('user/project/integrations/prometheus_library/index') }}) do |c|
= render Pajamas::CardComponent.new(body_options: { class: 'gl-p-0' }, card_options: { class: 'gl-mb-5 js-panel-monitored-metrics', data: { active_metrics: active_common_project_prometheus_metrics_path(project, :json) }}) do |c|
- c.with_header do
%strong
= s_('PrometheusService|Common metrics')
@ -34,5 +33,4 @@
.flash-notice
.flash-text
= html_escape(s_("PrometheusService|To set up automatic monitoring, add the environment variable %{variable} to exporter's queries.")) % { variable: "<code>$CI_ENVIRONMENT_SLUG</code>".html_safe }
= link_to s_('PrometheusService|More information'), help_page_path('operations/metrics/index.md')
%ul.list-unstyled.metrics-list.js-missing-var-metrics-list

View File

@ -1,8 +1,8 @@
---
name: exact_matches_first_group_transfer
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130773
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/424242
name: combined_analytics_visualization_editor
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131634
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/425048
milestone: '16.4'
type: development
group: group::project management
group: group::product analytics
default_enabled: false

View File

@ -124,4 +124,8 @@ Doorkeeper.configure do
# 2 hours in seconds
# This is also the database default value
access_token_expires_in 7200
# Use a custom class for generating the application secret.
# https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-application-secret-generator
application_secret_generator 'Gitlab::DoorkeeperSecretStoring::Token::UniqueApplicationToken'
end

View File

@ -0,0 +1,7 @@
# frozen_string_literal: true
class AddDeletedAtToPagesDeployments < Gitlab::Database::Migration[2.1]
def change
add_column :pages_deployments, :deleted_at, :datetime_with_timezone, null: true
end
end

View File

@ -0,0 +1,19 @@
# frozen_string_literal: true
class AddPagesDeploymentsDeletedAtIndex < Gitlab::Database::Migration[2.1]
disable_ddl_transaction!
INDEX = 'pages_deployments_deleted_at_index'
COLUMNS = [:id, :project_id, :path_prefix]
def up
add_concurrent_index :pages_deployments,
COLUMNS,
where: 'deleted_at IS NULL',
name: INDEX
end
def down
remove_concurrent_index :pages_deployments, COLUMNS, name: INDEX
end
end

View File

@ -0,0 +1,15 @@
# frozen_string_literal: true
class IndexFindingIdForVulnerabilitiesSync < Gitlab::Database::Migration[2.1]
INDEX_NAME = 'index_vulnerabilities_on_finding_id'
disable_ddl_transaction!
def up
add_concurrent_index :vulnerabilities, :finding_id, name: INDEX_NAME
end
def down
remove_concurrent_index_by_name :vulnerabilities, INDEX_NAME
end
end

View File

@ -0,0 +1 @@
af511c9616f7f44474a8b4cd04f05c36f387a7b94badc4a5b1325a1e7425de46

View File

@ -0,0 +1 @@
91ac60df233911ad7d770eaeb4736b35dab7ba335eba11824cb114a1cfa97826

View File

@ -0,0 +1 @@
9702393eb6db18d5d3d106c0a77c21419af828fe5a422dd5c06a2621ef10cf03

View File

@ -20508,6 +20508,7 @@ CREATE TABLE pages_deployments (
root_directory text DEFAULT 'public'::text,
path_prefix text,
build_ref text,
deleted_at timestamp with time zone,
CONSTRAINT check_4d04b8dc9a CHECK ((char_length(path_prefix) <= 128)),
CONSTRAINT check_5f9132a958 CHECK ((size IS NOT NULL)),
CONSTRAINT check_7e938c810a CHECK ((char_length(root_directory) <= 255)),
@ -34162,6 +34163,8 @@ CREATE INDEX index_vulnerabilities_on_due_date_sourcing_milestone_id ON vulnerab
CREATE INDEX index_vulnerabilities_on_epic_id ON vulnerabilities USING btree (epic_id);
CREATE INDEX index_vulnerabilities_on_finding_id ON vulnerabilities USING btree (finding_id);
CREATE INDEX index_vulnerabilities_on_last_edited_by_id ON vulnerabilities USING btree (last_edited_by_id);
CREATE INDEX index_vulnerabilities_on_milestone_id ON vulnerabilities USING btree (milestone_id);
@ -34432,6 +34435,8 @@ CREATE INDEX packages_packages_needs_verification ON packages_package_files USIN
CREATE INDEX packages_packages_pending_verification ON packages_package_files USING btree (verified_at NULLS FIRST) WHERE (verification_state = 0);
CREATE INDEX pages_deployments_deleted_at_index ON pages_deployments USING btree (id, project_id, path_prefix) WHERE (deleted_at IS NULL);
CREATE UNIQUE INDEX partial_index_bulk_import_exports_on_group_id_and_relation ON bulk_import_exports USING btree (group_id, relation) WHERE (group_id IS NOT NULL);
CREATE UNIQUE INDEX partial_index_bulk_import_exports_on_project_id_and_relation ON bulk_import_exports USING btree (project_id, relation) WHERE (project_id IS NOT NULL);

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../index.md'
---
# Self-monitoring project (removed) **(FREE SELF)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/348909)
in GitLab 14.9 and [removed](https://gitlab.com/groups/gitlab-org/-/epics/10030) in 16.0.

View File

@ -74,7 +74,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
### `Query.aiMessages`
Find AI Duo Chat messages.
Find GitLab Duo Chat messages.
WARNING:
**Introduced** in 16.1.
@ -13004,7 +13004,7 @@ Information about a connected Agent.
### `AiChatMessage`
Duo Chat message.
GitLab Duo Chat message.
#### Fields
@ -15434,7 +15434,7 @@ Represents a DAST Site Profile.
### `DastSiteProfileAuth`
Input type for DastSiteProfile authentication.
DastSiteProfile authentication.
#### Fields

View File

@ -15,4 +15,4 @@ Automate and interact with GitLab, and integrate with external applications.
- [OAuth 2.0 identity provider API](oauth2.md)
- [GitLab CLI (glab)](../integration/glab/index.md)
- [Visual Studio Code extension](../user/project/repository/vscode.md)
- [Code Suggestions](../user/project/repository/code_suggestions.md)
- [Code Suggestions](../user/project/repository/code_suggestions/index.md)

View File

@ -1,17 +0,0 @@
---
stage: Fulfillment
group: Utilization
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: 'index.md'
---
# Managed Licenses API (removed) **(ULTIMATE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/390417) in GitLab 15.9
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/397067) in 16.0.
<!-- This redirect file can be deleted after <2023-08-22>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -61,10 +61,9 @@ The `changes from a single merge request` endpoint will be removed in v5 of the
Breaking change. [Related issue](https://gitlab.com/gitlab-org/gitlab/-/issues/397067).
The endpoint to get
[all managed licenses for a given project](../managed_licenses.md)
has been deprecated in favor the
The endpoint to get all managed licenses for a given project has been deprecated in favor the
[License Approval policy](../../user/compliance/license_approval_policies.md) feature.
Users who wish to continue to enforce approvals based on detected licenses are encouraged to create a new [License Approval policy](../../user/compliance/license_approval_policies.md) instead.
The `managed licenses` endpoint will be removed in v5 of the GitLab REST API.

View File

@ -1,14 +0,0 @@
---
stage: Verify
group: Pipeline Security
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
redirect_to: '../testing/test_coverage_visualization.md'
remove_date: '2023-08-31'
---
This document was moved to [another location](../testing/test_coverage_visualization.md).
<!-- This redirect file can be deleted after <2023-08-31>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,11 +0,0 @@
---
redirect_to: '../macos_saas_runner.md'
remove_date: '2023-09-05'
---
This document was moved to [another location](../macos_saas_runner.md).
<!-- This redirect file can be deleted after <2023-09-05>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,11 +0,0 @@
---
redirect_to: '../macos_saas_runner.md'
remove_date: '2023-09-05'
---
This document was moved to [another location](../macos_saas_runner.md).
<!-- This redirect file can be deleted after <2023-09-05>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1530,27 +1530,28 @@ is extracted from the job output. The coverage is shown in the UI if at least on
line in the job output matches the regular expression.
To extract the code coverage value from the match, GitLab uses
this smaller regular expression: `\d+(\.\d+)?`.
this smaller regular expression: `\d+(?:\.\d+)?`.
**Possible inputs**:
- A regular expression. Must start and end with `/`. Must match the coverage number.
- An RE2 regular expression. Must start and end with `/`. Must match the coverage number.
May match surrounding text as well, so you don't need to use a regular expression character group
to capture the exact number.
Because it uses RE2 syntax, all groups must be non-capturing.
**Example of `coverage`**:
```yaml
job1:
script: rspec
coverage: '/Code coverage: \d+\.\d+/'
coverage: '/Code coverage: \d+(?:\.\d+)?/'
```
In this example:
1. GitLab checks the job log for a match with the regular expression. A line
like `Code coverage: 67.89% of lines covered` would match.
1. GitLab then checks the matched fragment to find a match to `\d+(\.\d+)?`.
1. GitLab then checks the matched fragment to find a match to `\d+(?:\.\d+)?`.
The sample matching line above gives a code coverage of `67.89`.
**Additional details**:

View File

@ -195,5 +195,5 @@ end
```
Using a foreign key as primary key saves space but can make
[batch counting](../internal_analytics/service_ping/implement.md#batch-counters) in [Service Ping](../service_ping/index.md) less efficient.
[batch counting](../internal_analytics/service_ping/implement.md#batch-counters) in [Service Ping](../internal_analytics/service_ping/index.md) less efficient.
Consider using a regular `id` column if the table is relevant for Service Ping.

View File

@ -281,7 +281,7 @@ about contexts now.
We can assume we run the experiment in one or a few places, but
track events potentially in many places. The tracking call remains the same, with
the arguments you would usually use when
[tracking events using snowplow](../snowplow/index.md). The easiest example
[tracking events using snowplow](../internal_analytics/snowplow/index.md). The easiest example
of tracking an event in Ruby would be:
```ruby

View File

@ -163,8 +163,8 @@ The following integration guides are internal. Some integrations require access
## Analytics Instrumentation guides
- [Analytics Instrumentation guide](https://about.gitlab.com/handbook/product/analytics-instrumentation-guide/)
- [Service Ping guide](service_ping/index.md)
- [Snowplow guide](snowplow/index.md)
- [Service Ping guide](internal_analytics/service_ping/index.md)
- [Snowplow guide](internal_analytics/snowplow/index.md)
## Experiment guide

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/implement.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/implement.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/index.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/index.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/metrics_dictionary.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/metrics_dictionary.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/metrics_instrumentation.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/metrics_instrumentation.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/metrics_lifecycle.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/metrics_lifecycle.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/performance_indicator_metrics.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/performance_indicator_metrics.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/review_guidelines.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/review_guidelines.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/troubleshooting.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/troubleshooting.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/service_ping/usage_data.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/service_ping/usage_data.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/snowplow/event_dictionary_guide.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/snowplow/event_dictionary_guide.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/snowplow/implementation.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/snowplow/implementation.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/snowplow/index.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/snowplow/index.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/snowplow/infrastructure.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/snowplow/infrastructure.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/snowplow/review_guidelines.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/snowplow/review_guidelines.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/snowplow/schemas.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/snowplow/schemas.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -1,11 +0,0 @@
---
redirect_to: '../internal_analytics/snowplow/troubleshooting.md'
remove_date: '2023-08-20'
---
This document was moved to [another location](../internal_analytics/snowplow/troubleshooting.md).
<!-- This redirect file can be deleted after <2023-08-20>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html

View File

@ -30,7 +30,7 @@ integrates GitLab with JetBrains IDEs. The following JetBrains IDEs are supporte
## Supported features
GitLab for JetBrains supports [GitLab Duo Code Suggestions](../../user/project/repository/code_suggestions.md).
GitLab for JetBrains supports [GitLab Duo Code Suggestions](../../user/project/repository/code_suggestions/index.md).
## Download the extension

View File

@ -13,7 +13,7 @@ integrates GitLab with Neovim. The following Neovim versions are supported:
## Supported features
GitLab for Neovim supports [GitLab Duo Code Suggestions](../../user/project/repository/code_suggestions.md).
GitLab for Neovim supports [GitLab Duo Code Suggestions](../../user/project/repository/code_suggestions/index.md).
## Install and configure the extension

View File

@ -14,7 +14,7 @@ integrates GitLab with Visual Studio. The following Visual Studio versions are s
## Supported features
GitLab for Visual Studio supports [GitLab Duo Code Suggestions](../../user/project/repository/code_suggestions.md).
GitLab for Visual Studio supports [GitLab Duo Code Suggestions](../../user/project/repository/code_suggestions/index.md).
## Download the extension

View File

@ -22,7 +22,7 @@ do more day-to-day tasks in Visual Studio Code, such as:
and paste snippets to, and from, your editor.
- [Browse repositories](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow#browse-a-repository-without-cloning)
without cloning them.
- [Receive Code Suggestions](../../user/project/repository/code_suggestions.md).
- [Receive Code Suggestions](../../user/project/repository/code_suggestions/index.md).
- [View Security findings](https://marketplace.visualstudio.com/items?itemName=gitlab.gitlab-workflow#security-findings).
## Download the extension
@ -36,7 +36,7 @@ you can [configure](https://marketplace.visualstudio.com/items?itemName=GitLab.g
- [Features to display or hide](https://gitlab.com/gitlab-org/gitlab-vscode-extension#extension-settings).
- [Self-signed certificate](https://marketplace.visualstudio.com/items?itemName=GitLab.gitlab-workflow#self-signed-certificates) information.
- [Code Suggestions](../../user/project/repository/code_suggestions.md).
- [Code Suggestions](../../user/project/repository/code_suggestions/index.md).
## Report issues with the extension

View File

@ -1,11 +0,0 @@
---
redirect_to: 'https://docs.gitlab.com/charts/'
remove_date: '2023-09-09'
---
This document was moved to [another location](https://docs.gitlab.com/charts/).
<!-- This redirect file can be deleted after <2023-09-09>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
stage: Govern
group: Authentication and Authorization
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-15'
redirect_to: '../administration/auth/index.md'
---
# CAS OmniAuth provider (removed) **(FREE SELF)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/369127)
in GitLab 15.3 and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/369128)
in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../index.md'
---
# Set up alerts for Prometheus metrics (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# GitLab-defined metrics dashboards (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# Developing templates for custom dashboards (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# Custom dashboards (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# Panel types for dashboards (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# Dashboard settings (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# Templating variables for metrics dashboards (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# Using variables (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# Dashboard YAML properties (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../../index.md'
---
# Unit formats reference (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../index.md'
---
# Embedding metric charts within GitLab Flavored Markdown (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../index.md'
---
# Embed Grafana panels in Markdown (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.
Use [embed charts](https://gitlab.com/groups/gitlab-org/opstrace/-/epics/33) instead.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2023-08-22'
redirect_to: '../index.md'
---
# Monitor your environment's metrics (removed) **(FREE ALL)**
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346541) in GitLab 14.7
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/399231) in 16.0.

View File

@ -1,11 +0,0 @@
---
redirect_to: 'experiment-beta-support.md'
remove_date: '2023-09-07'
---
This document was moved to [another location](experiment-beta-support.md).
<!-- This redirect file can be deleted after <2023-09-07>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

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