Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2025-02-07 15:13:23 +00:00
parent 1dfe61a9c1
commit 6c522f75d4
229 changed files with 1006 additions and 737 deletions

View File

@ -48,8 +48,8 @@
{"name":"base32","version":"0.3.4","platform":"ruby","checksum":"cb9810ab7c79862ed6ead254b3a44fa2535d088396cd412eef38bdc206055aba"},
{"name":"base64","version":"0.2.0","platform":"ruby","checksum":"0f25e9b21a02a0cc0cea8ef92b2041035d39350946e8789c562b2d1a3da01507"},
{"name":"batch-loader","version":"2.0.5","platform":"ruby","checksum":"964bf638b8f498bab40abaafc6f89c057b2e02aa25b64fc1ec12872ad6bff213"},
{"name":"bcrypt","version":"3.1.18","platform":"java","checksum":"5464e06c00cb6bd3ff982feef4cb7f1efc9b302753cbaf12e73512d8f401f2d2"},
{"name":"bcrypt","version":"3.1.18","platform":"ruby","checksum":"154de0b0b089e56d5980c5037ad85fc9554cfbf4996538673c1ddbc9b61b1f11"},
{"name":"bcrypt","version":"3.1.20","platform":"java","checksum":"8236dff31f6f36cffe334939e4ea59c41e1c94e2e246c01783575fa6df40373f"},
{"name":"bcrypt","version":"3.1.20","platform":"ruby","checksum":"8410f8c7b3ed54a3c00cd2456bf13917d695117f033218e2483b2e40b0784099"},
{"name":"benchmark","version":"0.2.0","platform":"ruby","checksum":"5f7087b794613abdd3ac9c13f4351f65b164bcb15ced2ad29508e365f9b28c77"},
{"name":"benchmark-ips","version":"2.14.0","platform":"ruby","checksum":"b72bc8a65d525d5906f8cd94270dccf73452ee3257a32b89fbd6684d3e8a9b1d"},
{"name":"benchmark-malloc","version":"0.2.0","platform":"ruby","checksum":"37c68f0435261634026f584d79956a35325a3027e3e6b4cc8d7575aa10537e6b"},

View File

@ -371,7 +371,7 @@ GEM
base32 (0.3.4)
base64 (0.2.0)
batch-loader (2.0.5)
bcrypt (3.1.18)
bcrypt (3.1.20)
benchmark (0.2.0)
benchmark-ips (2.14.0)
benchmark-malloc (0.2.0)

View File

@ -48,8 +48,8 @@
{"name":"base32","version":"0.3.4","platform":"ruby","checksum":"cb9810ab7c79862ed6ead254b3a44fa2535d088396cd412eef38bdc206055aba"},
{"name":"base64","version":"0.2.0","platform":"ruby","checksum":"0f25e9b21a02a0cc0cea8ef92b2041035d39350946e8789c562b2d1a3da01507"},
{"name":"batch-loader","version":"2.0.5","platform":"ruby","checksum":"964bf638b8f498bab40abaafc6f89c057b2e02aa25b64fc1ec12872ad6bff213"},
{"name":"bcrypt","version":"3.1.18","platform":"java","checksum":"5464e06c00cb6bd3ff982feef4cb7f1efc9b302753cbaf12e73512d8f401f2d2"},
{"name":"bcrypt","version":"3.1.18","platform":"ruby","checksum":"154de0b0b089e56d5980c5037ad85fc9554cfbf4996538673c1ddbc9b61b1f11"},
{"name":"bcrypt","version":"3.1.20","platform":"java","checksum":"8236dff31f6f36cffe334939e4ea59c41e1c94e2e246c01783575fa6df40373f"},
{"name":"bcrypt","version":"3.1.20","platform":"ruby","checksum":"8410f8c7b3ed54a3c00cd2456bf13917d695117f033218e2483b2e40b0784099"},
{"name":"benchmark","version":"0.4.0","platform":"ruby","checksum":"0f12f8c495545e3710c3e4f0480f63f06b4c842cc94cec7f33a956f5180e874a"},
{"name":"benchmark-ips","version":"2.14.0","platform":"ruby","checksum":"b72bc8a65d525d5906f8cd94270dccf73452ee3257a32b89fbd6684d3e8a9b1d"},
{"name":"benchmark-malloc","version":"0.2.0","platform":"ruby","checksum":"37c68f0435261634026f584d79956a35325a3027e3e6b4cc8d7575aa10537e6b"},
@ -577,7 +577,7 @@
{"name":"rbs","version":"3.6.1","platform":"ruby","checksum":"ed7273d018556844583d1785ac54194e67eec594d68e317d57fa90ad035532c0"},
{"name":"rbtrace","version":"0.5.1","platform":"ruby","checksum":"e8cba64d462bfb8ba102d7be2ecaacc789247d52ac587d8003549d909cb9c5dc"},
{"name":"rchardet","version":"1.8.0","platform":"ruby","checksum":"693acd5253d5ade81a51940697955f6dd4bb2f0d245bda76a8e23deec70a52c7"},
{"name":"rdoc","version":"6.11.0","platform":"ruby","checksum":"bec66fb9b019be64f7ba7d2cd2aecb283a3a01fef23a95b33e2349c6d1aa0040"},
{"name":"rdoc","version":"6.12.0","platform":"ruby","checksum":"7d6f706e070bffa5d18a448f24076cbfb34923a99c1eab842aa18e6ca69f56e0"},
{"name":"re2","version":"2.15.0","platform":"aarch64-linux-gnu","checksum":"ed3fe87adbc637373268d2a1b69f07def5079535dd961db735fdfac8fa63520f"},
{"name":"re2","version":"2.15.0","platform":"aarch64-linux-musl","checksum":"edf696d3a4587f580828e99cf36b7e04a86e0ebe103f704955b310a3f61e69de"},
{"name":"re2","version":"2.15.0","platform":"arm-linux-gnu","checksum":"dbe53c65859a868b42297939daeb610806ae6b1181ff09d1c454e1cdf86ebbc0"},

View File

@ -383,7 +383,7 @@ GEM
base32 (0.3.4)
base64 (0.2.0)
batch-loader (2.0.5)
bcrypt (3.1.18)
bcrypt (3.1.20)
benchmark (0.4.0)
benchmark-ips (2.14.0)
benchmark-malloc (0.2.0)
@ -1578,7 +1578,7 @@ GEM
msgpack (>= 0.4.3)
optimist (>= 3.0.0)
rchardet (1.8.0)
rdoc (6.11.0)
rdoc (6.12.0)
psych (>= 4.0.0)
re2 (2.15.0)
mini_portile2 (~> 2.8.7)

View File

@ -87,7 +87,7 @@ export default {
},
dropzoneAllowList: ['.csv'],
docsLink: helpPagePath('user/project/import/index', {
anchor: 'reassign-contributions-and-memberships',
anchor: 'request-reassignment-by-using-a-csv-file',
}),
i18n: {
description: s__(

View File

@ -3,7 +3,7 @@ import { __ } from '~/locale';
export default {
i18n: {
headerText: __('Activity'),
headerText: __('Comments'),
},
name: 'WikiNotesActivityHeader',
};

View File

@ -6,59 +6,17 @@ import MultiStepFormTemplate from '~/vue_shared/components/multi_step_form_templ
import SingleChoiceSelector from '~/vue_shared/components/single_choice_selector.vue';
import SingleChoiceSelectorItem from '~/vue_shared/components/single_choice_selector_item.vue';
import { OPTIONS } from '../constants';
import NewProjectDestinationSelect from './project_destination_select.vue';
import Breadcrumb from './form_breadcrumb.vue';
import CommandLine from './command_line.vue';
const OPTIONS = {
blank: {
key: 'blank',
value: 'blank_project',
selector: '#blank-project-pane',
title: s__('ProjectsNew|Create blank project'),
description: s__(
'ProjectsNew|Create a blank project to store your files, plan your work, and collaborate on code, among other things.',
),
},
template: {
key: 'template',
value: 'create_from_template',
selector: '#create-from-template-pane',
title: s__('ProjectsNew|Create from template'),
description: s__(
'ProjectsNew|Create a project pre-populated with the necessary files to get you started quickly.',
),
},
ci: {
key: 'ci',
value: 'cicd_for_external_repo',
selector: '#ci-cd-project-pane',
title: s__('ProjectsNew|Run CI/CD for external repository'),
description: s__('ProjectsNew|Connect your external repository to GitLab CI/CD.'),
},
import: {
key: 'import',
value: 'import_project',
selector: '#import-project-pane',
title: s__('ProjectsNew|Import project'),
description: s__(
'ProjectsNew|Migrate your data from an external source like GitHub, Bitbucket, or another instance of GitLab.',
),
disabledMessage: s__(
'ProjectsNew|Contact an administrator to enable options for importing your project',
),
},
transfer: {
key: 'transfer',
value: 'transfer_project',
selector: '#transfer-project-pane',
title: s__('ProjectsNew|Direct transfer projects with a top-level Group'),
description: s__('ProjectsNew|Migrate your data from another GitLab instance.'),
disabledMessage: s__('ProjectsNew|Available only for projects within groups'),
},
};
import BlankProjectForm from './blank_project_form.vue';
import TemplateProjectForm from './template_project_form.vue';
import CiCdProjectForm from './ci_cd_project_form.vue';
import ImportProjectForm from './import_project_form.vue';
export default {
OPTIONS,
components: {
GlButton,
GlButtonGroup,
@ -71,6 +29,10 @@ export default {
NewProjectDestinationSelect,
Breadcrumb,
CommandLine,
BlankProjectForm,
TemplateProjectForm,
CiCdProjectForm,
ImportProjectForm,
},
directives: {
SafeHtml,
@ -154,6 +116,7 @@ export default {
rootUrl: this.rootPath,
};
},
computed: {
isPersonalProject() {
return this.selectedNamespace === this.userNamespaceId;
@ -177,7 +140,17 @@ export default {
},
);
},
availableProjectTypes() {
return [
OPTIONS.blank,
OPTIONS.template,
...(this.canImportProjects && this.importSourcesEnabled ? [OPTIONS.import] : []),
...(this.isCiCdAvailable ? [OPTIONS.ci] : []),
OPTIONS.transfer,
];
},
},
methods: {
choosePersonalNamespace() {
this.selectedNamespace = this.userNamespaceId;
@ -186,7 +159,6 @@ export default {
this.selectedNamespace = null;
},
},
OPTIONS,
};
</script>
@ -196,10 +168,7 @@ export default {
<multi-step-form-template :title="__('Create new project')" :current-step="1">
<template #form>
<gl-form-group
v-if="canSelectNamespace"
:label="s__('ProjectNew|What do you want to create?')"
>
<gl-form-group :label="s__('ProjectNew|What do you want to create?')">
<gl-button-group class="gl-w-full">
<gl-button
category="primary"
@ -238,31 +207,35 @@ export default {
</gl-form-group>
<single-choice-selector v-if="canChooseOption" checked="blank_project">
<single-choice-selector-item v-bind="$options.OPTIONS.blank" />
<single-choice-selector-item v-bind="$options.OPTIONS.template" />
<single-choice-selector-item
v-if="canImportProjects && importSourcesEnabled"
v-bind="$options.OPTIONS.ci"
/>
<single-choice-selector-item v-if="isCiCdAvailable" v-bind="$options.OPTIONS.import">
{{ $options.OPTIONS.import.title }}
<div class="gl-flex gl-gap-2">
<gl-icon name="tanuki" />
<gl-icon name="github" />
<gl-icon name="bitbucket" />
<gl-icon name="gitea" />
v-for="type in availableProjectTypes"
v-bind="type"
:key="type.key"
>
{{ type.title }}
<div v-if="type.icons" class="gl-flex gl-gap-2">
<gl-icon v-for="icon in type.icons" :key="icon" :name="icon" />
</div>
</single-choice-selector-item>
<single-choice-selector-item v-bind="$options.OPTIONS.transfer" :disabled="true" />
</single-choice-selector>
<gl-alert v-else variant="danger" :dismissible="false">
{{ errorMessage }}
</gl-alert>
</template>
<template #next>
<gl-button category="primary" variant="confirm" size="medium">
{{ __('Next step') }}
</gl-button>
</template>
<template #footer>
<div v-if="newProjectGuidelines" v-safe-html="newProjectGuidelines" class="gl-mb-6"></div>
<command-line v-if="isPersonalProject" />
</template>
</multi-step-form-template>
<blank-project-form :title="$options.OPTIONS.blank.title" />
<template-project-form :title="$options.OPTIONS.template.title" />
<ci-cd-project-form :title="$options.OPTIONS.ci.title" />
<import-project-form :title="$options.OPTIONS.import.title" />
</div>
</template>

View File

@ -0,0 +1,32 @@
<script>
import { GlButton } from '@gitlab/ui';
import MultiStepFormTemplate from '~/vue_shared/components/multi_step_form_template.vue';
export default {
components: {
GlButton,
MultiStepFormTemplate,
},
props: {
title: {
type: String,
required: true,
},
},
};
</script>
<template>
<multi-step-form-template :title="title" :current-step="2" :steps-total="2">
<template #next>
<gl-button category="primary" variant="confirm" size="medium" :disabled="true">
{{ __('Create project') }}
</gl-button>
</template>
<template #back>
<gl-button category="primary" variant="default" size="medium">
{{ __('Go back') }}
</gl-button>
</template>
</multi-step-form-template>
</template>

View File

@ -0,0 +1,32 @@
<script>
import { GlButton } from '@gitlab/ui';
import MultiStepFormTemplate from '~/vue_shared/components/multi_step_form_template.vue';
export default {
components: {
GlButton,
MultiStepFormTemplate,
},
props: {
title: {
type: String,
required: true,
},
},
};
</script>
<template>
<multi-step-form-template :title="title" :current-step="2" :steps-total="2">
<template #next>
<gl-button category="primary" variant="confirm" size="medium" :disabled="true">
{{ __('Create project') }}
</gl-button>
</template>
<template #back>
<gl-button category="primary" variant="default" size="medium">
{{ __('Go back') }}
</gl-button>
</template>
</multi-step-form-template>
</template>

View File

@ -0,0 +1,32 @@
<script>
import { GlButton } from '@gitlab/ui';
import MultiStepFormTemplate from '~/vue_shared/components/multi_step_form_template.vue';
export default {
components: {
GlButton,
MultiStepFormTemplate,
},
props: {
title: {
type: String,
required: true,
},
},
};
</script>
<template>
<multi-step-form-template :title="title" :current-step="2">
<template #next>
<gl-button category="primary" variant="confirm" size="medium" :disabled="true">
{{ __('Next step') }}
</gl-button>
</template>
<template #back>
<gl-button category="primary" variant="default" size="medium">
{{ __('Go back') }}
</gl-button>
</template>
</multi-step-form-template>
</template>

View File

@ -0,0 +1,32 @@
<script>
import { GlButton } from '@gitlab/ui';
import MultiStepFormTemplate from '~/vue_shared/components/multi_step_form_template.vue';
export default {
components: {
GlButton,
MultiStepFormTemplate,
},
props: {
title: {
type: String,
required: true,
},
},
};
</script>
<template>
<multi-step-form-template :title="title" :current-step="2" :steps-total="3">
<template #next>
<gl-button category="primary" variant="confirm" :disabled="true">
{{ __('Next step') }}
</gl-button>
</template>
<template #back>
<gl-button category="primary" variant="default">
{{ __('Go back') }}
</gl-button>
</template>
</multi-step-form-template>
</template>

View File

@ -0,0 +1,51 @@
import { s__ } from '~/locale';
export const OPTIONS = {
blank: {
key: 'blank',
value: 'blank_project',
selector: '#blank-project-pane',
title: s__('ProjectsNew|Create blank project'),
description: s__(
'ProjectsNew|Create a blank project to store your files, plan your work, and collaborate on code, among other things.',
),
},
template: {
key: 'template',
value: 'create_from_template',
selector: '#create-from-template-pane',
title: s__('ProjectsNew|Create from template'),
description: s__(
'ProjectsNew|Create a project pre-populated with the necessary files to get you started quickly.',
),
},
ci: {
key: 'ci',
value: 'cicd_for_external_repo',
selector: '#ci-cd-project-pane',
title: s__('ProjectsNew|Run CI/CD for external repository'),
description: s__('ProjectsNew|Connect your external repository to GitLab CI/CD.'),
},
import: {
key: 'import',
value: 'import_project',
selector: '#import-project-pane',
title: s__('ProjectsNew|Import project'),
description: s__(
'ProjectsNew|Migrate your data from an external source like GitHub, Bitbucket, or another instance of GitLab.',
),
icons: ['tanuki', 'github', 'bitbucket', 'gitea'],
disabledMessage: s__(
'ProjectsNew|Contact an administrator to enable options for importing your project',
),
},
transfer: {
key: 'transfer',
value: 'transfer_project',
selector: '#transfer-project-pane',
title: s__('ProjectsNew|Direct transfer projects with a top-level Group'),
description: s__('ProjectsNew|Migrate your data from another GitLab instance.'),
disabled: true,
disabledMessage: s__('ProjectsNew|Available only for projects within groups'),
},
};

View File

@ -36,34 +36,11 @@ export default {
originalBranch: {
default: '',
},
canModifyBlob: {
default: () => false,
},
canModifyBlobWithWebIde: {
default: () => false,
blobInfo: {
default: () => DEFAULT_BLOB_INFO.repository.blobs.nodes[0],
},
},
props: {
name: {
type: String,
required: true,
},
path: {
type: String,
required: true,
},
replacePath: {
type: String,
required: true,
},
deletePath: {
type: String,
required: true,
},
canPushToBranch: {
type: Boolean,
required: true,
},
isEmptyRepository: {
type: Boolean,
required: true,
@ -131,10 +108,10 @@ export default {
return uniqueId('delete-modal');
},
replaceCommitMessage() {
return sprintf(__('Replace %{name}'), { name: this.name });
return sprintf(__('Replace %{name}'), { name: this.blobInfo.name });
},
deleteModalCommitMessage() {
return sprintf(__('Delete %{name}'), { name: this.name });
return sprintf(__('Delete %{name}'), { name: this.blobInfo.name });
},
canFork() {
const { createMergeRequestIn, forkProject } = this.userPermissions;
@ -142,10 +119,10 @@ export default {
return this.isLoggedIn && !this.isUsingLfs && createMergeRequestIn && forkProject;
},
showSingleFileEditorForkSuggestion() {
return this.canFork && !this.canModifyBlob;
return this.canFork && !this.blobInfo.canModifyBlob;
},
showWebIdeForkSuggestion() {
return this.canFork && !this.canModifyBlobWithWebIde;
return this.canFork && !this.blobInfo.canModifyBlobWithWebIde;
},
showForkSuggestion() {
return this.showSingleFileEditorForkSuggestion || this.showWebIdeForkSuggestion;
@ -168,8 +145,8 @@ export default {
<gl-disclosure-dropdown-group>
<lock-file-dropdown-item
v-if="glFeatures.fileLocks"
:name="name"
:path="path"
:name="blobInfo.name"
:path="blobInfo.path"
:project-path="projectPath"
:path-locks="pathLocks"
:user-permissions="userPermissions"
@ -187,19 +164,19 @@ export default {
:target-branch="targetBranch || ref"
:original-branch="originalBranch || ref"
:can-push-code="userPermissions.pushCode"
:can-push-to-branch="canPushToBranch"
:path="path"
:replace-path="replacePath"
:can-push-to-branch="blobInfo.canCurrentUserPushToBranch"
:path="blobInfo.path"
:replace-path="blobInfo.replacePath"
/>
<delete-blob-modal
:ref="deleteModalId"
:delete-path="deletePath"
:delete-path="blobInfo.webPath"
:modal-id="deleteModalId"
:commit-message="deleteModalCommitMessage"
:target-branch="targetBranch || ref"
:original-branch="originalBranch || ref"
:can-push-code="userPermissions.pushCode"
:can-push-to-branch="canPushToBranch"
:can-push-to-branch="blobInfo.canCurrentUserPushToBranch"
:empty-repo="isEmptyRepository"
:is-using-lfs="isUsingLfs"
/>

View File

@ -23,7 +23,7 @@ import { FIND_FILE_BUTTON_CLICK } from '~/tracking/constants';
import { updateElementsVisibility } from '~/repository/utils/dom';
import blobControlsQuery from '~/repository/queries/blob_controls.query.graphql';
import { getRefType } from '~/repository/utils/ref_type';
import { TEXT_FILE_TYPE } from '../../constants';
import { TEXT_FILE_TYPE, DEFAULT_BLOB_INFO } from '../../constants';
import OverflowMenu from './blob_overflow_menu.vue';
export default {
@ -64,8 +64,7 @@ export default {
},
provide() {
return {
canModifyBlob: computed(() => this.blobInfo?.canModifyBlob ?? false),
canModifyBlobWithWebIde: computed(() => this.blobInfo?.canModifyBlobWithWebIde ?? false),
blobInfo: computed(() => this.blobInfo ?? DEFAULT_BLOB_INFO.repository.blobs.nodes[0]),
};
},
props: {
@ -227,22 +226,11 @@ export default {
<overflow-menu
v-if="!isLoadingRepositoryBlob && glFeatures.blobOverflowMenu"
:name="blobInfo.name"
:project-path="projectPath"
:path="blobInfo.path"
:raw-path="rawPath"
:rich-viewer="blobInfo.richViewer"
:simple-viewer="blobInfo.simpleViewer"
:is-binary="isBinaryFileType"
:environment-name="blobInfo.environmentFormattedExternalUrl"
:environment-path="blobInfo.environmentExternalUrlForRouteMap"
:is-empty="isEmpty"
:override-copy="true"
:archived="blobInfo.archived"
:replace-path="blobInfo.replacePath"
:web-path="blobInfo.webPath"
:is-empty-repository="project.repository.empty"
:can-current-user-push-to-branch="blobInfo.canCurrentUserPushToBranch"
:is-using-lfs="isUsingLfs"
@copy="onCopy"
/>

View File

@ -2,6 +2,7 @@
import { GlDisclosureDropdownItem, GlDisclosureDropdownGroup } from '@gitlab/ui';
import { sprintf, s__, __ } from '~/locale';
import { setUrlParams, relativePathToAbsolute, getBaseURL } from '~/lib/utils/url_utility';
import { DEFAULT_BLOB_INFO } from '~/repository/constants';
export const i18n = {
btnCopyContentsTitle: __('Copy file contents'),
@ -22,20 +23,11 @@ export default {
canDownloadCode: {
default: true,
},
blobInfo: {
default: () => DEFAULT_BLOB_INFO.repository.blobs.nodes[0],
},
},
props: {
name: {
type: String,
required: true,
},
path: {
type: String,
required: true,
},
rawPath: {
type: String,
required: true,
},
activeViewerType: {
type: String,
required: true,
@ -56,16 +48,6 @@ export default {
type: Boolean,
required: true,
},
environmentName: {
type: String,
required: false,
default: null,
},
environmentPath: {
type: String,
required: false,
default: null,
},
},
computed: {
copyFileContentsItem() {
@ -81,7 +63,7 @@ export default {
openRawItem() {
return {
text: i18n.btnRawTitle,
href: this.rawPath,
href: this.blobInfo.rawPath || this.blobInfo.externalStorageUrl,
extraAttrs: {
target: '_blank',
},
@ -100,7 +82,7 @@ export default {
environmentItem() {
return {
text: this.environmentTitle,
href: this.environmentPath,
href: this.blobInfo.environmentExternalUrlForRouteMap,
extraAttrs: {
target: '_blank',
'data-testid': 'environment',
@ -120,14 +102,20 @@ export default {
return `[data-blob-hash="${this.blobHash}"]`;
},
downloadUrl() {
return setUrlParams({ inline: false }, relativePathToAbsolute(this.rawPath, getBaseURL()));
return setUrlParams(
{ inline: false },
relativePathToAbsolute(this.blobInfo.rawPath, getBaseURL()),
);
},
showEnvironmentItem() {
return this.environmentName && this.environmentPath;
return (
this.blobInfo.environmentFormattedExternalUrl &&
this.blobInfo.environmentExternalUrlForRouteMap
);
},
environmentTitle() {
return sprintf(s__('BlobViewer|View on %{environmentName}'), {
environmentName: this.environmentName,
environmentName: this.blobInfo.environmentFormattedExternalUrl,
});
},
},

View File

@ -1,7 +1,7 @@
<script>
import { GlDisclosureDropdown, GlTooltipDirective } from '@gitlab/ui';
import { computed } from 'vue';
import { sprintf, s__, __ } from '~/locale';
import { __ } from '~/locale';
import { isLoggedIn } from '~/lib/utils/common_utils';
import { SIMPLE_BLOB_VIEWER, RICH_BLOB_VIEWER } from '~/blob/components/constants';
import BlobDefaultActionsGroup from './blob_default_actions_group.vue';
@ -21,67 +21,22 @@ export default {
directives: {
GlTooltipDirective,
},
inject: ['canModifyBlob', 'canModifyBlobWithWebIde'],
inject: ['blobInfo'],
provide() {
return {
canModifyBlob: computed(() => this.canModifyBlob),
canModifyBlobWithWebIde: computed(() => this.canModifyBlobWithWebIde),
blobInfo: computed(() => this.blobInfo ?? {}),
};
},
props: {
name: {
type: String,
required: true,
},
archived: {
type: Boolean,
required: true,
},
projectPath: {
type: String,
required: true,
},
path: {
type: String,
required: true,
},
rawPath: {
type: String,
required: true,
},
replacePath: {
type: String,
required: true,
},
webPath: {
type: String,
required: true,
},
richViewer: {
type: Object,
required: false,
default: () => {},
},
simpleViewer: {
type: Object,
required: false,
default: () => {},
},
isBinary: {
type: Boolean,
required: false,
default: false,
},
environmentName: {
type: String,
required: false,
default: null,
},
environmentPath: {
type: String,
required: false,
default: null,
},
isEmpty: {
type: Boolean,
required: false,
@ -97,10 +52,6 @@ export default {
required: false,
default: false,
},
canCurrentUserPushToBranch: {
type: Boolean,
required: true,
},
isUsingLfs: {
type: Boolean,
required: false,
@ -123,16 +74,13 @@ export default {
return SIMPLE_BLOB_VIEWER;
},
viewer() {
return this.activeViewerType === RICH_BLOB_VIEWER ? this.richViewer : this.simpleViewer;
return this.activeViewerType === RICH_BLOB_VIEWER
? this.blobInfo.richViewer
: this.blobInfo.simpleViewer;
},
hasRenderError() {
return Boolean(this.viewer.renderError);
},
environmentTitle() {
return sprintf(s__('BlobViewer|View on %{environmentName}'), {
environmentName: this.environmentName,
});
},
},
methods: {
onCopy() {
@ -153,27 +101,17 @@ export default {
text-sr-only
>
<blob-button-group
v-if="isLoggedIn && !archived"
:path="path"
:name="name"
:replace-path="replacePath"
:delete-path="webPath"
:can-push-to-branch="canCurrentUserPushToBranch"
v-if="isLoggedIn && !blobInfo.archived"
:is-empty-repository="isEmptyRepository"
:project-path="projectPath"
:is-using-lfs="isUsingLfs"
/>
<blob-default-actions-group
:name="name"
:path="path"
:raw-path="rawPath"
:active-viewer-type="activeViewerType"
:has-render-error="hasRenderError"
:is-binary="isBinary"
:is-empty="isEmpty"
:override-copy="overrideCopy"
:environment-name="environmentName"
:environment-path="environmentPath"
@copy="onCopy"
/>
</gl-disclosure-dropdown>

View File

@ -98,7 +98,7 @@ export default {
<template #term
><code>{{ query.search }}</code></template
><template #groupNameLink
><gl-link :href="`${getBaseURL}/${groupInitialJson.name}`">{{
><gl-link :href="`${getBaseURL}/${groupInitialJson.full_path}`">{{
groupInitialJson.full_name
}}</gl-link></template
>
@ -118,7 +118,7 @@ export default {
/>
</template>
<template #ProjectWithGroupPathLink
><gl-link :href="`${getBaseURL}/${groupInitialJson.name}/${projectInitialJson.name}`">{{
><gl-link :href="`${getBaseURL}/${projectInitialJson.full_path}`">{{
projectInitialJson.name_with_namespace
}}</gl-link></template
>

View File

@ -17,7 +17,7 @@ export const storageTypeHelpPaths = {
snippets: helpPagePath('user/snippets', {
anchor: 'reduce-snippets-repository-size',
}),
wiki: helpPagePath('administration/wikis/index.md', {
wiki: helpPagePath('administration/wikis/_index.md', {
anchor: 'reduce-wiki-repository-size',
}),
};

View File

@ -249,7 +249,7 @@ export default {
<div
v-if="isFormUsedAndVisible"
class="gl-border-b gl-border-section gl-bg-section gl-p-5 gl-pt-4"
class="gl-border-b gl-border-section gl-bg-subtle gl-p-5 gl-pt-4"
data-testid="crud-form"
>
<slot name="form" :hide-form="hideForm"></slot>

View File

@ -6,21 +6,23 @@ export default {
props: {
checked: {
type: String,
required: true,
required: false,
default: undefined,
},
},
data() {
return {
checkedOptions: this.checked,
};
methods: {
onChange(value) {
this.$emit('change', value);
},
},
};
</script>
<template>
<gl-form-radio-group
v-model="checkedOptions"
:checked="checked"
class="multiple-choice-selector gl-border gl-block gl-rounded-base"
@change="onChange"
>
<slot></slot>
</gl-form-radio-group>

View File

@ -29,7 +29,7 @@
= sprite_icon('chevron-lg-down', css_class: '!-gl-mx-2 gl-hidden js-crud-collapsible-expand')
- if form?
.gl-p-5.gl-pt-4.gl-bg-section.gl-border-b.gl-border-section{ form_options_attrs }
.gl-p-5.gl-pt-4.gl-bg-subtle.gl-border-b.gl-border-section{ form_options_attrs }
= form
.crud-body.gl-mx-5.gl-my-4{ body_options_attrs }

View File

@ -49,7 +49,10 @@ module Mutations
def resolve(project_path:, **kwargs)
project = authorized_find!(project_path)
response = ::ContainerRegistry::Protection::CreateRuleService.new(project, current_user, kwargs).execute
response =
::ContainerRegistry::Protection::CreateRuleService
.new(project: project, current_user: current_user, params: kwargs)
.execute
{ container_protection_repository_rule: response.payload[:container_registry_protection_rule],
errors: response.errors }

View File

@ -57,7 +57,10 @@ module Mutations
raise_resource_not_available_error!("'container_registry_protected_tags' feature flag is disabled")
end
response = ::ContainerRegistry::Protection::CreateTagRuleService.new(project, current_user, kwargs).execute
response =
::ContainerRegistry::Protection::CreateTagRuleService
.new(project: project, current_user: current_user, params: kwargs)
.execute
{ container_protection_tag_rule: response[:container_protection_tag_rule],
errors: response.errors }

View File

@ -4,22 +4,43 @@ module Resolvers
module Projects
class BranchRulesResolver < BaseResolver
include LooksAhead
include ::Gitlab::Utils::StrongMemoize
type Types::Projects::BranchRuleType.connection_type, null: false
alias_method :project, :object
def resolve_with_lookahead(**args)
[*custom_branch_rules(args), *branch_rules]
end
private
# BranchRules for 'All branches' i.e. no associated ProtectedBranch
def custom_branch_rules(args)
return [] unless squash_settings_enabled?
[all_branches_rule]
end
def all_branches_rule
::Projects::AllBranchesRule.new(project)
end
strong_memoize_attr :all_branches_rule
def branch_rules
protected_branches.map do |protected_branch|
::Projects::BranchRule.new(project, protected_branch)
end
end
private
def protected_branches
apply_lookahead(project.all_protected_branches.sorted_by_name)
end
def squash_settings_enabled?
Feature.enabled?(:branch_rule_squash_settings, project)
end
end
end
end

View File

@ -9,7 +9,7 @@ module Ci
"test_report_summary_url" => test_report_summary(project, build),
"page_path" => project_job_path(project, build),
"project_path" => project.full_path,
"artifact_help_url" => help_page_path('user/gitlab_com/index.md', anchor: 'gitlab-cicd'),
"artifact_help_url" => help_page_path('user/gitlab_com/_index.md', anchor: 'gitlab-cicd'),
"deployment_help_url" => help_page_path('user/project/clusters/deploy_to_cluster.md', anchor: 'troubleshooting'),
"runner_settings_url" => project_runners_path(build.project, anchor: 'js-runners-settings'),
"retry_outdated_job_docs_url" => help_page_path('ci/pipelines/settings.md', anchor: 'prevent-outdated-deployment-jobs'),

View File

@ -23,15 +23,11 @@ module NavHelper
end
def page_gutter_class
merge_request_sidebar = current_controller?('merge_requests')
work_item_epic_page = current_controller?('epics') && @group.work_item_epics_enabled?
skip_right_sidebar_classes = merge_request_sidebar || work_item_epic_page
if (page_has_markdown? || current_path?('projects/merge_requests#diffs')) && !current_controller?('conflicts')
if cookies[:collapsed_gutter] == 'true'
["page-gutter", ('right-sidebar-collapsed' unless skip_right_sidebar_classes).to_s]
["page-gutter", ('right-sidebar-collapsed' unless skip_right_sidebar_classes?).to_s]
else
["page-gutter", ('right-sidebar-expanded' unless skip_right_sidebar_classes).to_s]
["page-gutter", ('right-sidebar-expanded' unless skip_right_sidebar_classes?).to_s]
end
elsif current_path?('jobs#show')
%w[page-gutter build-sidebar right-sidebar-expanded]
@ -83,6 +79,22 @@ module NavHelper
links
end
def merge_request_sidebar?
current_controller?('merge_requests')
end
def work_item_epic_page?
current_controller?('epics') && @group.work_item_epics_enabled?
end
def new_issue_look?
current_controller?('issues') && current_user&.user_preference&.use_work_items_view
end
def skip_right_sidebar_classes?
merge_request_sidebar? || work_item_epic_page? || new_issue_look?
end
end
NavHelper.prepend_mod_with('NavHelper')

View File

@ -2,7 +2,7 @@
module ContainerRegistry
module Protection
class CreateRuleService < BaseService
class CreateRuleService < BaseProjectService
ALLOWED_ATTRIBUTES = %i[
repository_path_pattern
minimum_access_level_for_push

View File

@ -2,7 +2,7 @@
module ContainerRegistry
module Protection
class CreateTagRuleService < BaseService
class CreateTagRuleService < BaseProjectService
ALLOWED_ATTRIBUTES = %i[
tag_name_pattern
minimum_access_level_for_push

View File

@ -3,14 +3,14 @@
%fieldset
.form-group
- pages_link_url = help_page_path('administration/pages/index.md', anchor: 'custom-domain-verification')
- pages_link_url = help_page_path('administration/pages/_index.md', anchor: 'custom-domain-verification')
- pages_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: pages_link_url }
= f.gitlab_ui_checkbox_component :pages_domain_verification_enabled,
s_("AdminSettings|Require users to prove ownership of custom domains"),
help_text: s_('AdminSettings|Domain verification is an essential security measure for public GitLab sites. Users are required to demonstrate they control a domain before it is enabled. %{link_start}Learn more%{link_end}.').html_safe % { link_start: pages_link_start, link_end: '</a>'.html_safe }
- if Gitlab.config.pages.access_control
.form-group
- pages_link_url = help_page_path('administration/pages/index.md', anchor: 'disable-public-access-to-all-pages-sites')
- pages_link_url = help_page_path('administration/pages/_index.md', anchor: 'disable-public-access-to-all-pages-sites')
- pages_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: pages_link_url }
= f.gitlab_ui_checkbox_component :force_pages_access_control,
s_("AdminSettings|Disable public access to Pages sites"),
@ -19,13 +19,13 @@
= f.label :max_pages_size, _('Maximum size of pages (MiB)'), class: 'label-bold'
= f.number_field :max_pages_size, class: 'form-control gl-form-input'
.form-text.gl-text-subtle
- link = link_to('', help_page_path('administration/pages/index.md', anchor: 'set-maximum-size-of-gitlab-pages-site-in-a-project'), target: '_blank', rel: 'noopener noreferrer')
- link = link_to('', help_page_path('administration/pages/_index.md', anchor: 'set-maximum-size-of-gitlab-pages-site-in-a-project'), target: '_blank', rel: 'noopener noreferrer')
= safe_format(s_('AdminSettings|Set the maximum size of GitLab Pages per project (0 for unlimited). %{link_start}Learn more%{link_end}.'), tag_pair(link, :link_start, :link_end))
.form-group
= f.label :max_pages_custom_domains_per_project, s_('AdminSettings|Maximum number of custom domains per project'), class: 'label-bold'
= f.number_field :max_pages_custom_domains_per_project, class: 'form-control gl-form-input'
.form-text.gl-text-subtle
- link = link_to('', help_page_path('administration/pages/index.md', anchor: 'set-maximum-number-of-gitlab-pages-custom-domains-for-a-project'), target: '_blank', rel: 'noopener noreferrer')
- link = link_to('', help_page_path('administration/pages/_index.md', anchor: 'set-maximum-number-of-gitlab-pages-custom-domains-for-a-project'), target: '_blank', rel: 'noopener noreferrer')
= safe_format(s_('AdminSettings|Set the maximum number of GitLab Pages custom domains per project (0 for unlimited). %{link_start}Learn more%{link_end}.'), tag_pair(link, :link_start, :link_end))
.form-group
= f.label :pages_extra_deployments_default_expiry_seconds, s_('AdminSettings|Default expiration time for parallel deployments (in seconds)'), class: 'label-bold'
@ -42,7 +42,7 @@
= f.label :lets_encrypt_notification_email, s_("AdminSettings|Let's Encrypt email"), class: 'label-bold'
= f.text_field :lets_encrypt_notification_email, class: 'form-control gl-form-input'
.form-text.gl-text-subtle
- link = link_to('', help_page_path('administration/pages/index.md', anchor: 'lets-encrypt-integration'), target: '_blank', rel: 'noopener noreferrer')
- link = link_to('', help_page_path('administration/pages/_index.md', anchor: 'lets-encrypt-integration'), target: '_blank', rel: 'noopener noreferrer')
= safe_format(s_("AdminSettings|A Let's Encrypt account will be configured for this GitLab instance using this email address. You will receive emails to warn of expiring certificates. %{link_start}Learn more%{link_end}."), tag_pair(link, :link_start, :link_end))
.form-group
- terms_of_service_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: lets_encrypt_terms_of_service_admin_application_settings_path }

View File

@ -3,6 +3,6 @@
expanded: expanded_by_default?) do |c|
- c.with_description do
= s_('SilentMode|Suppress outbound communication, such as emails, from GitLab.')
= link_to _('Learn more.'), help_page_path('administration/silent_mode/index.md'), target: '_blank', rel: 'noopener noreferrer'
= link_to _('Learn more.'), help_page_path('administration/silent_mode/_index.md'), target: '_blank', rel: 'noopener noreferrer'
- c.with_body do
#js-silent-mode-settings{ data: { "silent-mode-enabled" => @application_setting.silent_mode_enabled.to_s } }

View File

@ -105,7 +105,7 @@
= feature_entry(_('LDAP'),
enabled: Gitlab.config.ldap.enabled,
doc_href: help_page_path('administration/auth/ldap/index.md'))
doc_href: help_page_path('administration/auth/ldap/_index.md'))
= feature_entry(_('Gravatar'),
href: general_admin_application_settings_path(anchor: 'js-account-settings'),

View File

@ -6,4 +6,4 @@
dismissible: false,
variant: :warning) do |c|
- c.with_body do
= s_('SilentMode|All outbound communications are blocked. %{link_start}Learn more%{link_end}.').html_safe % { link_start: "<a href='#{help_page_path('administration/silent_mode/index.md')}' target='_blank' rel='noopener noreferrer'>".html_safe, link_end: '</a>'.html_safe }
= s_('SilentMode|All outbound communications are blocked. %{link_start}Learn more%{link_end}.').html_safe % { link_start: "<a href='#{help_page_path('administration/silent_mode/_index.md')}' target='_blank' rel='noopener noreferrer'>".html_safe, link_end: '</a>'.html_safe }

View File

@ -3,5 +3,5 @@
.text-content
%h4.text-center= _('There are no packages yet')
%p
- link = link_to('', help_page_path('administration/packages/index.md'), target: '_blank', rel: 'noopener noreferrer')
- link = link_to('', help_page_path('administration/packages/_index.md'), target: '_blank', rel: 'noopener noreferrer')
= safe_format(_('Learn how to %{no_packages_link_start}publish and share your packages%{no_packages_link_end} with GitLab.'), tag_pair(link, :no_packages_link_start, :no_packages_link_end))

View File

@ -13,7 +13,7 @@ DETAILS:
GitLab integrates with a number of [OmniAuth providers](../../integration/omniauth.md#supported-providers),
and the following external authentication and authorization providers:
- [LDAP](ldap/index.md): Includes Active Directory, Apple Open Directory, Open LDAP,
- [LDAP](ldap/_index.md): Includes Active Directory, Apple Open Directory, Open LDAP,
and 389 Server.
- [Google Secure LDAP](ldap/google_secure_ldap.md)
- [SAML for GitLab.com groups](../../user/group/saml_sso/index.md)

View File

@ -215,7 +215,7 @@ For self-compiled installations:
## Using encrypted credentials
You can optionally store the `bind_dn` and `password` in a separate encrypted configuration file using the
[same steps as the regular LDAP integration](index.md#use-encrypted-credentials).
[same steps as the regular LDAP integration](_index.md#use-encrypted-credentials).
<!-- ## Troubleshooting

View File

@ -118,8 +118,8 @@ established but GitLab doesn't show you LDAP users in the output, one of the
following is most likely true:
- The `bind_dn` user doesn't have enough permissions to traverse the user tree.
- The users don't fall under the [configured `base`](index.md#configure-ldap).
- The [configured `user_filter`](index.md#set-up-ldap-user-filter) blocks access to the users.
- The users don't fall under the [configured `base`](_index.md#configure-ldap).
- The [configured `user_filter`](_index.md#set-up-ldap-user-filter) blocks access to the users.
In this case, you con confirm which of the above is true using
[ldapsearch](#ldapsearch) with the existing LDAP configuration in your
@ -130,9 +130,9 @@ In this case, you con confirm which of the above is true using
A user can have trouble signing in for any number of reasons. To get started,
here are some questions to ask yourself:
- Does the user fall under the [configured `base`](index.md#configure-ldap) in
- Does the user fall under the [configured `base`](_index.md#configure-ldap) in
LDAP? The user must fall under this `base` to sign in.
- Does the user pass through the [configured `user_filter`](index.md#set-up-ldap-user-filter)?
- Does the user pass through the [configured `user_filter`](_index.md#set-up-ldap-user-filter)?
If one is not configured, this question can be ignored. If it is, then the
user must also pass through this filter to be allowed to sign in.
- Refer to our documentation on [debugging the `user_filter`](#debug-ldap-user-filter).
@ -249,7 +249,7 @@ To resolve this:
#### Debug LDAP user filter
[`ldapsearch`](#ldapsearch) allows you to test your configured
[user filter](index.md#set-up-ldap-user-filter)
[user filter](_index.md#set-up-ldap-user-filter)
to confirm that it returns the users you expect it to return.
```shell
@ -778,7 +778,7 @@ end; nil
## Expired license causes errors with multiple LDAP servers
Using [multiple LDAP servers](index.md#use-multiple-ldap-servers) requires a valid license. An expired license can
Using [multiple LDAP servers](_index.md#use-multiple-ldap-servers) requires a valid license. An expired license can
cause:
- `502` errors in the web interface.
@ -887,7 +887,7 @@ identical to what's configured in the `gitlab.rb`.
#### Use ldapsearch with `start_tls` encryption
The previous example performs an LDAP test in plaintext to port 389. If you are using [`start_tls` encryption](index.md#basic-configuration-settings), in
The previous example performs an LDAP test in plaintext to port 389. If you are using [`start_tls` encryption](_index.md#basic-configuration-settings), in
the `ldapsearch` command include:
- The `-Z` flag.
@ -905,7 +905,7 @@ ldapsearch -D "cn=admin,dc=ldap-testing,dc=example,dc=com" \
#### Use ldapsearch with `simple_tls` encryption
If you are using [`simple_tls` encryption](index.md#basic-configuration-settings) (usually on port 636), include the following in the `ldapsearch` command:
If you are using [`simple_tls` encryption](_index.md#basic-configuration-settings) (usually on port 636), include the following in the `ldapsearch` command:
- The LDAP server FQDN with the `-H` flag and the port.
- The full constructed URI.

View File

@ -9,7 +9,7 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab Self-Managed
If you have [configured LDAP to work with GitLab](index.md), GitLab can automatically synchronize
If you have [configured LDAP to work with GitLab](_index.md), GitLab can automatically synchronize
users and groups.
LDAP synchronization updates user and group information for existing GitLab users that have an LDAP identity assigned. It does not create new GitLab users through LDAP.
@ -436,7 +436,7 @@ When global group memberships lock is enabled:
To enable global group memberships lock:
1. [Configure LDAP](index.md#configure-ldap).
1. [Configure LDAP](_index.md#configure-ldap).
1. On the left sidebar, at the bottom, select **Admin**.
1. Select **Settings > General**.
1. Expand **Visibility and access controls**.
@ -448,7 +448,7 @@ By default, group members with the Owner role can manage [LDAP group synchroniza
GitLab administrators can remove this permission from group Owners:
1. [Configure LDAP](index.md#configure-ldap).
1. [Configure LDAP](_index.md#configure-ldap).
1. On the left sidebar, at the bottom, select **Admin**.
1. Select **Settings > General**.
1. Expand **Visibility and access controls**.
@ -732,7 +732,7 @@ By default, GitLab runs a worker once per day at 01:30 a.m. server time to
check and update GitLab users against LDAP.
WARNING:
Do not run the sync process too frequently as this could lead to multiple syncs running concurrently. Most installations do not need to modify the sync schedule. For more information, see the [LDAP Security documentation](index.md#security).
Do not run the sync process too frequently as this could lead to multiple syncs running concurrently. Most installations do not need to modify the sync schedule. For more information, see the [LDAP Security documentation](_index.md#security).
You can manually configure LDAP user sync times by setting the
following configuration values, in cron format. If needed, you can

View File

@ -57,7 +57,7 @@ on how GitLab creates this archive, see [Backup archive process](backup_archive_
## Related topics
- [Geo](../geo/index.md)
- [Geo](../geo/_index.md)
- [Disaster Recovery (Geo)](../geo/disaster_recovery/_index.md)
- [Migrating GitLab groups](../../user/group/import/index.md)
- [Import and migrate projects](../../user/project/import/index.md)

View File

@ -201,7 +201,7 @@ Changes to existing files during backup might cause issues on the GitLab instanc
A workaround of this issue, is either to:
- Transition the GitLab instance into [Maintenance Mode](../maintenance_mode/index.md).
- Transition the GitLab instance into [Maintenance Mode](../maintenance_mode/_index.md).
- Restrict traffic to the servers during backup to preserve instance resources.
We're investigating an alternative to the copy strategy, see [issue 428520](https://gitlab.com/gitlab-org/gitlab/-/issues/428520).

View File

@ -1394,7 +1394,7 @@ sudo -u git -H bundle exec rake gitlab:backup:create SKIP=repositories RAILS_ENV
For manually backing up the Git repository data on disk, there are multiple possible strategies:
- Use snapshots, such as the previous examples of Amazon EBS drive snapshots, or LVM snapshots + rsync.
- Use [GitLab Geo](../geo/index.md) and rely on the repository data on a Geo secondary site.
- Use [GitLab Geo](../geo/_index.md) and rely on the repository data on a Geo secondary site.
- [Prevent writes and copy the Git repository data](#prevent-writes-and-copy-the-git-repository-data).
- [Create an online backup by marking repositories as read-only (experimental)](#online-backup-through-marking-repositories-as-read-only-experimental).
@ -1407,7 +1407,7 @@ has a longer discussion explaining the potential problems.
To prevent writes to the Git repository data, there are two possible approaches:
- Use [maintenance mode](../maintenance_mode/index.md) to place GitLab in a read-only state.
- Use [maintenance mode](../maintenance_mode/_index.md) to place GitLab in a read-only state.
- Create explicit downtime by stopping all Gitaly services before backing up the repositories:
```shell

View File

@ -8,7 +8,7 @@ title: Migrate to a new server
<!-- some details borrowed from GitLab.com move from Azure to GCP detailed at https://gitlab.com/gitlab-com/migration/-/blob/master/.gitlab/issue_templates/failover.md -->
You can use GitLab backup and restore to migrate your instance to a new server. This section outlines a typical procedure for a GitLab deployment running on a single server.
If you're running GitLab Geo, an alternative option is [Geo disaster recovery for planned failover](../geo/disaster_recovery/planned_failover.md). You must make sure all sites meet the [Geo requirements](../geo/index.md#requirements-for-running-geo) before selecting Geo for the migration.
If you're running GitLab Geo, an alternative option is [Geo disaster recovery for planned failover](../geo/disaster_recovery/planned_failover.md). You must make sure all sites meet the [Geo requirements](../geo/_index.md#requirements-for-running-geo) before selecting Geo for the migration.
WARNING:
Avoid uncoordinated data processing by both the new and old servers, where multiple
@ -71,7 +71,7 @@ To prepare the new server:
## Prepare and transfer content from the old server
1. Ensure you have an up-to-date system-level backup or snapshot of the old server.
1. Enable [maintenance mode](../maintenance_mode/index.md),
1. Enable [maintenance mode](../maintenance_mode/_index.md),
if supported by your GitLab edition.
1. Block new CI/CD jobs from starting:
1. Edit `/etc/gitlab/gitlab.rb`, and set the following:
@ -205,7 +205,7 @@ to the new environment.
1. While still under the Sidekiq dashboard, select **Cron** and then **Enable All**
to re-enable periodic background jobs.
1. Test that read-only operations on the GitLab instance work as expected. For example, browse through project repository files, merge requests, and issues.
1. Disable [Maintenance Mode](../maintenance_mode/index.md), if previously enabled.
1. Disable [Maintenance Mode](../maintenance_mode/_index.md), if previously enabled.
1. Test that the GitLab instance is working as expected.
1. If applicable, re-enable [incoming email](../incoming_email.md) and test it is working as expected.
1. Update your DNS or load balancer to point at the new server.

View File

@ -89,7 +89,7 @@ can't run more frequently than the worker.
The default frequency of the pipeline schedule worker is `3-59/10 * * * *` (every ten minutes,
starting with `0:03`, `0:13`, `0:23`, and so on). The default frequency for GitLab.com
is listed in the [GitLab.com settings](../../user/gitlab_com/index.md#gitlab-cicd).
is listed in the [GitLab.com settings](../../user/gitlab_com/_index.md#gitlab-cicd).
To change the frequency of the pipeline schedule worker:

View File

@ -272,7 +272,7 @@ processing is done in a background worker and requires **no downtime**.
::EndTabs
1. If [Geo](../geo/index.md) is enabled, [reverify all job artifacts](../geo/replication/troubleshooting/synchronization_verification.md#reverify-all-components-or-any-ssf-data-type-which-supports-verification).
1. If [Geo](../geo/_index.md) is enabled, [reverify all job artifacts](../geo/replication/troubleshooting/synchronization_verification.md#reverify-all-components-or-any-ssf-data-type-which-supports-verification).
In some cases, you need to run the [orphan artifact file cleanup Rake task](../../raketasks/cleanup.md#remove-orphan-artifact-files)
to clean up orphaned artifacts.

View File

@ -33,15 +33,15 @@ Customize and configure GitLab Self-Managed.
- [Object storage](object_storage.md)
- [Merge request diffs storage](merge_request_diffs.md)
- [Static objects external storage](static_objects_external_storage.md)
- [Geo](geo/index.md)
- [Geo](geo/_index.md)
- [Disaster recovery (Geo)](geo/disaster_recovery/_index.md)
- [Agent server for Kubernetes](clusters/kas.md)
- [Server hooks](server_hooks.md)
- [Terraform state](terraform_state.md)
- [Terraform limits](settings/terraform_limits.md)
- [Packages](packages/index.md)
- [Packages](packages/_index.md)
- [Web terminals](integration/terminal.md)
- [Wikis](wikis/index.md)
- [Wikis](wikis/_index.md)
- [Invalidate Markdown cache](invalidate_markdown_cache.md)
- [Issue closing pattern](issue_closing_pattern.md)
- [Snippets](snippets/_index.md)

View File

@ -47,7 +47,7 @@ GitLab Dedicated deploys Gitaly [in a sharded setup](../gitaly/_index.md#before-
GitLab Dedicated leverages GitLab Geo for [disaster recovery](../../subscriptions/gitlab_dedicated/data_residency_and_high_availability.md#disaster-recovery).
Geo does not use an active-active failover configuration. For more information, see [Geo](../geo/index.md).
Geo does not use an active-active failover configuration. For more information, see [Geo](../geo/_index.md).
### AWS PrivateLink connection (optional)

View File

@ -12,7 +12,7 @@ DETAILS:
GitLab can read settings for certain features from encrypted settings files. The supported features are:
- [Incoming email `user` and `password`](incoming_email.md#use-encrypted-credentials).
- [LDAP `bind_dn` and `password`](auth/ldap/index.md#use-encrypted-credentials).
- [LDAP `bind_dn` and `password`](auth/ldap/_index.md#use-encrypted-credentials).
- [Service Desk email `user` and `password`](../user/project/service_desk/configure.md#use-encrypted-credentials).
- [SMTP `user_name` and `password`](raketasks/smtp.md#secrets).

View File

@ -17,7 +17,7 @@ Geo undergoes significant changes from release to release. Upgrades are
supported and [documented](#upgrading-geo), but you should ensure that you're
using the right version of the documentation for your installation.
To make sure you're using the right version of the documentation, go to [the Geo page on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/administration/geo/index.md) and choose the appropriate release from the **Switch branch/tag** dropdown list. For example, [`v15.7.6-ee`](https://gitlab.com/gitlab-org/gitlab/-/blob/v15.7.6-ee/doc/administration/geo/index.md).
To make sure you're using the right version of the documentation, go to [the Geo page on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/administration/geo/_index.md) and choose the appropriate release from the **Switch branch/tag** dropdown list. For example, [`v15.7.6-ee`](https://gitlab.com/gitlab-org/gitlab/-/blob/v15.7.6-ee/doc/administration/geo/_index.md).
Fetching large repositories can take a long time for teams and runners located far from a single GitLab instance.
@ -285,7 +285,7 @@ These known issues reflect only the latest version of GitLab. If you are using a
- When a single Git repository receives pushes at a high-enough rate, the secondary site's local copy can be perpetually out-of-date. This causes all Git fetches of that repository to be forwarded to the primary site. See [GitLab issue #455870](https://gitlab.com/gitlab-org/gitlab/-/issues/455870).
- [Proxying](secondary_proxy/_index.md) is implemented only in the GitLab application in the Puma service or Web service, so other services do not benefit from this behavior. You should use a [separate URL](secondary_proxy/_index.md#set-up-a-separate-url-for-a-secondary-geo-site) to ensure requests are always sent to the primary. These services include:
- GitLab container registry - [can be configured to use a separate domain](../packages/container_registry.md#configure-container-registry-under-its-own-domain), such as `registry.example.com`. Secondary site container registries are intended only for disaster recovery. Users should not be routed to them, especially not for pushes, because the data is not propagated to the primary site.
- GitLab Pages - should always use a separate domain, as part of [the prerequisites for running GitLab Pages](../pages/index.md#prerequisites).
- GitLab Pages - should always use a separate domain, as part of [the prerequisites for running GitLab Pages](../pages/_index.md#prerequisites).
- With a [unified URL](secondary_proxy/_index.md#set-up-a-unified-url-for-geo-sites), Let's Encrypt can't generate certificates unless it can reach both IPs through the same domain. To use TLS certificates with Let's Encrypt, you can manually point the domain to one of the Geo sites, generate the certificate, then copy it to all other sites.
- When a [secondary site uses a separate URL](secondary_proxy/_index.md#set-up-a-separate-url-for-a-secondary-geo-site) from the primary site, [signing in the secondary site using SAML](replication/single_sign_on.md#saml-with-separate-url-with-proxying-enabled) is only supported if the SAML Identity Provider (IdP) allows an application to be configured with multiple callback URLs.
- Git clone and fetch requests with option `--depth` over SSH against a secondary site does not work and hangs indefinitely if the secondary site is not up to date at the time the request is initiated. This is due to problems related to translating Git SSH to Git https during proxying. For more information, see [issue 391980](https://gitlab.com/gitlab-org/gitlab/-/issues/391980). A new workflow that does not involve the aforementioned translation step is now available for Linux-packaged GitLab Geo secondary sites which can be enabled with a feature flag. For more details, see [comment in issue 454707](https://gitlab.com/gitlab-org/gitlab/-/issues/454707#note_2102067451). The fix for Cloud Native GitLab Geo secondary sites is tracked in [issue 5641](https://gitlab.com/gitlab-org/charts/gitlab/-/issues/5641).
@ -379,6 +379,6 @@ For answers to common questions, see the [Geo FAQ](replication/faq.md).
## Troubleshooting
- For Geo troubleshooting steps, see [Geo Troubleshooting](replication/troubleshooting/index.md).
- For Geo troubleshooting steps, see [Geo Troubleshooting](replication/troubleshooting/_index.md).
- For Disaster Recovery troubleshooting steps, see [Troubleshooting Geo failover](disaster_recovery/failover_troubleshooting.md).

View File

@ -10,7 +10,7 @@ DETAILS:
**Offering:** GitLab Self-Managed
Geo replicates your database, your Git repositories, and other assets.
Some [known issues](../index.md#known-issues) exist.
Some [known issues](../_index.md#known-issues) exist.
WARNING:
Multi-secondary configurations require the complete re-synchronization and re-configuration of all non-promoted secondaries and
@ -441,7 +441,7 @@ must disable the **primary** site:
### Step 2. Promote all **secondary** site nodes external to the cluster
WARNING:
If the secondary site [has been paused](../../geo/index.md#pausing-and-resuming-replication), this performs
If the secondary site [has been paused](../../geo/_index.md#pausing-and-resuming-replication), this performs
a point-in-time recovery to the last known state.
Data that was created on the primary while the secondary was paused is lost.
@ -477,7 +477,7 @@ Data that was created on the primary while the secondary was paused is lost.
| Name | Default value | Description |
| ---- | ------------- | ------- |
| `ENABLE_SILENT_MODE` | `false` | If `true`, enables [Silent Mode](../../silent_mode/index.md) before promotion (GitLab 16.4 and later) |
| `ENABLE_SILENT_MODE` | `false` | If `true`, enables [Silent Mode](../../silent_mode/_index.md) before promotion (GitLab 16.4 and later) |
### Step 3. Promote the **secondary** cluster

View File

@ -199,7 +199,7 @@ If a runner is repeatedly unable to connect to a GitLab instance, it stops tryin
To ensure that all data is replicated to a secondary site, updates (write requests) need to
be disabled on the **primary** site:
1. Enable [maintenance mode](../../maintenance_mode/index.md) on the **primary** site.
1. Enable [maintenance mode](../../maintenance_mode/_index.md) on the **primary** site.
1. On the left sidebar, at the bottom, select **Admin**.
1. Select **Monitoring > Background jobs**.
1. On the Sidekiq dashboard, select **Cron**.

View File

@ -95,8 +95,8 @@ ensure these processes are close to 100% as possible during active use.
If the **secondary** site is still replicating data from the **primary** site,
follow these steps to avoid unnecessary data loss:
1. Enable [maintenance mode](../../../maintenance_mode/index.md) on the **primary** site,
and make sure to stop any [background jobs](../../../maintenance_mode/index.md#background-jobs).
1. Enable [maintenance mode](../../../maintenance_mode/_index.md) on the **primary** site,
and make sure to stop any [background jobs](../../../maintenance_mode/_index.md#background-jobs).
1. Finish replicating and verifying all data:
WARNING:

View File

@ -248,7 +248,7 @@ In the following steps, replace `<ssh_host_key_path>` with the one you're using:
gitlab-rake gitlab:geo:check
```
If any of the checks fail, check the [troubleshooting documentation](troubleshooting/index.md).
If any of the checks fail, check the [troubleshooting documentation](troubleshooting/_index.md).
1. SSH into a **Rails or Sidekiq server on your primary** site and login as root to verify the
**secondary** site is reachable or there are any common issues with your Geo setup:
@ -257,7 +257,7 @@ In the following steps, replace `<ssh_host_key_path>` with the one you're using:
gitlab-rake gitlab:geo:check
```
If any of the checks fail, check the [troubleshooting documentation](troubleshooting/index.md).
If any of the checks fail, check the [troubleshooting documentation](troubleshooting/_index.md).
After the **secondary** site is added to the Geo administration page and restarted,
the site automatically starts replicating missing data from the **primary** site
@ -357,14 +357,14 @@ site's **Geo Sites** dashboard in your browser.
![Geo dashboard of secondary site](img/geo_dashboard_v14_0.png)
If your installation isn't working properly, check the
[troubleshooting document](troubleshooting/index.md).
[troubleshooting document](troubleshooting/_index.md).
The two most obvious issues that can become apparent in the dashboard are:
1. Database replication not working well.
1. Instance to instance notification not working. In that case, it can be
something of the following:
- You are using a custom certificate or custom CA (see the [troubleshooting document](troubleshooting/index.md)).
- You are using a custom certificate or custom CA (see the [troubleshooting document](troubleshooting/_index.md)).
- The instance is firewalled (check your firewall rules).
Disabling a **secondary** site stops the synchronization process.
@ -384,4 +384,4 @@ Currently, this is what is synced:
## Troubleshooting
See the [troubleshooting document](troubleshooting/index.md).
See the [troubleshooting document](troubleshooting/_index.md).

View File

@ -202,8 +202,8 @@ successfully, you must replicate their data using some other means.
| [Versioned Terraform State](../../terraform_state.md) | **Yes** (13.5) | **Yes** (13.12) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | Replication is behind the feature flag `geo_terraform_state_version_replication`, enabled by default. Verification was behind the feature flag `geo_terraform_state_version_verification`, which was removed in 14.0. |
| [External merge request diffs](../../merge_request_diffs.md) | **Yes** (13.5) | **Yes** (14.6) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | Replication is behind the feature flag `geo_merge_request_diff_replication`, enabled by default. Verification was behind the feature flag `geo_merge_request_diff_verification`, removed in 14.7. |
| [Versioned snippets](../../../user/snippets.md#versioned-snippets) | [**Yes** (13.7)](https://gitlab.com/groups/gitlab-org/-/epics/2809) | [**Yes** (14.2)](https://gitlab.com/groups/gitlab-org/-/epics/2810) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | Verification was implemented behind the feature flag `geo_snippet_repository_verification` in 13.11, and the feature flag was removed in 14.2. |
| [GitLab Pages](../../pages/index.md) | [**Yes** (14.3)](https://gitlab.com/groups/gitlab-org/-/epics/589) | **Yes** (14.6) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | Behind feature flag `geo_pages_deployment_replication`, enabled by default. Verification was behind the feature flag `geo_pages_deployment_verification`, removed in 14.7. |
| [Project-level Secure files](../../../ci/secure_files/_index.md) | **Yes** (15.3) | **Yes** (15.3) | **Yes** (15.3) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | |
| [GitLab Pages](../../pages/_index.md) | [**Yes** (14.3)](https://gitlab.com/groups/gitlab-org/-/epics/589) | **Yes** (14.6) | [**Yes** (15.1)](https://gitlab.com/groups/gitlab-org/-/epics/5551) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | Behind feature flag `geo_pages_deployment_replication`, enabled by default. Verification was behind the feature flag `geo_pages_deployment_verification`, removed in 14.7. |
| [Project-level Secure files](../../../ci/secure_files/_index.md) | **Yes** (15.3) | **Yes** (15.3) | **Yes** (15.3) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | |
| [Incident Metric Images](../../../operations/incident_management/incidents.md#metrics) | **Yes** (15.5) | **Yes** (15.5) | **Yes** (15.5) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | Replication/Verification is handled via the Uploads data type. |
| [Alert Metric Images](../../../operations/incident_management/alerts.md#metrics-tab) | **Yes** (15.5) | **Yes** (15.5) | **Yes** (15.5) | [**Yes** (16.4)<sup>3</sup>](https://gitlab.com/groups/gitlab-org/-/epics/8056) | Replication/Verification is handled via the Uploads data type. |
| [Server-side Git hooks](../../server_hooks.md) | [Not planned](https://gitlab.com/groups/gitlab-org/-/epics/1867) | No | Not applicable | Not applicable | Not planned because of current implementation complexity, low customer interest, and availability of alternatives to hooks. |

View File

@ -11,7 +11,7 @@ DETAILS:
## What are the minimum requirements to run Geo?
The requirements are listed [on the index page](../index.md#requirements-for-running-geo)
The requirements are listed [on the index page](../_index.md#requirements-for-running-geo)
## How does Geo know which projects to sync?

View File

@ -110,7 +110,7 @@ major differences:
- There is an additional PostgreSQL database for each Geo **secondary** site,
called the "Geo tracking database", which tracks the replication and verification
state of various resources.
- There is an additional GitLab service [`geo-logcursor`](../index.md#geo-log-cursor)
- There is an additional GitLab service [`geo-logcursor`](../_index.md#geo-log-cursor)
Therefore, we set up the multi-node components one by one and include deviations
from the typical multi-node setup. However, we highly recommend configuring a

View File

@ -125,7 +125,7 @@ from [owasp.org](https://owasp.org/).
- Geo imposes no additional restrictions on operating system (see the
[GitLab installation](https://about.gitlab.com/install/) page for more
details), however we recommend using the operating systems listed in the [Geo documentation](../index.md#requirements-for-running-geo).
details), however we recommend using the operating systems listed in the [Geo documentation](../_index.md#requirements-for-running-geo).
### What details regarding required OS components and lockdown needs have been defined?

View File

@ -17,7 +17,7 @@ latter is more suited to progressively rolling out Geo to a large GitLab
instance.
NOTE:
Geo's synchronization logic is outlined in the [documentation](../index.md). Both the solution and the documentation is subject to change from time to time. You must independently determine your legal obligations in regard to privacy and cybersecurity laws, and applicable trade control law on an ongoing basis.
Geo's synchronization logic is outlined in the [documentation](../_index.md). Both the solution and the documentation is subject to change from time to time. You must independently determine your legal obligations in regard to privacy and cybersecurity laws, and applicable trade control law on an ongoing basis.
Selective synchronization:

View File

@ -93,7 +93,7 @@ Geo::TrackingBase::SecondaryNotConfigured: Geo secondary database is not configu
On a Geo primary site this error can be ignored.
This happens because GitLab is attempting to display registries from the [Geo tracking database](../../../geo/index.md#geo-tracking-database) which doesn't exist on the primary site (only the original projects exist on the primary; no replicated projects are present, therefore no tracking database exists).
This happens because GitLab is attempting to display registries from the [Geo tracking database](../../../geo/_index.md#geo-tracking-database) which doesn't exist on the primary site (only the original projects exist on the primary; no replicated projects are present, therefore no tracking database exists).
### Secondary site returns 400 error "Request header or cookie too large"

View File

@ -463,7 +463,7 @@ This machine's Geo node name matches a database record ... no
You could add or update a Geo node database record, setting the name to "https://example.com/".
Or you could set this machine's Geo node name to match the name of an existing database record: "London", "Shanghai"
For more information see:
doc/administration/geo/replication/troubleshooting/index.md#can-geo-detect-the-current-node-correctly
doc/administration/geo/replication/troubleshooting/_index.md#can-geo-detect-the-current-node-correctly
```
For more information about recommended site names in the description of the Name field, see
@ -471,7 +471,7 @@ For more information about recommended site names in the description of the Name
### Check OS locale data compatibility
If at all possible, all Geo nodes across all sites should be deployed with the same method and operating system, as defined in the [requirements for running Geo](../../index.md#requirements-for-running-geo).
If at all possible, all Geo nodes across all sites should be deployed with the same method and operating system, as defined in the [requirements for running Geo](../../_index.md#requirements-for-running-geo).
If different operating systems or different operating system versions are deployed across Geo sites, you **must** perform a locale data compatibility check before setting up Geo. You must also check `glibc` when using a mixture of GitLab deployment methods. The locale might be different between a Linux package install, a GitLab Docker container, a Helm chart deployment, or external database services. See the [documentation on upgrading operating systems for PostgreSQL](../../../postgresql/upgrading_os.md), including how to check `glibc` version compatibility.
@ -561,7 +561,7 @@ If you set up a new secondary from scratch, you must also [remove the old site f
The most common problems that prevent the database from replicating correctly are:
- **Secondary** sites cannot reach the **primary** site. Check credentials and
[firewall rules](../../index.md#firewall-rules).
[firewall rules](../../_index.md#firewall-rules).
- SSL certificate problems. Make sure you copied `/etc/gitlab/gitlab-secrets.json` from the **primary** site.
- Database storage disk is full.
- Database replication slot is misconfigured.

View File

@ -622,7 +622,7 @@ To solve this:
## Failures during backfill
During a [backfill](../../index.md#backfill), failures are scheduled to be retried at the end
During a [backfill](../../_index.md#backfill), failures are scheduled to be retried at the end
of the backfill queue, therefore these failures only clear up **after** the backfill completes.
## Message: `unexpected disconnect while reading sideband packet`

View File

@ -43,7 +43,7 @@ and all **secondary** sites:
1. Ensure that the secrets in the `/etc/gitlab/gitlab-secrets.json` file of both the primary site and the secondary site are the same. The file must be the same on all of a site's nodes.
1. SSH into each node of **secondary** sites.
1. [Upgrade GitLab on each **secondary** site](../../../update/package/_index.md#by-using-the-official-repositories-recommended).
1. If you paused replication in step 1, [resume replication on each **secondary**](../index.md#pausing-and-resuming-replication).
1. If you paused replication in step 1, [resume replication on each **secondary**](../_index.md#pausing-and-resuming-replication).
Then, restart Puma and Sidekiq on each **secondary** site. This is to ensure they
are initialized against the newer database schema that is now replicated from
the previously upgraded **primary** site.
@ -70,4 +70,4 @@ everything is working correctly:
1. Test the data replication by pushing code to the **primary** site and see if it
is received by **secondary** sites.
If you encounter any issues, see the [Geo troubleshooting guide](troubleshooting/index.md).
If you encounter any issues, see the [Geo troubleshooting guide](troubleshooting/_index.md).

View File

@ -29,7 +29,7 @@ This behavior enables use-cases including:
For an overview, see [Geo proxying for secondary sites](https://www.youtube.com/watch?v=TALLy7__Na8).
<!-- Video published on 2022-01-26 -->
For known issues, see [proxying-related items in the Geo documentation](../index.md#known-issues).
For known issues, see [proxying-related items in the Geo documentation](../_index.md#known-issues).
## Set up a unified URL for Geo sites

View File

@ -19,7 +19,7 @@ DETAILS:
Geo supports multiple secondaries. You can follow the same steps and make any changes accordingly.
- Ensure the **primary** site has a [GitLab Premium or Ultimate](https://about.gitlab.com/pricing/) subscription to unlock Geo. You only need one license for all the sites.
- Confirm the [requirements for running Geo](../index.md#requirements-for-running-geo) are met by all sites. For example, sites must use the same GitLab version, and sites must be able to communicate with each other over certain ports.
- Confirm the [requirements for running Geo](../_index.md#requirements-for-running-geo) are met by all sites. For example, sites must use the same GitLab version, and sites must be able to communicate with each other over certain ports.
- Confirm the **primary** and **secondary** site storage configurations match. If the primary Geo site uses object storage, the secondary Geo site must use it too. For more information, see [Geo with Object storage](../replication/object_storage.md).
- Ensure clocks are synchronized between the **primary** site and the **secondary** site. Synchronized clocks are required for Geo to function correctly. For example, if the clock drift between the **primary** and **secondary** sites exceeds 1 minute, replication fails.
@ -59,7 +59,7 @@ Depending on your GitLab deployment, [additional configuration](#additional-conf
Depending on how you use GitLab, the following configuration might be required:
- If the **primary** site uses object storage, [configure object storage replication](../replication/object_storage.md) for the **secondary** sites.
- If you use LDAP, [configure a secondary LDAP server](../../auth/ldap/index.md) for the **secondary** sites.
- If you use LDAP, [configure a secondary LDAP server](../../auth/ldap/_index.md) for the **secondary** sites.
For more information, see [LDAP with Geo](../replication/single_sign_on.md#ldap).
- If you use the container registry, [configure the container registry for replication](../replication/container_registry.md) on the **primary** and **secondary** sites.
@ -75,4 +75,4 @@ Geo is not supported when you use a [self-compiled GitLab installation](../../..
## Post-installation documentation
After installing GitLab on the **secondary** sites and performing the initial configuration, see the [following documentation for post-installation information](../index.md#post-installation-documentation).
After installing GitLab on the **secondary** sites and performing the initial configuration, see the [following documentation for post-installation information](../_index.md#post-installation-documentation).

View File

@ -57,7 +57,7 @@ The following guide assumes that:
- You have a **primary** site already set up (the GitLab server you are
replicating from), running PostgreSQL (or equivalent version) managed by your Linux package installation, and
you have a new **secondary** site set up with the same
[versions of PostgreSQL](../index.md#requirements-for-running-geo),
[versions of PostgreSQL](../_index.md#requirements-for-running-geo),
OS, and GitLab on all sites.
WARNING:
@ -1065,4 +1065,4 @@ Follow [Geo with external PostgreSQL instances](external_database.md#configure-t
## Troubleshooting
Read the [troubleshooting document](../replication/troubleshooting/index.md).
Read the [troubleshooting document](../replication/troubleshooting/_index.md).

View File

@ -16,7 +16,7 @@ or manually installed and configured PostgreSQL instances.
Ensure that you are using one of the PostgreSQL versions that
the [Linux package ships with](../../package_information/postgresql_versions.md)
to [avoid version mismatches](../index.md#requirements-for-running-geo)
to [avoid version mismatches](../_index.md#requirements-for-running-geo)
in case a Geo site has to be rebuilt.
NOTE:
@ -158,7 +158,7 @@ has three main functions:
1. Configure the replica database.
1. Configure the tracking database.
1. Enable the [Geo Log Cursor](../index.md#geo-log-cursor) (not covered in this section).
1. Enable the [Geo Log Cursor](../_index.md#geo-log-cursor) (not covered in this section).
To configure the connection to the external read-replica database and enable Log Cursor:

View File

@ -19,7 +19,7 @@ Prerequisites:
- The second GitLab site serves as the **Geo secondary site**. Geo supports multiple secondary sites.
- The Geo primary site has at least a [GitLab Premium](https://about.gitlab.com/pricing/) license.
You need only one license for all sites.
- Confirm all sites meet the [requirements for running Geo](../index.md#requirements-for-running-geo).
- Confirm all sites meet the [requirements for running Geo](../_index.md#requirements-for-running-geo).
## Set up Geo for Linux package (Omnibus)
@ -90,7 +90,7 @@ has three main functions:
1. Configure the replica database.
1. Configure the tracking database.
1. Enable the [Geo Log Cursor](../index.md#geo-log-cursor).
1. Enable the [Geo Log Cursor](../_index.md#geo-log-cursor).
To configure the connection to the external read-replica database:
@ -339,7 +339,7 @@ secondary site is a read-only copy.
sudo gitlab-rake gitlab:geo:check
```
If any of the checks fail, see the [troubleshooting documentation](../replication/troubleshooting/index.md).
If any of the checks fail, see the [troubleshooting documentation](../replication/troubleshooting/_index.md).
1. To verify that the secondary site is reachable, SSH into a Rails or Sidekiq server on your primary site and run:
@ -347,7 +347,7 @@ secondary site is a read-only copy.
sudo gitlab-rake gitlab:geo:check
```
If any of the checks fail, check the [troubleshooting documentation](../replication/troubleshooting/index.md).
If any of the checks fail, check the [troubleshooting documentation](../replication/troubleshooting/_index.md).
After the secondary site is added to the Geo administration page and restarted,
the site automatically starts to replicate missing data from the primary site
@ -493,4 +493,4 @@ The reconfigure in the [steps above](#configure-gitlab) handles these steps auto
## Troubleshooting
See [troubleshooting Geo](../replication/troubleshooting/index.md).
See [troubleshooting Geo](../replication/troubleshooting/_index.md).

View File

@ -19,7 +19,7 @@ Prerequisites:
- The second GitLab site serves as the **Geo secondary site**. Geo supports multiple secondary sites.
- The Geo primary site has at least a [GitLab Premium](https://about.gitlab.com/pricing/) license.
You need only one license for all sites.
- Confirm all sites meet the [requirements for running Geo](../index.md#requirements-for-running-geo).
- Confirm all sites meet the [requirements for running Geo](../_index.md#requirements-for-running-geo).
## Set up Geo for Linux package (Omnibus)
@ -593,7 +593,7 @@ You must manually replicate the secret file across all of your secondary sites,
gitlab-rake gitlab:geo:check
```
If any of the checks fail, see the [troubleshooting documentation](../replication/troubleshooting/index.md).
If any of the checks fail, see the [troubleshooting documentation](../replication/troubleshooting/_index.md).
1. To verify that the secondary site is reachable, SSH into a Rails or Sidekiq server on your primary site and sign in as root:
@ -601,7 +601,7 @@ You must manually replicate the secret file across all of your secondary sites,
gitlab-rake gitlab:geo:check
```
If any of the checks fail, check the [troubleshooting documentation](../replication/troubleshooting/index.md).
If any of the checks fail, check the [troubleshooting documentation](../replication/troubleshooting/_index.md).
After the secondary site is added to the Geo administration page and restarted,
the site automatically starts to replicate missing data from the primary site
@ -649,4 +649,4 @@ site **Geo Sites** dashboard in your browser.
## Related topics
- [Troubleshooting Geo](../replication/troubleshooting/index.md)
- [Troubleshooting Geo](../replication/troubleshooting/_index.md)

View File

@ -10,7 +10,7 @@ DETAILS:
**Offering:** GitLab Self-Managed
You can configure various settings for GitLab Geo sites. For more information, see
[Geo documentation](geo/index.md).
[Geo documentation](geo/_index.md).
On either the primary or secondary site:

View File

@ -273,10 +273,10 @@ You can make changes to your default rate limits from the **Admin** area. For mo
### GitLab SaaS-specific block and error responses
- [403 forbidden error](../user/gitlab_com/index.md#gitlabcom-specific-rate-limits): If the error occurs for all GitLab SaaS requests, look for an automated process that could have triggered a block. For more assistance, contact GitLab support with your error details, including the affected IP address.
- [HAProxy API throttle](../user/gitlab_com/index.md#haproxy): GitLab SaaS responds with HTTP status code 429 to API requests that exceed 10 requests per second, per IP address.
- [Protected paths throttle](../user/gitlab_com/index.md#protected-paths-throttle): GitLab SaaS responds with HTTP status code 429 to POST requests at protected paths that exceed 10 requests per minute, per IP address.
- [Git and container registry failed authentication ban](../user/gitlab_com/index.md#git-and-container-registry-failed-authentication-ban): GitLab SaaS responds with HTTP status code 403 for one hour if it receives 30 failed authentication requests in three minutes from a single IP address.
- [403 forbidden error](../user/gitlab_com/_index.md#gitlabcom-specific-rate-limits): If the error occurs for all GitLab SaaS requests, look for an automated process that could have triggered a block. For more assistance, contact GitLab support with your error details, including the affected IP address.
- [HAProxy API throttle](../user/gitlab_com/_index.md#haproxy): GitLab SaaS responds with HTTP status code 429 to API requests that exceed 10 requests per second, per IP address.
- [Protected paths throttle](../user/gitlab_com/_index.md#protected-paths-throttle): GitLab SaaS responds with HTTP status code 429 to POST requests at protected paths that exceed 10 requests per minute, per IP address.
- [Git and container registry failed authentication ban](../user/gitlab_com/_index.md#git-and-container-registry-failed-authentication-ban): GitLab SaaS responds with HTTP status code 403 for one hour if it receives 30 failed authentication requests in three minutes from a single IP address.
## GitLab training resources

View File

@ -272,13 +272,13 @@ RPO and RTO discussed above.
### Comparison to Geo
Gitaly Cluster and [Geo](../geo/index.md) both provide redundancy. However the redundancy of:
Gitaly Cluster and [Geo](../geo/_index.md) both provide redundancy. However the redundancy of:
- Gitaly Cluster provides fault tolerance for data storage and is invisible to the user. Users are
not aware when Gitaly Cluster is used.
- Geo provides [replication](../geo/index.md) and [disaster recovery](../geo/disaster_recovery/_index.md) for
- Geo provides [replication](../geo/_index.md) and [disaster recovery](../geo/disaster_recovery/_index.md) for
an entire instance of GitLab. Users know when they are using Geo for
[replication](../geo/index.md). Geo [replicates multiple data types](../geo/replication/datatypes.md#replicated-data-types),
[replication](../geo/_index.md). Geo [replicates multiple data types](../geo/replication/datatypes.md#replicated-data-types),
including Git data.
The following table outlines the major differences between Gitaly Cluster and Geo:
@ -290,8 +290,8 @@ The following table outlines the major differences between Gitaly Cluster and Ge
For more information, see:
- Geo [use cases](../geo/index.md#use-cases).
- Geo [architecture](../geo/index.md#architecture).
- Geo [use cases](../geo/_index.md#use-cases).
- Geo [architecture](../geo/_index.md#architecture).
### Virtual storage

View File

@ -19,7 +19,7 @@ The following tables are intended to guide you to choose the right combination o
## Geo capabilities
If your availability needs to span multiple zones or multiple locations, read about [Geo](../geo/index.md).
If your availability needs to span multiple zones or multiple locations, read about [Geo](../geo/_index.md).
| Capability | Availability | Recoverability | Data Resiliency | Performance | Risks/Trade-offs|
|------------|--------------|----------------|-----------------|-------------|-----------------|

View File

@ -180,7 +180,7 @@ following to `gitlab.rb` on each node:
NOTE:
Do not store the GitLab application database and the Praefect
database on the same PostgreSQL server if using [Geo](../geo/index.md).
database on the same PostgreSQL server if using [Geo](../geo/_index.md).
The replication state is internal to each instance of GitLab and should
not be replicated.

View File

@ -41,16 +41,13 @@ To configure your GitLab instance to access the available self-hosted models in
Prerequisites:
- You must be an administrator.
- You must have an Ultimate license.
- You must have a Duo Enterprise license add-on.
To configure a self-hosted model:
1. On the left sidebar, at the bottom, select **Admin**.
1. Select **GitLab Duo**.
1. In the **GitLab Duo** section, select **Change configuration**.
1. Under **Self-hosted AI models**, select **Turn on self-hosted models**.
1. Select **Save changes**.
1. On the left sidebar, select **Self-hosted models**.
1. Select **Self-hosted models**.
- If the **Self-hosted models** menu item is not available, synchronize your
subscription after purchase:
1. On the left sidebar, select **Subscription**.
@ -75,11 +72,33 @@ To configure a self-hosted model:
1. Select **Create self-hosted model**.
## Configure self-hosted beta models
Prerequisites:
- You must be an administrator.
- You must have an Ultimate license.
- You must have a Duo Enterprise license add-on.
To enable self-hosted [beta](../../policy/development_stages_support.md#beta) models:
1. On the left sidebar, at the bottom, select **Admin**.
1. Select **GitLab Duo**.
1. In the **GitLab Duo** section, select **Change configuration**.
1. Under **Self-hosted AI models**, select **Use beta self-hosted models features**.
1. Select **Save changes**.
NOTE:
Turning on beta self-hosted models features also accepts the [GitLab Testing Agreement](https://handbook.gitlab.com/handbook/legal/testing-agreement/).
For more information, see the [list of available beta models](supported_models_and_hardware_requirements.md) under evaluation.
## Configure GitLab Duo features to use self-hosted models
Prerequisites:
- You must be an administrator.
- You must have an Ultimate license.
- You must have a Duo Enterprise license add-on.
### View configured features

View File

@ -19,6 +19,7 @@ DETAILS:
Prerequisites:
- You must be an administrator.
- You must have an Ultimate license.
- You must have a Duo Enterprise license add-on.
To enable logging and access the logs, enable the feature flag:

View File

@ -20,7 +20,7 @@ With inactive project deletion, you can identify these projects, warn the mainta
projects if they remain inactive. When an inactive project is deleted, the action generates an audit event that it was
performed by the @GitLab-Admin-Bot.
For the default setting on GitLab.com, see the [GitLab.com settings page](../user/gitlab_com/index.md#inactive-project-deletion).
For the default setting on GitLab.com, see the [GitLab.com settings page](../user/gitlab_com/_index.md#inactive-project-deletion).
## Configure inactive project deletion

View File

@ -289,7 +289,7 @@ Set the limit to `0` to disable it.
The default maximum number of webhooks is `100` per project and `50` per group. Webhooks in a subgroup do not count towards the webhook limit of their parent group.
For GitLab.com, see the [webhook limits for GitLab.com](../user/gitlab_com/index.md#webhooks).
For GitLab.com, see the [webhook limits for GitLab.com](../user/gitlab_com/_index.md#webhooks).
### Webhook payload size
@ -316,7 +316,7 @@ To change the webhook timeout value:
gitlab-ctl restart
```
See also [webhook limits for GitLab.com](../user/gitlab_com/index.md#other-limits).
See also [webhook limits for GitLab.com](../user/gitlab_com/_index.md#other-limits).
### Recursive webhooks
@ -421,7 +421,7 @@ If a new pipeline would cause the total number of jobs to exceed the limit, the
fails with a `job_activity_limit_exceeded` error.
- On GitLab.com, a limit is
[defined for each subscription tier](../user/gitlab_com/index.md#gitlab-cicd),
[defined for each subscription tier](../user/gitlab_com/_index.md#gitlab-cicd),
and this limit affects all projects with that tier.
- On GitLab Self-Managed, [Premium or Ultimate](https://about.gitlab.com/pricing/) subscriptions,
this limit is defined under a `default` plan that affects all
@ -481,7 +481,7 @@ If a new subscription would cause the total number of subscription to exceed the
limit, the subscription is considered invalid.
- On GitLab.com, a limit is
[defined for each subscription tier](../user/gitlab_com/index.md#gitlab-cicd),
[defined for each subscription tier](../user/gitlab_com/_index.md#gitlab-cicd),
and this limit affects all projects with that tier.
- On GitLab Self-Managed [Premium or Ultimate](https://about.gitlab.com/pricing/),
this limit is defined under a `default` plan that
@ -513,7 +513,7 @@ To set this limit to `100` on a GitLab Self-Managed instance, run the following
Plan.default.actual_limits.update!(pipeline_triggers: 100)
```
This limit is [enabled on GitLab.com](../user/gitlab_com/index.md#gitlab-cicd).
This limit is [enabled on GitLab.com](../user/gitlab_com/_index.md#gitlab-cicd).
### Number of pipeline schedules
@ -523,7 +523,7 @@ would cause the total number of pipeline schedules to exceed the limit, the
pipeline schedule is not created.
On GitLab.com, the limit is
[defined for each subscription tier](../user/gitlab_com/index.md#gitlab-cicd),
[defined for each subscription tier](../user/gitlab_com/_index.md#gitlab-cicd),
and this limit affects all projects with that tier.
On GitLab Self-Managed [Premium or Ultimate](https://about.gitlab.com/pricing/),
@ -559,7 +559,7 @@ To set this limit to `1440` on a GitLab Self-Managed instance, run the following
Plan.default.actual_limits.update!(ci_daily_pipeline_schedule_triggers: 1440)
```
This limit is [enabled on GitLab.com](../user/gitlab_com/index.md#gitlab-cicd).
This limit is [enabled on GitLab.com](../user/gitlab_com/_index.md#gitlab-cicd).
### Limit the number of schedule rules defined for security policy project
@ -579,7 +579,7 @@ To set this limit for a GitLab Self-Managed instance, run the following in the
Plan.default.actual_limits.update!(security_policy_scan_execution_schedules: 100)
```
This limit is [enabled on GitLab.com](../user/gitlab_com/index.md#gitlab-cicd).
This limit is [enabled on GitLab.com](../user/gitlab_com/_index.md#gitlab-cicd).
### CI/CD variable limits
@ -689,7 +689,7 @@ The total number of custom domains per GitLab Pages website is limited to `150`
The default limit for [GitLab Self-Managed](../subscriptions/self_managed/_index.md) is `0` (unlimited).
To set a limit on your instance, use the
[**Admin** area](pages/index.md#set-maximum-number-of-gitlab-pages-custom-domains-for-a-project).
[**Admin** area](pages/_index.md#set-maximum-number-of-gitlab-pages-custom-domains-for-a-project).
### Number of parallel Pages deployments
@ -822,7 +822,7 @@ Plan.default.actual_limits.update!(dotenv_variables: 100)
You can also set this limit by using the [GitLab UI](settings/continuous_integration.md#set-cicd-limits) or the
[Plan limits API](../api/plan_limits.md).
This limit is [enabled on GitLab.com](../user/gitlab_com/index.md#gitlab-cicd).
This limit is [enabled on GitLab.com](../user/gitlab_com/_index.md#gitlab-cicd).
### Limit dotenv file size
@ -1022,7 +1022,7 @@ that only people you trust can add content.
## Wiki limits
- [Wiki page content size limit](wikis/index.md#wiki-page-content-size-limit).
- [Wiki page content size limit](wikis/_index.md#wiki-page-content-size-limit).
- [Length restrictions for file and directory names](../user/project/wiki/index.md#length-restrictions-for-file-and-directory-names).
## Snippets limits
@ -1039,7 +1039,7 @@ See the limits in the [Add a design to an issue](../user/project/issues/design_m
The maximum allowed [push size](settings/account_and_limit_settings.md#max-push-size).
Not set by default on GitLab Self-Managed. For GitLab.com, see [Account and limit settings](../user/gitlab_com/index.md#account-and-limit-settings)
Not set by default on GitLab Self-Managed. For GitLab.com, see [Account and limit settings](../user/gitlab_com/_index.md#account-and-limit-settings)
### Webhooks and Project Services
@ -1073,7 +1073,7 @@ The default maximum file size for a package that's uploaded to the [GitLab packa
- PyPI: 3 GB
- Terraform: 1 GB
The [maximum file sizes on GitLab.com](../user/gitlab_com/index.md#package-registry-limits)
The [maximum file sizes on GitLab.com](../user/gitlab_com/_index.md#package-registry-limits)
might be different.
To set these limits for a GitLab Self-Managed instance, you can do it [through the **Admin** area](settings/continuous_integration.md#package-file-size-limits)

View File

@ -106,7 +106,7 @@ To find more details about the error, you can use your browser's developer tools
To resolve the issue:
- If the GraphQL response includes `only get, head, options, and trace methods are allowed in silent mode`, disable [silent mode](silent_mode/index.md#disable-silent-mode) for your instance.
- If the GraphQL response includes `only get, head, options, and trace methods are allowed in silent mode`, disable [silent mode](silent_mode/_index.md#disable-silent-mode) for your instance.
If you are unable to determine the issue, contact [GitLab Support](https://about.gitlab.com/support/portal/) and provide the GraphQL response in your description of the issue.

View File

@ -87,7 +87,7 @@ If you're using GitLab Pages with custom domain support you need some
additional port configurations.
GitLab Pages requires a separate virtual IP address. Configure DNS to point the
`pages_external_url` from `/etc/gitlab/gitlab.rb` at the new virtual IP address. See the
[GitLab Pages documentation](pages/index.md) for more information.
[GitLab Pages documentation](pages/_index.md) for more information.
| LB Port | Backend Port | Protocol |
| ------- | ------------- | --------- |
@ -96,7 +96,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
- (*1*): The backend port for GitLab Pages depends on the
`gitlab_pages['external_http']` and `gitlab_pages['external_https']`
setting. See [GitLab Pages documentation](pages/index.md) for more details.
setting. See [GitLab Pages documentation](pages/_index.md) for more details.
- (*2*): Port 443 for GitLab Pages should always use the TCP protocol. Users can
configure custom domains with custom SSL, which would not be possible
if SSL was terminated at the load balancer.

View File

@ -234,7 +234,7 @@ the following command helps to focus on the most common errors.
jq --raw-output 'select(.severity == "ERROR") | [.project_path, .class, .message, .error] | @tsv' geo.log | sort | uniq -c | sort | tail
```
Refer to our [Geo troubleshooting page](../geo/replication/troubleshooting/index.md)
Refer to our [Geo troubleshooting page](../geo/replication/troubleshooting/_index.md)
for advice about specific error messages.
### Parsing `gitaly/current`

View File

@ -72,7 +72,7 @@ them to disable Maintenance Mode after it's been enabled.
All users can sign in and out of the GitLab instance but no new users can be created.
If there are [LDAP syncs](../auth/ldap/index.md) scheduled for that time, they fail because user creation is disabled. Similarly, [user creations based on SAML](../../integration/saml.md#configure-saml-support-in-gitlab) fail.
If there are [LDAP syncs](../auth/ldap/_index.md) scheduled for that time, they fail because user creation is disabled. Similarly, [user creations based on SAML](../../integration/saml.md#configure-saml-support-in-gitlab) fail.
### Git actions

View File

@ -22,7 +22,7 @@ pending approval state because an administrator has enabled any of the following
- [Require administrator approval for new sign-ups](settings/sign_up_restrictions.md#require-administrator-approval-for-new-sign-ups) setting.
- [User cap](settings/sign_up_restrictions.md#user-cap).
- [Block auto-created users (OmniAuth)](../integration/omniauth.md#configure-common-settings)
- [Block auto-created users (LDAP)](auth/ldap/index.md#basic-configuration-settings)
- [Block auto-created users (LDAP)](auth/ldap/_index.md#basic-configuration-settings)
When a user registers for an account while this setting is enabled:

View File

@ -114,10 +114,10 @@ The following table lists the valid `objects` that can be used:
| `external_diffs` | [Merge request diffs](merge_request_diffs.md) |
| `uploads` | [User uploads](uploads.md) |
| `lfs` | [Git Large File Storage objects](lfs/_index.md) |
| `packages` | [Project packages (for example, PyPI, Maven, or NuGet)](packages/index.md) |
| `packages` | [Project packages (for example, PyPI, Maven, or NuGet)](packages/_index.md) |
| `dependency_proxy` | [Dependency Proxy](packages/dependency_proxy.md) |
| `terraform_state` | [Terraform state files](terraform_state.md) |
| `pages` | [Pages](pages/index.md) |
| `pages` | [Pages](pages/_index.md) |
| `ci_secure_files` | [Secure files](cicd/secure_files.md) |
Within each object type, three parameters can be defined:
@ -175,10 +175,10 @@ supported by the consolidated form, refer to the following guides:
| [LFS objects](lfs/_index.md#storing-lfs-objects-in-remote-object-storage) | **{check-circle}** Yes |
| [Uploads](uploads.md#using-object-storage) | **{check-circle}** Yes |
| [Merge request diffs](merge_request_diffs.md#using-object-storage) | **{check-circle}** Yes |
| [Packages](packages/index.md#use-object-storage) (optional feature) | **{check-circle}** Yes |
| [Packages](packages/_index.md#use-object-storage) (optional feature) | **{check-circle}** Yes |
| [Dependency Proxy](packages/dependency_proxy.md#using-object-storage) (optional feature) | **{check-circle}** Yes |
| [Terraform state files](terraform_state.md#using-object-storage) | **{check-circle}** Yes |
| [Pages content](pages/index.md#object-storage-settings) | **{check-circle}** Yes |
| [Pages content](pages/_index.md#object-storage-settings) | **{check-circle}** Yes |
## Configure the connection settings
@ -748,10 +748,10 @@ To migrate existing local data to object storage see the following guides:
- [LFS objects](lfs/_index.md#migrating-to-object-storage)
- [Uploads](raketasks/uploads/migrate.md#migrate-to-object-storage)
- [Merge request diffs](merge_request_diffs.md#using-object-storage)
- [Packages](packages/index.md#migrate-local-packages-to-object-storage) (optional feature)
- [Packages](packages/_index.md#migrate-local-packages-to-object-storage) (optional feature)
- [Dependency Proxy](packages/dependency_proxy.md#migrate-local-dependency-proxy-blobs-and-manifests-to-object-storage)
- [Terraform state files](terraform_state.md#migrate-to-object-storage)
- [Pages content](pages/index.md#migrate-pages-deployments-to-object-storage)
- [Pages content](pages/_index.md#migrate-pages-deployments-to-object-storage)
- [Project-level Secure Files](cicd/secure_files.md#migrate-to-object-storage)
## Transition to consolidated form
@ -843,7 +843,7 @@ See the following additional guides:
1. Configure [database lookup of SSH keys](operations/fast_ssh_key_lookup.md)
to eliminate the need for a shared `authorized_keys` file.
1. [Prevent local disk usage for job logs](cicd/job_logs.md#prevent-local-disk-usage).
1. [Disable Pages local storage](pages/index.md#disable-pages-local-storage).
1. [Disable Pages local storage](pages/_index.md#disable-pages-local-storage).
## Troubleshooting
@ -899,7 +899,7 @@ This is not the default behavior with object storage.
The `proxy_download` setting controls this behavior: the default is `false`.
Verify this in the documentation for each use case.
Set `proxy_download` to `true` if you want GitLab to proxy the files.
Set `proxy_download` to `true` if you want GitLab to proxy the files.
There can be a large performance hit to the GitLab server if `proxy_download` is set to `true`. The server deployments of GitLab have `proxy_download` set to `false`.
When `proxy_download` to `false`, GitLab returns an

View File

@ -41,7 +41,7 @@ getent passwd git | cut -d: -f6 | awk '{print $1"/.ssh/authorized_keys"}'
```
The `authorized_keys` file contains all the public SSH keys for users allowed to access GitLab. However, to maintain a
single source of truth, [Geo](../geo/index.md) must be configured to perform SSH fingerprint
single source of truth, [Geo](../geo/_index.md) must be configured to perform SSH fingerprint
lookups with database lookup.
When you [set up Geo](../geo/setup/_index.md), you must follow the steps below

View File

@ -54,7 +54,7 @@ To move repositories:
[individual snippets](../../api/snippet_repository_storage_moves.md#schedule-a-repository-storage-move-for-a-snippet).
- [All groups](#move-all-groups) or
[individual groups](../../api/group_repository_storage_moves.md#schedule-a-repository-storage-move-for-a-group).
1. If [Geo](../geo/index.md) is enabled,
1. If [Geo](../geo/_index.md) is enabled,
[resync all repositories](../geo/replication/troubleshooting/synchronization_verification.md#queue-up-all-repositories-for-resync).
#### Move all projects

View File

@ -35,7 +35,7 @@ Read more about update policies and warnings in the PostgreSQL
| First GitLab version | PostgreSQL versions | Default version for fresh installs | Default version for upgrades | Notes |
| -------------- | ------------------- | ---------------------------------- | ---------------------------- | ----- |
| 17.5.0 | 14.11, 16.4 | 14.11 | 16.4 | Single node upgrades from PostgreSQL 14 to PostgreSQL 16 are now supported. Starting with GitLab 17.5.0, PostgreSQL 16 is fully supported for both new installations and upgrades in Geo deployments (the restriction from 17.4.0 no longer applies). |
| 17.4.0 | 14.11, 16.4 | 14.11 | 14.11 | PostgreSQL 16 is available for new installations if not using [Geo](../geo/index.md#requirements-for-running-geo) or [Patroni](../postgresql/_index.md#postgresql-replication-and-failover-for-linux-package-installations). |
| 17.4.0 | 14.11, 16.4 | 14.11 | 14.11 | PostgreSQL 16 is available for new installations if not using [Geo](../geo/_index.md#requirements-for-running-geo) or [Patroni](../postgresql/_index.md#postgresql-replication-and-failover-for-linux-package-installations). |
| 17.0.0 | 14.11 | 14.11 | 14.11 | Package upgrades are aborted if PostgreSQL is not upgraded to 14 already. |
| 16.10.1, 16.9.3, 16.8.5 | 13.14, 14.11 | 14.11 | 14.11 | |
| 16.6.7, 16.7.5, 16.8.2 | 13.13, 14.10 | 14.10 | 14.10 | |
@ -48,7 +48,7 @@ Read more about update policies and warnings in the PostgreSQL
| 15.10.8 | 13.11 | 13.11 | 12.12 | |
| 15.6 | 12.12, 13.8 | 13.8 | 12.12 | For upgrades, you can manually upgrade to 13.8 following the [upgrade documentation](../../update/versions/gitlab_15_changes.md#linux-package-installations-2). |
| 15.0 | 12.10, 13.6 | 13.6 | 12.10 | For upgrades, you can manually upgrade to 13.6 following the [upgrade documentation](../../update/versions/gitlab_15_changes.md#linux-package-installations-2). |
| 14.1 | 12.7, 13.3 | 12.7 | 12.7 | PostgreSQL 13 available for fresh installations if not using [Geo](../geo/index.md#requirements-for-running-geo) or [Patroni](../postgresql/_index.md#postgresql-replication-and-failover-for-linux-package-installations). |
| 14.1 | 12.7, 13.3 | 12.7 | 12.7 | PostgreSQL 13 available for fresh installations if not using [Geo](../geo/_index.md#requirements-for-running-geo) or [Patroni](../postgresql/_index.md#postgresql-replication-and-failover-for-linux-package-installations). |
| 14.0 | 12.7 | 12.7 | 12.7 | HA installations with repmgr are no longer supported and are prevented from upgrading to Linux package 14.0 |
| 13.8 | 11.9, 12.4 | 12.4 | 12.4 | Package upgrades automatically performed PostgreSQL upgrade for nodes that are not part of a Geo or HA cluster. |
| 13.7 | 11.9, 12.4 | 12.4 | 11.9 | For upgrades users can manually upgrade to 12.4 following the [upgrade documentation](https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server). |

View File

@ -390,7 +390,7 @@ control over how the Pages daemon runs and serves content in your environment.
|-----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `pages_external_url` | The URL where GitLab Pages is accessible, including protocol (HTTP / HTTPS). If `https://` is used, additional configuration is required. See [Wildcard domains with TLS support](#wildcard-domains-with-tls-support) and [Custom domains with TLS support](#custom-domains-with-tls-support) for details. |
| **`gitlab_pages[]`** | |
| `access_control` | Whether to enable [access control](index.md#access-control). |
| `access_control` | Whether to enable [access control](_index.md#access-control). |
| `api_secret_key` | Full path to file with secret key used to authenticate with the GitLab API. Auto-generated when left unset. |
| `artifacts_server` | Enable viewing [artifacts](../cicd/job_artifacts.md) in GitLab Pages. |
| `artifacts_server_timeout` | Timeout (in seconds) for a proxied request to the artifacts server. |
@ -452,7 +452,7 @@ control over how the Pages daemon runs and serves content in your environment.
| `pages_domain_removal_cron_worker` | Schedule for removing unverified custom GitLab Pages domains. |
| `pages_path` | The directory on disk where pages are stored, defaults to `GITLAB-RAILS/shared/pages`. |
| **`pages_nginx[]`** | |
| `enable` | Include a virtual host `server{}` block for Pages inside NGINX. Needed for NGINX to proxy traffic back to the Pages daemon. Set to `false` if the Pages daemon should directly receive all requests, for example, when using [custom domains](index.md#custom-domains). |
| `enable` | Include a virtual host `server{}` block for Pages inside NGINX. Needed for NGINX to proxy traffic back to the Pages daemon. Set to `false` if the Pages daemon should directly receive all requests, for example, when using [custom domains](_index.md#custom-domains). |
| `FF_CONFIGURABLE_ROOT_DIR` | Feature flag to [customize the default folder](../../user/project/pages/introduction.md#customize-the-default-folder) (enabled by default). |
| `FF_ENABLE_PLACEHOLDERS` | Feature flag for rewrites (enabled by default). See [Rewrites](../../user/project/pages/redirects.md#rewrites) for more information. |
| `rate_limit_source_ip` | Rate limit per source IP in number of requests per second. Set to `0` to disable this feature. |

View File

@ -15,7 +15,7 @@ Before attempting to enable GitLab Pages, first make sure you have
This document explains how to configure GitLab Pages for self-compiled GitLab installations.
For more information about configuring GitLab Pages for Linux Package installations (recommended), see the [Linux package documentation](index.md).
For more information about configuring GitLab Pages for Linux Package installations (recommended), see the [Linux package documentation](_index.md).
The advantage of using the Linux package installation is that it contains the latest supported version of GitLab Pages.

View File

@ -272,7 +272,7 @@ If you see the following error:
ERRO[0010] Failed to connect to the internal GitLab API after 0.50s error="failed to connect to internal Pages API: HTTP status: 401"
```
If you are [Running GitLab Pages on a separate server](index.md#running-gitlab-pages-on-a-separate-server)
If you are [Running GitLab Pages on a separate server](_index.md#running-gitlab-pages-on-a-separate-server)
you must copy the `/etc/gitlab/gitlab-secrets.json` file
from the **GitLab server** to the **Pages server**.
@ -295,7 +295,7 @@ WARN[0010] Pages cannot communicate with an instance of the GitLab API. Please s
```
This can happen if your `gitlab-secrets.json` file is out of date between GitLab Rails and GitLab
Pages. Follow steps 8-10 of [Running GitLab Pages on a separate server](index.md#running-gitlab-pages-on-a-separate-server),
Pages. Follow steps 8-10 of [Running GitLab Pages on a separate server](_index.md#running-gitlab-pages-on-a-separate-server),
in all of your GitLab Pages instances.
## Intermittent 502 errors when using an AWS Network Load Balancer and GitLab Pages
@ -329,16 +329,16 @@ This problem comes from the permissions of the GitLab Pages OAuth application. T
1. Under **Scopes**, ensure that the `api` scope is selected.
1. Save your changes.
When running a [separate Pages server](index.md#running-gitlab-pages-on-a-separate-server),
When running a [separate Pages server](_index.md#running-gitlab-pages-on-a-separate-server),
this setting needs to be configured on the main GitLab server.
## Workaround in case no wildcard DNS entry can be set
If the wildcard DNS [prerequisite](index.md#prerequisites) can't be met, you can still use GitLab Pages in a limited fashion:
If the wildcard DNS [prerequisite](_index.md#prerequisites) can't be met, you can still use GitLab Pages in a limited fashion:
1. [Move](../../user/project/settings/migrate_projects.md#transfer-a-project-to-another-namespace)
all projects you need to use Pages with into a single group namespace, for example `pages`.
1. Configure a [DNS entry](index.md#dns-configuration) without the `*.`-wildcard, for example `pages.example.io`.
1. Configure a [DNS entry](_index.md#dns-configuration) without the `*.`-wildcard, for example `pages.example.io`.
1. Configure `pages_external_url http://example.io/` in your `gitlab.rb` file.
Omit the group namespace here, because it automatically is prepended by GitLab.
@ -406,7 +406,7 @@ the shared pages directory is mounted on a different path on the main GitLab ser
GitLab Pages server.
In that case, it's highly recommended you to configure
[object storage and migrate any existing pages data to it](index.md#object-storage-settings).
[object storage and migrate any existing pages data to it](_index.md#object-storage-settings).
Alternatively, you can mount the GitLab Pages shared directory to the same path on
both servers.
@ -423,7 +423,7 @@ To fix that:
1. Check your `gitlab.rb` file. If you have `gitlab_rails['pages_object_store_enabled']` enabled, but no bucket details have been configured, either:
- Configure object storage for your Pages deployments, following the [S3-compatible connection settings](index.md#s3-compatible-connection-settings) guide.
- Configure object storage for your Pages deployments, following the [S3-compatible connection settings](_index.md#s3-compatible-connection-settings) guide.
- Store your deployments locally, by commenting out that line.
1. Save the changes you made to your `gitlab.rb` file, then [reconfigure GitLab](../restart_gitlab.md#reconfigure-a-linux-package-installation).

View File

@ -6,7 +6,7 @@ title: Upgrading operating systems for PostgreSQL
---
WARNING:
[Geo](../geo/index.md) cannot be used to migrate a PostgreSQL database from one operating system to another. If you attempt to do so, the secondary site may appear to be 100% replicated when in fact some data is not replicated, leading to data loss. This is because Geo depends on PostgreSQL streaming replication, which suffers from the limitations described in this document. Also see [Geo Troubleshooting - Check OS locale data compatibility](../geo/replication/troubleshooting/common.md#check-os-locale-data-compatibility).
[Geo](../geo/_index.md) cannot be used to migrate a PostgreSQL database from one operating system to another. If you attempt to do so, the secondary site may appear to be 100% replicated when in fact some data is not replicated, leading to data loss. This is because Geo depends on PostgreSQL streaming replication, which suffers from the limitations described in this document. Also see [Geo Troubleshooting - Check OS locale data compatibility](../geo/replication/troubleshooting/common.md#check-os-locale-data-compatibility).
If you upgrade the operating system on which PostgreSQL runs, any
[changes to locale data might corrupt your database indexes](https://wiki.postgresql.org/wiki/Locale_data_changes).
@ -345,7 +345,7 @@ primary site and the other secondary site:
To provide users with read-only access to GitLab during the OS upgrade (partial downtime):
1. Enable [Maintenance Mode](../maintenance_mode/index.md) on the primary site instead of stopping
1. Enable [Maintenance Mode](../maintenance_mode/_index.md) on the primary site instead of stopping
it.
1. Promote the secondary site but do not route users to it yet.
1. Perform the OS upgrade on the promoted site.

View File

@ -156,7 +156,7 @@ sudo gitlab-rake gitlab:ldap:rename_provider[old_provider,new_provider] force=ye
## Secrets
GitLab can use [LDAP configuration secrets](../auth/ldap/index.md#use-encrypted-credentials) to read from an encrypted file.
GitLab can use [LDAP configuration secrets](../auth/ldap/_index.md#use-encrypted-credentials) to read from an encrypted file.
The following Rake tasks are provided for updating the contents of the encrypted file.
### Show secret

View File

@ -11,7 +11,7 @@ DETAILS:
NOTE:
The recommended method to place GitLab in a read-only state is to enable
[maintenance mode](maintenance_mode/index.md).
[maintenance mode](maintenance_mode/_index.md).
In some cases, you might want to place GitLab under a read-only state.
The configuration for doing so depends on your desired outcome.

View File

@ -282,7 +282,7 @@ If you're using GitLab Pages with custom domain support you will need some
additional port configurations.
GitLab Pages requires a separate virtual IP address. Configure DNS to point the
`pages_external_url` from `/etc/gitlab/gitlab.rb` at the new virtual IP address. See the
[GitLab Pages documentation](../pages/index.md) for more information.
[GitLab Pages documentation](../pages/_index.md) for more information.
| LB Port | Backend Port | Protocol |
| ------- | ------------- | --------- |
@ -291,7 +291,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
- (*1*): The backend port for GitLab Pages depends on the
`gitlab_pages['external_http']` and `gitlab_pages['external_https']`
setting. See [GitLab Pages documentation](../pages/index.md) for more details.
setting. See [GitLab Pages documentation](../pages/_index.md) for more details.
- (*2*): Port 443 for GitLab Pages should always use the TCP protocol. Users can
configure custom domains with custom SSL, which would not be possible
if SSL was terminated at the load balancer.

View File

@ -284,7 +284,7 @@ If you're using GitLab Pages with custom domain support you will need some
additional port configurations.
GitLab Pages requires a separate virtual IP address. Configure DNS to point the
`pages_external_url` from `/etc/gitlab/gitlab.rb` at the new virtual IP address. See the
[GitLab Pages documentation](../pages/index.md) for more information.
[GitLab Pages documentation](../pages/_index.md) for more information.
| LB Port | Backend Port | Protocol |
| ------- | ------------- | --------- |
@ -293,7 +293,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
- (*1*): The backend port for GitLab Pages depends on the
`gitlab_pages['external_http']` and `gitlab_pages['external_https']`
setting. See [GitLab Pages documentation](../pages/index.md) for more details.
setting. See [GitLab Pages documentation](../pages/_index.md) for more details.
- (*2*): Port 443 for GitLab Pages should always use the TCP protocol. Users can
configure custom domains with custom SSL, which would not be possible
if SSL was terminated at the load balancer.

View File

@ -183,7 +183,7 @@ If you're using GitLab Pages with custom domain support you will need some
additional port configurations.
GitLab Pages requires a separate virtual IP address. Configure DNS to point the
`pages_external_url` from `/etc/gitlab/gitlab.rb` at the new virtual IP address. See the
[GitLab Pages documentation](../pages/index.md) for more information.
[GitLab Pages documentation](../pages/_index.md) for more information.
| LB Port | Backend Port | Protocol |
| ------- | ------------- | --------- |
@ -192,7 +192,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
- (*1*): The backend port for GitLab Pages depends on the
`gitlab_pages['external_http']` and `gitlab_pages['external_https']`
setting. See [GitLab Pages documentation](../pages/index.md) for more details.
setting. See [GitLab Pages documentation](../pages/_index.md) for more details.
- (*2*): Port 443 for GitLab Pages should always use the TCP protocol. Users can
configure custom domains with custom SSL, which would not be possible
if SSL was terminated at the load balancer.

View File

@ -272,7 +272,7 @@ If you're using GitLab Pages with custom domain support you will need some
additional port configurations.
GitLab Pages requires a separate virtual IP address. Configure DNS to point the
`pages_external_url` from `/etc/gitlab/gitlab.rb` at the new virtual IP address. See the
[GitLab Pages documentation](../pages/index.md) for more information.
[GitLab Pages documentation](../pages/_index.md) for more information.
| LB Port | Backend Port | Protocol |
| ------- | ------------- | --------- |
@ -281,7 +281,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
- (*1*): The backend port for GitLab Pages depends on the
`gitlab_pages['external_http']` and `gitlab_pages['external_https']`
setting. See [GitLab Pages documentation](../pages/index.md) for more details.
setting. See [GitLab Pages documentation](../pages/_index.md) for more details.
- (*2*): Port 443 for GitLab Pages should always use the TCP protocol. Users can
configure custom domains with custom SSL, which would not be possible
if SSL was terminated at the load balancer.

View File

@ -290,7 +290,7 @@ If you're using GitLab Pages with custom domain support you will need some
additional port configurations.
GitLab Pages requires a separate virtual IP address. Configure DNS to point the
`pages_external_url` from `/etc/gitlab/gitlab.rb` at the new virtual IP address. See the
[GitLab Pages documentation](../pages/index.md) for more information.
[GitLab Pages documentation](../pages/_index.md) for more information.
| LB Port | Backend Port | Protocol |
| ------- | ------------- | --------- |
@ -299,7 +299,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
- (*1*): The backend port for GitLab Pages depends on the
`gitlab_pages['external_http']` and `gitlab_pages['external_https']`
setting. See [GitLab Pages documentation](../pages/index.md) for more details.
setting. See [GitLab Pages documentation](../pages/_index.md) for more details.
- (*2*): Port 443 for GitLab Pages should always use the TCP protocol. Users can
configure custom domains with custom SSL, which would not be possible
if SSL was terminated at the load balancer.

View File

@ -272,7 +272,7 @@ If you're using GitLab Pages with custom domain support you will need some
additional port configurations.
GitLab Pages requires a separate virtual IP address. Configure DNS to point the
`pages_external_url` from `/etc/gitlab/gitlab.rb` at the new virtual IP address. See the
[GitLab Pages documentation](../pages/index.md) for more information.
[GitLab Pages documentation](../pages/_index.md) for more information.
| LB Port | Backend Port | Protocol |
| ------- | ------------- | --------- |
@ -281,7 +281,7 @@ GitLab Pages requires a separate virtual IP address. Configure DNS to point the
- (*1*): The backend port for GitLab Pages depends on the
`gitlab_pages['external_http']` and `gitlab_pages['external_https']`
setting. See [GitLab Pages documentation](../pages/index.md) for more details.
setting. See [GitLab Pages documentation](../pages/_index.md) for more details.
- (*2*): Port 443 for GitLab Pages should always use the TCP protocol. Users can
configure custom domains with custom SSL, which would not be possible
if SSL was terminated at the load balancer.

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