Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
340f85512a
commit
c70fec25f8
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
f521e116b2fb4731145b732e8a372f9db99ef986
|
||||
16cd7e7fa2bb9afdd7061ae6187f739dc2fe120f
|
||||
|
|
|
|||
2
Gemfile
2
Gemfile
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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"},
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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" />
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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.',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -84,3 +84,5 @@ module RestrictedSignup
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
::RestrictedSignup.prepend_mod
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
|
|
|
|||
|
|
@ -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') } }
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -7,5 +7,3 @@
|
|||
%ul
|
||||
- viewer.errors.each do |error|
|
||||
%li= error
|
||||
|
||||
= link_to _('Learn more'), help_page_path('operations/metrics/dashboards/index.md')
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
|
|
@ -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' }
|
||||
|
|
|
|||
|
|
@ -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 }
|
||||
|
|
|
|||
|
|
@ -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|
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1 @@
|
|||
af511c9616f7f44474a8b4cd04f05c36f387a7b94badc4a5b1325a1e7425de46
|
||||
|
|
@ -0,0 +1 @@
|
|||
91ac60df233911ad7d770eaeb4736b35dab7ba335eba11824cb114a1cfa97826
|
||||
|
|
@ -0,0 +1 @@
|
|||
9702393eb6db18d5d3d106c0a77c21419af828fe5a422dd5c06a2621ef10cf03
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 -->
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 -->
|
||||
|
|
@ -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 -->
|
||||
|
|
@ -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 -->
|
||||
|
|
@ -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**:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 -->
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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
Loading…
Reference in New Issue