Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
077b0a79d5
commit
a99d0fa692
|
@ -1,5 +1,8 @@
|
|||
# E2E tests pipeline loaded dynamically by script: scripts/generate-e2e-pipeline
|
||||
|
||||
default:
|
||||
interruptible: true
|
||||
|
||||
include:
|
||||
- local: .gitlab/ci/global.gitlab-ci.yml
|
||||
- local: .gitlab/ci/package-and-test/rules.gitlab-ci.yml
|
||||
|
@ -80,6 +83,13 @@ stages:
|
|||
# ==========================================
|
||||
# Prepare stage
|
||||
# ==========================================
|
||||
dont-interrupt-me:
|
||||
extends: .rules:dont-interrupt
|
||||
stage: .pre
|
||||
interruptible: false
|
||||
script:
|
||||
- echo "This jobs makes sure this pipeline won't be interrupted! See https://docs.gitlab.com/ee/ci/yaml/#interruptible."
|
||||
|
||||
trigger-omnibus-env:
|
||||
extends:
|
||||
- .omnibus-env
|
||||
|
|
|
@ -41,6 +41,14 @@
|
|||
rules:
|
||||
- when: always
|
||||
|
||||
.rules:dont-interrupt:
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|
||||
allow_failure: true
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
when: manual
|
||||
allow_failure: true
|
||||
|
||||
# ------------------------------------------
|
||||
# Test
|
||||
# ------------------------------------------
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
default:
|
||||
interruptible: true
|
||||
|
||||
stages:
|
||||
- prepare
|
||||
- deploy
|
||||
|
@ -17,6 +20,13 @@ include:
|
|||
- source ./scripts/review_apps/review-apps.sh
|
||||
- apt-get update && apt-get install -y jq
|
||||
|
||||
dont-interrupt-me:
|
||||
extends: .rules:dont-interrupt
|
||||
stage: prepare
|
||||
interruptible: false
|
||||
script:
|
||||
- echo "This jobs makes sure this pipeline won't be interrupted! See https://docs.gitlab.com/ee/ci/yaml/#interruptible."
|
||||
|
||||
review-build-cng-env:
|
||||
extends:
|
||||
- .default-retry
|
||||
|
|
|
@ -30,6 +30,17 @@
|
|||
when: never
|
||||
- *qa-framework-changes
|
||||
|
||||
# ------------------------------------------
|
||||
# Prepare
|
||||
# ------------------------------------------
|
||||
.rules:dont-interrupt:
|
||||
rules:
|
||||
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|
||||
allow_failure: true
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
when: manual
|
||||
allow_failure: true
|
||||
|
||||
# ------------------------------------------
|
||||
# Test
|
||||
# ------------------------------------------
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
---
|
||||
# Cop supports --auto-correct.
|
||||
Lint/RedundantCopDisableDirective:
|
||||
Details: grace period
|
||||
# Used to be enabled in "grace period" and is now disabled due to too many
|
||||
# silenced offenses.
|
||||
# See https://gitlab.com/gitlab-org/gitlab/-/issues/376133
|
||||
Enabled: false
|
||||
Exclude:
|
||||
- 'app/controllers/concerns/enforces_two_factor_authentication.rb'
|
||||
- 'app/controllers/concerns/web_hooks/hook_log_actions.rb'
|
||||
|
|
|
@ -33,6 +33,7 @@ RSpec/MultipleMemoizedHelpers:
|
|||
- 'spec/services/merge_requests/push_options_handler_service_spec.rb'
|
||||
- 'spec/services/packages/cleanup/execute_policy_service_spec.rb'
|
||||
- 'spec/services/todo_service_spec.rb'
|
||||
- 'spec/services/todos/allowed_target_filter_service_spec.rb'
|
||||
- 'spec/services/todos/destroy/entity_leave_service_spec.rb'
|
||||
- 'spec/support/shared_contexts/policies/project_policy_shared_context.rb'
|
||||
- 'spec/support/shared_contexts/requests/api/debian_repository_shared_context.rb'
|
||||
|
|
|
@ -1 +1 @@
|
|||
5cba52f4acb04ddbe27d8b7cb2e936ea0be45ae1
|
||||
4c15523cf680c107c5aa2b8268674cd0345a6b78
|
||||
|
|
|
@ -142,7 +142,7 @@ export default {
|
|||
:edited-at="discussion.resolved_at"
|
||||
:edited-by="discussion.resolved_by"
|
||||
:action-text="resolvedText"
|
||||
class-name="discussion-headline-light js-discussion-headline discussion-resolved-text gl-mb-2 gl-ml-3"
|
||||
class-name="discussion-headline-light js-discussion-headline discussion-resolved-text gl-mb-2"
|
||||
/>
|
||||
</template>
|
||||
<template #avatar-badge>
|
||||
|
|
|
@ -424,7 +424,7 @@ export default {
|
|||
</gl-sprintf>
|
||||
</div>
|
||||
|
||||
<div v-if="isMRDiffView" class="gl-float-left gl-mt-2">
|
||||
<div v-if="isMRDiffView" class="timeline-avatar gl-float-left gl-pt-2">
|
||||
<gl-avatar-link :href="author.path">
|
||||
<gl-avatar
|
||||
:src="author.avatar_url"
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
<script>
|
||||
import { GlBadge, GlLink, GlSafeHtmlDirective } from '@gitlab/ui';
|
||||
import Actions from '../action_buttons.vue';
|
||||
import { generateText } from '../extensions/utils';
|
||||
import ContentHeader from './widget_content_header.vue';
|
||||
import ContentRow from './widget_content_row.vue';
|
||||
|
||||
export default {
|
||||
name: 'DynamicContent',
|
||||
components: {
|
||||
GlBadge,
|
||||
GlLink,
|
||||
Actions,
|
||||
ContentRow,
|
||||
ContentHeader,
|
||||
},
|
||||
directives: {
|
||||
SafeHtml: GlSafeHtmlDirective,
|
||||
},
|
||||
props: {
|
||||
data: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
widgetName: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
level: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 2,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
statusIcon() {
|
||||
return this.data.icon?.name || undefined;
|
||||
},
|
||||
generatedText() {
|
||||
return generateText(this.data.text);
|
||||
},
|
||||
generatedSubtext() {
|
||||
return generateText(this.data.subtext);
|
||||
},
|
||||
generatedSupportingText() {
|
||||
return generateText(this.data.supportingText);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
onClickedAction(action) {
|
||||
this.$emit('clickedAction', action);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<content-row :level="level" :status-icon-name="statusIcon" :widget-name="widgetName">
|
||||
<template #header>
|
||||
<content-header v-if="data.header" :header="data.header" />
|
||||
</template>
|
||||
<template #body>
|
||||
<div class="gl-display-flex gl-flex-direction-column">
|
||||
<div>
|
||||
<p v-safe-html="generatedText" class="gl-mb-0"></p>
|
||||
<gl-link v-if="data.link" :href="data.link.href">{{ data.link.text }}</gl-link>
|
||||
<p v-if="data.supportingText" v-safe-html="generatedSupportingText" class="gl-mb-0"></p>
|
||||
<gl-badge v-if="data.badge" :variant="data.badge.variant || 'info'">
|
||||
{{ data.badge.text }}
|
||||
</gl-badge>
|
||||
<actions
|
||||
:widget="widgetName"
|
||||
:tertiary-buttons="data.actions"
|
||||
class="gl-ml-auto gl-pl-3"
|
||||
@clickedAction="onClickedAction"
|
||||
/>
|
||||
<p v-if="data.subtext" v-safe-html="generatedSubtext" class="gl-m-0 gl-font-sm"></p>
|
||||
</div>
|
||||
<ul
|
||||
v-if="data.children && data.children.length > 0 && level === 2"
|
||||
class="gl-m-0 gl-p-0 gl-list-style-none"
|
||||
>
|
||||
<li>
|
||||
<dynamic-content
|
||||
v-for="(childData, index) in data.children"
|
||||
:key="childData.id || index"
|
||||
:data="childData"
|
||||
:widget-name="widgetName"
|
||||
:level="3"
|
||||
data-qa-selector="child_content"
|
||||
@clickedAction="onClickedAction"
|
||||
/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
</content-row>
|
||||
</template>
|
|
@ -0,0 +1,67 @@
|
|||
<script>
|
||||
import { GlLoadingIcon, GlIcon } from '@gitlab/ui';
|
||||
import { capitalizeFirstCharacter } from '~/lib/utils/text_utility';
|
||||
import { EXTENSION_ICON_CLASS, EXTENSION_ICON_NAMES } from '../../constants';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlLoadingIcon,
|
||||
GlIcon,
|
||||
},
|
||||
props: {
|
||||
level: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 1,
|
||||
},
|
||||
name: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
},
|
||||
isLoading: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
iconName: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
iconAriaLabel() {
|
||||
return `${capitalizeFirstCharacter(this.iconName)} ${this.name}`;
|
||||
},
|
||||
iconSize() {
|
||||
return this.level === 1 ? 16 : 12;
|
||||
},
|
||||
},
|
||||
EXTENSION_ICON_NAMES,
|
||||
EXTENSION_ICON_CLASS,
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div :class="[$options.EXTENSION_ICON_CLASS[iconName]]" class="gl-mr-3">
|
||||
<gl-loading-icon v-if="isLoading" size="md" inline />
|
||||
<div
|
||||
v-else
|
||||
class="gl-display-flex gl-align-items-center gl-justify-content-center gl-rounded-full gl-bg-gray-10"
|
||||
:class="{
|
||||
'gl-p-2': level === 1,
|
||||
}"
|
||||
>
|
||||
<div class="gl-rounded-full gl-bg-white">
|
||||
<gl-icon
|
||||
:name="$options.EXTENSION_ICON_NAMES[iconName]"
|
||||
:size="iconSize"
|
||||
:aria-label="iconAriaLabel"
|
||||
:data-qa-selector="`status_${iconName}_icon`"
|
||||
class="gl-display-block"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
|
@ -4,10 +4,11 @@ import * as Sentry from '@sentry/browser';
|
|||
import { normalizeHeaders } from '~/lib/utils/common_utils';
|
||||
import { sprintf, __ } from '~/locale';
|
||||
import Poll from '~/lib/utils/poll';
|
||||
import StatusIcon from '../extensions/status_icon.vue';
|
||||
import ActionButtons from '../action_buttons.vue';
|
||||
import { EXTENSION_ICONS } from '../../constants';
|
||||
import ContentSection from './widget_content_section.vue';
|
||||
import ContentRow from './widget_content_row.vue';
|
||||
import DynamicContent from './dynamic_content.vue';
|
||||
import StatusIcon from './status_icon.vue';
|
||||
|
||||
const FETCH_TYPE_COLLAPSED = 'collapsed';
|
||||
const FETCH_TYPE_EXPANDED = 'expanded';
|
||||
|
@ -18,7 +19,8 @@ export default {
|
|||
StatusIcon,
|
||||
GlButton,
|
||||
GlLoadingIcon,
|
||||
ContentSection,
|
||||
ContentRow,
|
||||
DynamicContent,
|
||||
},
|
||||
directives: {
|
||||
GlTooltip: GlTooltipDirective,
|
||||
|
@ -59,7 +61,7 @@ export default {
|
|||
},
|
||||
// If the content slot is not used, this value will be used as a fallback.
|
||||
content: {
|
||||
type: Object,
|
||||
type: Array,
|
||||
required: false,
|
||||
default: undefined,
|
||||
},
|
||||
|
@ -227,23 +229,34 @@ export default {
|
|||
</div>
|
||||
<div
|
||||
v-if="!isCollapsed || contentError"
|
||||
class="mr-widget-grouped-section gl-relative"
|
||||
class="gl-relative gl-bg-gray-10"
|
||||
data-testid="widget-extension-collapsed-section"
|
||||
>
|
||||
<div v-if="isLoadingExpandedContent" class="report-block-container gl-text-center">
|
||||
<gl-loading-icon size="sm" inline /> {{ __('Loading...') }}
|
||||
<gl-loading-icon size="sm" inline /> {{ loadingText }}
|
||||
</div>
|
||||
<div v-else class="gl-px-5 gl-display-flex">
|
||||
<content-row
|
||||
v-if="contentError"
|
||||
:level="2"
|
||||
:status-icon-name="$options.failedStatusIcon"
|
||||
:widget-name="widgetName"
|
||||
>
|
||||
<template #body>
|
||||
{{ contentError }}
|
||||
</template>
|
||||
</content-row>
|
||||
<slot v-else name="content">
|
||||
<div class="gl-w-full">
|
||||
<dynamic-content
|
||||
v-for="(data, index) in content"
|
||||
:key="data.id || index"
|
||||
:data="data"
|
||||
:widget-name="widgetName"
|
||||
/>
|
||||
</div>
|
||||
</slot>
|
||||
</div>
|
||||
<content-section
|
||||
v-else-if="contentError"
|
||||
class="report-block-container"
|
||||
:status-icon-name="$options.failedStatusIcon"
|
||||
:widget-name="widgetName"
|
||||
>
|
||||
{{ contentError }}
|
||||
</content-section>
|
||||
<slot v-else name="content">
|
||||
{{ content }}
|
||||
</slot>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<script>
|
||||
import { EXTENSION_ICONS } from '../../constants';
|
||||
import StatusIcon from '../extensions/status_icon.vue';
|
||||
import StatusIcon from './status_icon.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
@ -21,15 +21,8 @@ export default {
|
|||
};
|
||||
</script>
|
||||
<template>
|
||||
<div class="gl-px-7">
|
||||
<div class="gl-pl-4 gl-display-flex">
|
||||
<status-icon
|
||||
v-if="statusIconName"
|
||||
:level="2"
|
||||
:name="widgetName"
|
||||
:icon-name="statusIconName"
|
||||
/>
|
||||
<slot name="default"></slot>
|
||||
</div>
|
||||
<div class="gl-display-flex gl-align-items-baseline gl-w-full">
|
||||
<status-icon v-if="statusIconName" :level="2" :name="widgetName" :icon-name="statusIconName" />
|
||||
<slot name="default"></slot>
|
||||
</div>
|
||||
</template>
|
|
@ -0,0 +1,35 @@
|
|||
<script>
|
||||
import { GlSafeHtmlDirective } from '@gitlab/ui';
|
||||
import { generateText } from '../extensions/utils';
|
||||
|
||||
export default {
|
||||
directives: {
|
||||
SafeHtml: GlSafeHtmlDirective,
|
||||
},
|
||||
props: {
|
||||
header: {
|
||||
type: [String, Array],
|
||||
default: '',
|
||||
required: false,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
generatedHeader() {
|
||||
return generateText(Array.isArray(this.header) ? this.header[0] : this.header);
|
||||
},
|
||||
generatedSubheader() {
|
||||
return Array.isArray(this.header) && this.header[1] ? generateText(this.header[1]) : '';
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
<div class="gl-mb-2">
|
||||
<strong v-safe-html="generatedHeader" class="gl-display-block"></strong
|
||||
><span
|
||||
v-if="generatedSubheader"
|
||||
v-safe-html="generatedSubheader"
|
||||
class="gl-display-block"
|
||||
></span>
|
||||
</div>
|
||||
</template>
|
|
@ -0,0 +1,38 @@
|
|||
<script>
|
||||
import { EXTENSION_ICONS } from '../../constants';
|
||||
import ContentBody from './widget_content_body.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
ContentBody,
|
||||
},
|
||||
props: {
|
||||
level: {
|
||||
type: Number,
|
||||
required: true,
|
||||
validator: (value) => value === 2 || value === 3,
|
||||
},
|
||||
statusIconName: {
|
||||
type: String,
|
||||
default: '',
|
||||
required: false,
|
||||
validator: (value) => value === '' || Object.keys(EXTENSION_ICONS).includes(value),
|
||||
},
|
||||
widgetName: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
<div
|
||||
class="gl-w-full mr-widget-content-row"
|
||||
:class="{ 'gl-border-t gl-py-3 gl-pl-7': level === 2 }"
|
||||
>
|
||||
<slot name="header"></slot>
|
||||
<content-body :status-icon-name="statusIconName" :widget-name="widgetName">
|
||||
<slot name="body"></slot>
|
||||
</content-body>
|
||||
</div>
|
||||
</template>
|
|
@ -850,3 +850,7 @@ $tabs-holder-z-index: 250;
|
|||
.dropdown-menu li button.gl-toggle:not(.is-checked) {
|
||||
background: $gray-400;
|
||||
}
|
||||
|
||||
.mr-widget-content-row:first-child {
|
||||
border-top: 0;
|
||||
}
|
||||
|
|
|
@ -130,7 +130,14 @@ $system-note-svg-size: 1rem;
|
|||
border-left: 1px solid $border-color;
|
||||
border-right: 1px solid $border-color;
|
||||
background-color: $white;
|
||||
padding: $gl-padding-8 $gl-padding-8 $gl-padding-4 $gl-padding;
|
||||
|
||||
.timeline-content {
|
||||
padding: $gl-padding-8 $gl-padding-8 $gl-padding-8 $gl-padding;
|
||||
}
|
||||
|
||||
.timeline-avatar {
|
||||
margin: $gl-padding-8 0 0 $gl-padding;
|
||||
}
|
||||
|
||||
.timeline-discussion-body {
|
||||
margin-left: 2rem;
|
||||
|
@ -1026,7 +1033,13 @@ $system-note-svg-size: 1rem;
|
|||
padding-left: 0;
|
||||
|
||||
ul.notes li.note-wrapper {
|
||||
padding: $gl-padding-8 $gl-padding-8 $gl-padding-8 $gl-padding;
|
||||
.timeline-content {
|
||||
padding: $gl-padding-8 $gl-padding-8 $gl-padding-8 $gl-padding;
|
||||
}
|
||||
|
||||
.timeline-avatar {
|
||||
margin: $gl-padding-8 0 0 $gl-padding;
|
||||
}
|
||||
}
|
||||
|
||||
ul.notes {
|
||||
|
|
|
@ -12,19 +12,11 @@ class ScheduleDestroyInvalidGroupMembers < Gitlab::Database::Migration[2.0]
|
|||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
queue_batched_background_migration(
|
||||
MIGRATION,
|
||||
:members,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
batch_size: BATCH_SIZE,
|
||||
max_batch_size: MAX_BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE,
|
||||
gitlab_schema: :gitlab_main
|
||||
)
|
||||
# no-op
|
||||
# We want to no-op this due to potential inconsistencies in SM upgrade path
|
||||
end
|
||||
|
||||
def down
|
||||
delete_batched_background_migration(MIGRATION, :members, :id, [])
|
||||
# no-op
|
||||
end
|
||||
end
|
||||
|
|
|
@ -10,19 +10,11 @@ class ScheduleDestroyInvalidProjectMembers < Gitlab::Database::Migration[2.0]
|
|||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
def up
|
||||
queue_batched_background_migration(
|
||||
MIGRATION,
|
||||
:members,
|
||||
:id,
|
||||
job_interval: DELAY_INTERVAL,
|
||||
batch_size: BATCH_SIZE,
|
||||
max_batch_size: MAX_BATCH_SIZE,
|
||||
sub_batch_size: SUB_BATCH_SIZE,
|
||||
gitlab_schema: :gitlab_main
|
||||
)
|
||||
# no-op
|
||||
# We want to no-op this due to potential inconsistencies in SM upgrade path
|
||||
end
|
||||
|
||||
def down
|
||||
delete_batched_background_migration(MIGRATION, :members, :id, [])
|
||||
# no-op
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class DeleteRemoveInvalidMemberMigration < Gitlab::Database::Migration[2.0]
|
||||
PROJECT_MEMBER_MIGRATION = 'ScheduleDestroyInvalidProjectMembers'
|
||||
GROUP_MEMBER_MIGRATION = 'ScheduleDestroyInvalidGroupMembers'
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
def up
|
||||
delete_batched_background_migration(PROJECT_MEMBER_MIGRATION, :members, :id, [])
|
||||
delete_batched_background_migration(GROUP_MEMBER_MIGRATION, :members, :id, [])
|
||||
end
|
||||
|
||||
def down
|
||||
# no-op
|
||||
end
|
||||
end
|
|
@ -0,0 +1 @@
|
|||
946e773d09863fe029507ac44b41a61ed0b6b766f7296759743cf09addfacfcd
|
|
@ -209,6 +209,6 @@ successfully, you must replicate their data using some other means.
|
|||
|[Incident Metric Images](../../../operations/incident_management/incidents.md#metrics) | [Planned](https://gitlab.com/gitlab-org/gitlab/-/issues/362561) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/362561) | No | No | |
|
||||
|[Alert Metric Images](../../../operations/incident_management/alerts.md#metrics-tab) | [Planned](https://gitlab.com/gitlab-org/gitlab/-/issues/362564) | [No](https://gitlab.com/gitlab-org/gitlab/-/issues/362564) | No | No | |
|
||||
|[Server-side Git hooks](../../server_hooks.md) | [Not planned](https://gitlab.com/groups/gitlab-org/-/epics/1867) | No | N/A | N/A | Not planned because of current implementation complexity, low customer interest, and availability of alternatives to hooks. |
|
||||
|[Elasticsearch integration](../../../integration/elasticsearch.md) | [Not planned](https://gitlab.com/gitlab-org/gitlab/-/issues/1186) | No | No | No | Not planned because further product discovery is required and Elasticsearch (ES) clusters can be rebuilt. Secondaries use the same ES cluster as the primary. |
|
||||
|[Elasticsearch integration](../../../integration/advanced_search/elasticsearch.md) | [Not planned](https://gitlab.com/gitlab-org/gitlab/-/issues/1186) | No | No | No | Not planned because further product discovery is required and Elasticsearch (ES) clusters can be rebuilt. Secondaries use the same ES cluster as the primary. |
|
||||
|[Dependency proxy images](../../../user/packages/dependency_proxy/index.md) | [Not planned](https://gitlab.com/gitlab-org/gitlab/-/issues/259694) | No | No | No | Blocked by [Geo: Secondary Mimicry](https://gitlab.com/groups/gitlab-org/-/epics/1528). Replication of this cache is not needed for disaster recovery purposes because it can be recreated from external sources. |
|
||||
|[Vulnerability Export](../../../user/application_security/vulnerability_report/index.md#export-vulnerability-details) | [Not planned](https://gitlab.com/groups/gitlab-org/-/epics/3111) | No | No | No | Not planned because they are ephemeral and sensitive information. They can be regenerated on demand. |
|
||||
|
|
|
@ -283,7 +283,7 @@ You can learn more about how to administer GitLab.
|
|||
|
||||
### Free GitLab training
|
||||
|
||||
- GitLab basics: Discover self-service guides on [Git and GitLab basics](../gitlab-basics/index.md).
|
||||
- GitLab basics: Discover self-service guides on [Git and GitLab basics](../tutorials/index.md).
|
||||
- GitLab Learn: Learn new GitLab skills in a structured course at [GitLab Learn](https://about.gitlab.com/learn/).
|
||||
|
||||
### Third-party training
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
redirect_to: 'index.md'
|
||||
remove_date: '2022-08-24'
|
||||
---
|
||||
|
||||
This document was moved to [another location](index.md).
|
|
@ -194,7 +194,7 @@ Learn how to install, configure, update, and maintain your GitLab instance.
|
|||
|
||||
- [Monitoring GitLab](monitoring/index.md):
|
||||
- [Monitoring uptime](../user/admin_area/monitoring/health_check.md): Check the server status using the health check endpoint.
|
||||
- [IP allowlist](monitoring/ip_whitelist.md): Monitor endpoints that provide health check information when probed.
|
||||
- [IP allowlist](monitoring/ip_allowlist.md): Monitor endpoints that provide health check information when probed.
|
||||
- [Monitoring GitHub imports](monitoring/github_imports.md): The GitLab GitHub Importer displays Prometheus metrics to monitor the health and progress of the importer.
|
||||
|
||||
### Performance Monitoring
|
||||
|
|
|
@ -20,7 +20,7 @@ Explore our features to monitor your GitLab instance:
|
|||
importer with various Prometheus metrics.
|
||||
- [Monitoring uptime](../../user/admin_area/monitoring/health_check.md): Check the
|
||||
server status using the health check endpoint.
|
||||
- [IP allowlists](ip_whitelist.md): Configure GitLab for monitoring endpoints that
|
||||
- [IP allowlists](ip_allowlist.md): Configure GitLab for monitoring endpoints that
|
||||
provide health check information when probed.
|
||||
- [`nginx_status`](https://docs.gitlab.com/omnibus/settings/nginx.html#enablingdisabling-nginx_status):
|
||||
Monitor your NGINX server status.
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'ip_allowlist.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](ip_allowlist.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-08-31>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
stage: Monitor
|
||||
group: Respond
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
remove_date: '2022-07-26'
|
||||
redirect_to: 'index.md'
|
||||
---
|
||||
|
||||
# Request profiling (removed) **(FREE SELF)**
|
||||
|
||||
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/352488) in GitLab 14.8
|
||||
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/350152) in 15.0.
|
|
@ -20,7 +20,7 @@ For installations from source you must configure it yourself.
|
|||
|
||||
GitLab monitors its own internal service metrics, and makes them available at the
|
||||
`/-/metrics` endpoint. Unlike other [Prometheus](https://prometheus.io) exporters, to access
|
||||
the metrics, the client IP address must be [explicitly allowed](../ip_whitelist.md).
|
||||
the metrics, the client IP address must be [explicitly allowed](../ip_allowlist.md).
|
||||
|
||||
These metrics are enabled and collected for [Omnibus GitLab](https://docs.gitlab.com/omnibus/)
|
||||
and Chart installations. For source installations, these metrics must be enabled
|
||||
|
|
|
@ -205,7 +205,7 @@ To use an external Prometheus server:
|
|||
```
|
||||
|
||||
1. Install and set up a dedicated Prometheus instance, if necessary, using the [official installation instructions](https://prometheus.io/docs/prometheus/latest/installation/).
|
||||
1. Add the Prometheus server IP address to the [monitoring IP allowlist](../ip_whitelist.md). For example:
|
||||
1. Add the Prometheus server IP address to the [monitoring IP allowlist](../ip_allowlist.md). For example:
|
||||
|
||||
```ruby
|
||||
gitlab_rails['monitoring_whitelist'] = ['127.0.0.0/8', '192.168.0.1']
|
||||
|
@ -381,7 +381,7 @@ memory, disk, and CPU utilization.
|
|||
The web exporter is a dedicated metrics server that allows splitting end-user and Prometheus traffic
|
||||
into two separate applications to improve performance and availability.
|
||||
|
||||
[Read more about the web exporter](puma_exporter.md).
|
||||
[Read more about the web exporter](web_exporter.md).
|
||||
|
||||
### Redis exporter
|
||||
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'web_exporter.md'
|
||||
remove_date: '2022-09-01'
|
||||
---
|
||||
|
||||
This document was moved to [another location](web_exporter.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-01>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -401,4 +401,4 @@ The output in `/tmp/puma.txt` may help diagnose the root cause.
|
|||
|
||||
## Related topics
|
||||
|
||||
- [Use a dedicated metrics server to export web metrics](../monitoring/prometheus/puma_exporter.md)
|
||||
- [Use a dedicated metrics server to export web metrics](../monitoring/prometheus/web_exporter.md)
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
stage: Systems
|
||||
group: Distribution
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
remove_date: '2022-08-22'
|
||||
redirect_to: 'index.md'
|
||||
---
|
||||
|
||||
# Pseudonymizer (removed) **(ULTIMATE)**
|
||||
|
||||
> [Deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/219952) in GitLab 14.7 and removed in 15.0.
|
||||
|
||||
WARNING:
|
||||
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/219952) in GitLab 14.7.
|
|
@ -300,7 +300,7 @@ for details on managing SSL certificates and configuring NGINX.
|
|||
|
||||
Ensure the external load balancer only routes to working services with built
|
||||
in monitoring endpoints. The [readiness checks](../../user/admin_area/monitoring/health_check.md)
|
||||
all require [additional configuration](../monitoring/ip_whitelist.md)
|
||||
all require [additional configuration](../monitoring/ip_allowlist.md)
|
||||
on the nodes being checked, otherwise, the external load balancer will not be able to
|
||||
connect.
|
||||
|
||||
|
|
|
@ -302,7 +302,7 @@ for details on managing SSL certificates and configuring NGINX.
|
|||
|
||||
Ensure the external load balancer only routes to working services with built
|
||||
in monitoring endpoints. The [readiness checks](../../user/admin_area/monitoring/health_check.md)
|
||||
all require [additional configuration](../monitoring/ip_whitelist.md)
|
||||
all require [additional configuration](../monitoring/ip_allowlist.md)
|
||||
on the nodes being checked, otherwise, the external load balancer will not be able to
|
||||
connect.
|
||||
|
||||
|
|
|
@ -184,7 +184,7 @@ details about managing SSL certificates and configuring NGINX, see the
|
|||
|
||||
Ensure the external load balancer only routes to working services with built
|
||||
in monitoring endpoints. The [readiness checks](../../user/admin_area/monitoring/health_check.md)
|
||||
all require [additional configuration](../monitoring/ip_whitelist.md)
|
||||
all require [additional configuration](../monitoring/ip_allowlist.md)
|
||||
on the nodes being checked, otherwise, the external load balancer will not be able to
|
||||
connect.
|
||||
|
||||
|
|
|
@ -303,7 +303,7 @@ for details on managing SSL certificates and configuring NGINX.
|
|||
|
||||
Ensure the external load balancer only routes to working services with built
|
||||
in monitoring endpoints. The [readiness checks](../../user/admin_area/monitoring/health_check.md)
|
||||
all require [additional configuration](../monitoring/ip_whitelist.md)
|
||||
all require [additional configuration](../monitoring/ip_allowlist.md)
|
||||
on the nodes being checked, otherwise, the external load balancer will not be able to
|
||||
connect.
|
||||
|
||||
|
|
|
@ -309,7 +309,7 @@ for details on managing SSL certificates and configuring NGINX.
|
|||
|
||||
Ensure the external load balancer only routes to working services with built
|
||||
in monitoring endpoints. The [readiness checks](../../user/admin_area/monitoring/health_check.md)
|
||||
all require [additional configuration](../monitoring/ip_whitelist.md)
|
||||
all require [additional configuration](../monitoring/ip_allowlist.md)
|
||||
on the nodes being checked, otherwise, the external load balancer will not be able to
|
||||
connect.
|
||||
|
||||
|
|
|
@ -300,7 +300,7 @@ for details on managing SSL certificates and configuring NGINX.
|
|||
|
||||
Ensure the external load balancer only routes to working services with built
|
||||
in monitoring endpoints. The [readiness checks](../../user/admin_area/monitoring/health_check.md)
|
||||
all require [additional configuration](../monitoring/ip_whitelist.md)
|
||||
all require [additional configuration](../monitoring/ip_allowlist.md)
|
||||
on the nodes being checked, otherwise, the external load balancer is not able to
|
||||
connect.
|
||||
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'deploy_to_aws_ecs.md'
|
||||
remove_date: '2022-09-18'
|
||||
---
|
||||
|
||||
This document was moved to [another location](deploy_to_aws_ecs.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-18>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -11,7 +11,7 @@ GitLab provides Docker images with the libraries and tools you need to deploy
|
|||
to AWS. You can reference these images in your CI/CD pipeline.
|
||||
|
||||
If you're using GitLab.com and deploying to the [Amazon Elastic Container Service](https://aws.amazon.com/ecs/) (ECS),
|
||||
read about [deploying to ECS](ecs/quick_start_guide.md).
|
||||
read about [deploying to ECS](ecs/deploy_to_aws_ecs.md).
|
||||
|
||||
## Authenticate GitLab with AWS
|
||||
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'testing/metrics_reports.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](testing/metrics_reports.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-22>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -205,7 +205,7 @@ The cost factors for jobs running on shared runners on GitLab.com are:
|
|||
- `0.5` for public projects in the [GitLab for Open Source program](../../subscriptions/index.md#gitlab-for-open-source).
|
||||
- `0.008` for public forks of public projects in the [GitLab for Open Source program](../../subscriptions/index.md#gitlab-for-open-source). For every 125 minutes of job execution time,
|
||||
you use 1 CI/CD minute.
|
||||
- `0.04` for other public projects, after September 1, 2022 (previously `0.008`).
|
||||
- `1` for other public projects, after October 1, 2022 (previously `0.04`).
|
||||
For every 25 minutes of job execution time, you use 1 CI/CD minute.
|
||||
- Calculated differently for [community contributions to GitLab projects](#cost-factor-for-community-contributions-to-gitlab-projects).
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ To use merged results pipelines:
|
|||
[run jobs in merge request pipelines](merge_request_pipelines.md#prerequisites).
|
||||
- Your repository must be a GitLab repository, not an
|
||||
[external repository](../ci_cd_for_external_repos/index.md).
|
||||
- You must not be using [fast forward merges](../../user/project/merge_requests/fast_forward_merge.md).
|
||||
- You must not be using [fast forward merges](../../user/project/merge_requests/methods/index.md).
|
||||
[An issue exists](https://gitlab.com/gitlab-org/gitlab/-/issues/26996) to change this behavior.
|
||||
|
||||
## Enable merged results pipelines
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'testing/unit_test_reports.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](testing/unit_test_reports.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-08-31>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -768,7 +768,7 @@ for [deployment jobs](../environments/index.md).
|
|||
For example, the [Kubernetes integration](../../user/project/clusters/deploy_to_cluster.md#deployment-variables)
|
||||
defines deployment variables that you can use with the integration.
|
||||
|
||||
The [documentation for each integration](../../user/project/integrations/overview.md)
|
||||
The [documentation for each integration](../../user/project/integrations/index.md)
|
||||
explains if the integration has any deployment variables available.
|
||||
|
||||
## Auto DevOps environment variables
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../index.md'
|
||||
remove_date: '2022-09-23'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-23>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'database/avoiding_downtime_in_migrations.md'
|
||||
remove_date: '2022-07-08'
|
||||
---
|
||||
|
||||
This document was moved to [another location](database/avoiding_downtime_in_migrations.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-08>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'database/background_migrations.md'
|
||||
remove_date: '2022-07-08'
|
||||
---
|
||||
|
||||
This document was moved to [another location](database/background_migrations.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-08>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'database/batched_background_migrations.md'
|
||||
remove_date: '2022-07-26'
|
||||
---
|
||||
|
||||
This document was moved to [another location](database/batched_background_migrations.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-26>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'database/deleting_migrations.md'
|
||||
remove_date: '2022-07-08'
|
||||
---
|
||||
|
||||
This document was moved to [another location](database/deleting_migrations.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-08>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'index.md'
|
||||
remove_date: '2022-08-05'
|
||||
---
|
||||
|
||||
This document was moved to [another location](index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after 2022-08-05. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'packages/index.md'
|
||||
remove_date: '2022-08-19'
|
||||
---
|
||||
|
||||
This document was moved to [another location](packages/index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-08-19>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'database/post_deployment_migrations.md'
|
||||
remove_date: '2022-07-08'
|
||||
---
|
||||
|
||||
This document was moved to [another location](database/post_deployment_migrations.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-08>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'index.md'
|
||||
remove_date: '2022-07-25'
|
||||
---
|
||||
|
||||
This document was moved to [another location](index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-25>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'index.md'
|
||||
remove_date: '2022-07-25'
|
||||
---
|
||||
|
||||
This document was moved to [another location](index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-25>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../user/index.md'
|
||||
remove_date: '2022-07-08'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../user/index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after 2022-07-08. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -268,7 +268,7 @@ On the EC2 dashboard, look for Load Balancer in the left navigation bar:
|
|||
1. Select **Configure Health Check** and set up a health check for your EC2 instances.
|
||||
1. For **Ping Protocol**, select HTTP.
|
||||
1. For **Ping Port**, enter 80.
|
||||
1. For **Ping Path** - we recommend that you [use the Readiness check endpoint](../../administration/load_balancer.md#readiness-check). You must add [the VPC IP Address Range (CIDR)](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-groups.html#elb-vpc-nacl) to the [IP allowlist](../../administration/monitoring/ip_whitelist.md) for the [Health Check endpoints](../../user/admin_area/monitoring/health_check.md)
|
||||
1. For **Ping Path** - we recommend that you [use the Readiness check endpoint](../../administration/load_balancer.md#readiness-check). You must add [the VPC IP Address Range (CIDR)](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-groups.html#elb-vpc-nacl) to the [IP allowlist](../../administration/monitoring/ip_allowlist.md) for the [Health Check endpoints](../../user/admin_area/monitoring/health_check.md)
|
||||
1. Keep the default **Advanced Details** or adjust them according to your needs.
|
||||
1. Select **Add EC2 Instances** - don't add anything as we create an Auto Scaling Group later to manage instances for us.
|
||||
1. Select **Add Tags** and add any tags you need.
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'docker.md'
|
||||
remove_date: '2022-08-29'
|
||||
---
|
||||
|
||||
This document was moved to [another location](docker.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-08-29>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'advanced_search/elasticsearch.md'
|
||||
remove_date: '2022-09-13'
|
||||
---
|
||||
|
||||
This document was moved to [another location](advanced_search/elasticsearch.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-13>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -43,7 +43,7 @@ your Prometheus integration depends on where your apps are running:
|
|||
- **For a cluster integrated Prometheus** - GitLab can query
|
||||
[an in-cluster Prometheus](../../user/clusters/integrations.md#prometheus-cluster-integration).
|
||||
You must also complete a code deployment to your cluster for the **Monitor > Metrics**
|
||||
page to contain data. You can do this using [Auto DevOps](../../topics/autodevops/quick_start_guide.md).
|
||||
page to contain data. You can do this using [Auto DevOps](../../topics/autodevops/cloud_deployments/auto_devops_with_gke.md).
|
||||
|
||||
![Monitoring Dashboard](img/prometheus_monitoring_dashboard_v13_3.png)
|
||||
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../autodevops/cloud_deployments/auto_devops_with_gke.md'
|
||||
remove_date: '2022-09-18'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../autodevops/cloud_deployments/auto_devops_with_gke.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-18>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -67,7 +67,7 @@ configure the infrastructure for your application.
|
|||
| Topic | Description | Good for beginners |
|
||||
|-------|-------------|--------------------|
|
||||
| [Use GitOps with GitLab](https://about.gitlab.com/blog/2022/04/07/the-ultimate-guide-to-gitops-with-gitlab/) | Learn how to provision and manage a base infrastructure, connect to a Kubernetes cluster, deploy third-party applications, and carry out other infrastructure automation tasks. | |
|
||||
| [Use Auto DevOps to deploy an application](../topics/autodevops/quick_start_guide.md) | Deploy an application to Google Kubernetes Engine (GKE). | |
|
||||
| [Use Auto DevOps to deploy an application](../topics/autodevops/cloud_deployments/auto_devops_with_gke.md) | Deploy an application to Google Kubernetes Engine (GKE). | |
|
||||
|
||||
## Publish a static website
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ traffic until the system is ready or restart the container as needed.
|
|||
## IP allowlist
|
||||
|
||||
To access monitoring resources, the requesting client IP needs to be included in the allowlist.
|
||||
For details, see [how to add IPs to the allowlist for the monitoring endpoints](../../../administration/monitoring/ip_whitelist.md).
|
||||
For details, see [how to add IPs to the allowlist for the monitoring endpoints](../../../administration/monitoring/ip_allowlist.md).
|
||||
|
||||
## Using the endpoints locally
|
||||
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../../clusters/agent/vulnerabilities.md'
|
||||
remove_date: '2022-08-19'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../../clusters/agent/vulnerabilities.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-08-19>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -66,7 +66,7 @@ For more details, see
|
|||
[Dependency Scanning compared to Container Scanning](dependency_scanning/index.md#dependency-scanning-compared-to-container-scanning).
|
||||
|
||||
Additionally, dependencies in operational container images can be analyzed for vulnerabilities
|
||||
on a regular schedule or cadence. For more details, see [Cluster Image Scanning](cluster_image_scanning/index.md).
|
||||
on a regular schedule or cadence. For more details, see [Cluster Image Scanning](../clusters/agent/vulnerabilities.md).
|
||||
|
||||
### Infrastructure analysis
|
||||
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'ci_cd_workflow.md'
|
||||
remove_date: '2022-07-20'
|
||||
---
|
||||
|
||||
This document was moved to [another location](ci_cd_workflow.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-20>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -91,7 +91,7 @@ Read about how to [migrate to the agent for Kubernetes](../../infrastructure/clu
|
|||
- [GitOps examples and learning materials](gitops.md#related-topics)
|
||||
- [GitLab CI/CD workflow](ci_cd_workflow.md)
|
||||
- [Install the agent](install/index.md)
|
||||
- [Work with the agent](repository.md)
|
||||
- [Work with the agent](work_with_agent.md)
|
||||
- [Troubleshooting](troubleshooting.md)
|
||||
- [Guided explorations for a production ready GitOps setup](https://gitlab.com/groups/guided-explorations/gl-k8s-agent/gitops/-/wikis/home#gitlab-agent-for-kubernetes-gitops-working-examples)
|
||||
- [CI/CD for Kubernetes examples and learning materials](ci_cd_workflow.md#related-topics)
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'work_with_agent.md'
|
||||
remove_date: '2022-07-19'
|
||||
---
|
||||
|
||||
This document was moved to [another location](work_with_agent.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-07-19>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
stage: Configure
|
||||
group: Configure
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
remove_date: '2022-08-22'
|
||||
redirect_to: '../../update/removals.md#managed-cluster-applicationsgitlab-ciyml'
|
||||
---
|
||||
|
||||
# GitLab Managed Apps (removed) **(FREE)**
|
||||
|
||||
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/327908) in GitLab 13.12.
|
||||
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/333610) in GitLab 15.0.
|
||||
Use the [cluster management project template](management_project_template.md) instead.
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
stage: Configure
|
||||
group: Configure
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
remove_date: '2022-08-22'
|
||||
redirect_to: '../../update/removals.md#managed-cluster-applicationsgitlab-ciyml'
|
||||
---
|
||||
|
||||
# Crossplane configuration (removed) **(FREE)**
|
||||
|
||||
This feature was [deprecated](https://gitlab.com/groups/gitlab-org/configure/-/epics/8)
|
||||
in GitLab 14.5. and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/333610)
|
||||
in GitLab 15.0. Use [crossplane](https://crossplane.io/) directly instead.
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
stage: Monitor
|
||||
group: Respond
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
remove_date: '2022-08-22'
|
||||
redirect_to: '../../index.md'
|
||||
---
|
||||
|
||||
# Install Elastic Stack with a cluster management project (removed) **(FREE)**
|
||||
|
||||
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/346485) in GitLab 14.8
|
||||
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/360182) in 15.0.
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
stage: Configure
|
||||
group: Configure
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
remove_date: '2022-08-22'
|
||||
redirect_to: '../../../../update/removals.md#gitlab-serverless'
|
||||
---
|
||||
|
||||
# Deploying AWS Lambda function using GitLab CI/CD (removed) **(FREE)**
|
||||
|
||||
This feature was [deprecated](https://gitlab.com/groups/gitlab-org/configure/-/epics/6) in GitLab 14.3 and [removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86267) in GitLab 15.0.
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
stage: Configure
|
||||
group: Configure
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
remove_date: '2022-08-22'
|
||||
redirect_to: '../../../../update/removals.md#gitlab-serverless'
|
||||
---
|
||||
|
||||
# Serverless (removed) **(FREE)**
|
||||
|
||||
This feature was [deprecated](https://gitlab.com/groups/gitlab-org/configure/-/epics/6) in GitLab 14.3 and [removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86267) in GitLab 15.0.
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'index.md'
|
||||
remove_date: '2022-07-20'
|
||||
---
|
||||
|
||||
This document was moved to [another location](index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after 2022-07-20. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../../../ci/testing/accessibility_testing.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../../../ci/testing/accessibility_testing.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-22>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../../../ci/testing/browser_performance_testing.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../../../ci/testing/browser_performance_testing.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-22>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../../../ci/testing/code_quality.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../../../ci/testing/code_quality.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-22>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../../../ci/testing/fail_fast_testing.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../../../ci/testing/fail_fast_testing.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-22>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: 'methods/index.md'
|
||||
remove_date: '2022-08-09'
|
||||
---
|
||||
|
||||
This document was moved to [another location](methods/index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-08-09>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../../../ci/testing/load_performance_testing.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../../../ci/testing/load_performance_testing.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-22>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../../../ci/testing/test_coverage_visualization.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../../../ci/testing/test_coverage_visualization.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-09-22>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
redirect_to: '../../../ci/testing/index.md'
|
||||
remove_date: '2022-08-31'
|
||||
---
|
||||
|
||||
This document was moved to [another location](../../../ci/testing/index.md).
|
||||
|
||||
<!-- This redirect file can be deleted after <2022-08-31>. -->
|
||||
<!-- Redirects that point to other docs in the same project expire in three months. -->
|
||||
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
|
||||
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->
|
|
@ -1,50 +0,0 @@
|
|||
---
|
||||
stage: Create
|
||||
group: Editor
|
||||
info: "To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments"
|
||||
remove_date: '2022-08-03'
|
||||
redirect_to: '../web_ide/index.md'
|
||||
---
|
||||
|
||||
# Static Site Editor (removed) **(FREE)**
|
||||
|
||||
This feature was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/77246) in GitLab 14.7
|
||||
and [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/352505) in 15.0.
|
||||
Use the [Web Editor](../repository/web_editor.md) or [Web IDE](../web_ide/index.md) instead.
|
||||
|
||||
## Remove the Static Site Editor
|
||||
|
||||
The Static Site Editor itself isn't part of your project. To remove the Static Site Editor
|
||||
from an existing project, remove links that point back to the editor:
|
||||
|
||||
1. Remove any links that use `edit_page_url` in your project. If you used the
|
||||
**Middleman - Static Site Editor** project template, the only instance of this
|
||||
helper is located in `/source/layouts/layout.erb`. Remove this line entirely:
|
||||
|
||||
```ruby
|
||||
<%= link_to('Edit this page', edit_page_url(data.config.repository, current_page.file_descriptor.relative_path), id: 'edit-page-link') %>
|
||||
```
|
||||
|
||||
1. In `/data/config.yml`, delete the `repository` key / value pair:
|
||||
|
||||
```yaml
|
||||
repository: https://gitlab.com/<username>/<myproject>
|
||||
```
|
||||
|
||||
- If `repository` is the only value stored in `/data/config.yml`, you can delete the entire file.
|
||||
1. In `/helpers/custom_helpers.rb`, delete `edit_page_url()` and `endcode_path()`:
|
||||
|
||||
```ruby
|
||||
def edit_page_url(base_url, relative_path)
|
||||
"#{base_url}/-/sse/#{encode_path(relative_path)}/"
|
||||
end
|
||||
|
||||
def encode_path(relative_path)
|
||||
ERB::Util.url_encode("master/source/#{relative_path}")
|
||||
end
|
||||
```
|
||||
|
||||
- If `edit_page_url()` and `encode_path()` are the only helpers, you may delete
|
||||
`/helpers/custom_helpers.rb` entirely.
|
||||
1. Clean up any extraneous configuration files.
|
||||
1. Commit and push your changes.
|
|
@ -53,7 +53,7 @@
|
|||
"@gitlab/at.js": "1.5.7",
|
||||
"@gitlab/favicon-overlay": "2.0.0",
|
||||
"@gitlab/svgs": "3.4.0",
|
||||
"@gitlab/ui": "43.18.0",
|
||||
"@gitlab/ui": "43.20.0",
|
||||
"@gitlab/visual-review-tools": "1.7.3",
|
||||
"@gitlab/web-ide": "0.0.1-dev-20220815034418",
|
||||
"@rails/actioncable": "6.1.4-7",
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`~/vue_merge_request_widget/components/widget/dynamic_content.vue renders given data 1`] = `
|
||||
"<content-row-stub level=\\"2\\" statusiconname=\\"success\\" widgetname=\\"MyWidget\\">
|
||||
<div class=\\"gl-mb-2\\"><strong class=\\"gl-display-block\\">This is a header</strong><span class=\\"gl-display-block\\">This is a subheader</span></div>
|
||||
<div class=\\"gl-display-flex gl-flex-direction-column\\">
|
||||
<div>
|
||||
<p class=\\"gl-mb-0\\">Main text for the row</p>
|
||||
<gl-link-stub href=\\"https://gitlab.com\\">Optional link to display after text</gl-link-stub>
|
||||
<!---->
|
||||
<gl-badge-stub size=\\"md\\" variant=\\"info\\">
|
||||
Badge is optional. Text to be displayed inside badge
|
||||
</gl-badge-stub>
|
||||
<actions-stub widget=\\"MyWidget\\" tertiarybuttons=\\"\\" class=\\"gl-ml-auto gl-pl-3\\"></actions-stub>
|
||||
<p class=\\"gl-m-0 gl-font-sm\\">Optional: Smaller sub-text to be displayed below the main text</p>
|
||||
</div>
|
||||
<ul class=\\"gl-m-0 gl-p-0 gl-list-style-none\\">
|
||||
<li>
|
||||
<content-row-stub level=\\"3\\" statusiconname=\\"\\" widgetname=\\"MyWidget\\" data-qa-selector=\\"child_content\\">
|
||||
<div class=\\"gl-mb-2\\"><strong class=\\"gl-display-block\\">Child row header</strong>
|
||||
<!---->
|
||||
</div>
|
||||
<div class=\\"gl-display-flex gl-flex-direction-column\\">
|
||||
<div>
|
||||
<p class=\\"gl-mb-0\\">This is recursive. It will be listed in level 3.</p>
|
||||
<!---->
|
||||
<!---->
|
||||
<!---->
|
||||
<actions-stub widget=\\"MyWidget\\" tertiarybuttons=\\"\\" class=\\"gl-ml-auto gl-pl-3\\"></actions-stub>
|
||||
<!---->
|
||||
</div>
|
||||
<!---->
|
||||
</div>
|
||||
</content-row-stub>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</content-row-stub>"
|
||||
`;
|
|
@ -0,0 +1,56 @@
|
|||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import { EXTENSION_ICONS } from '~/vue_merge_request_widget/constants';
|
||||
import DynamicContent from '~/vue_merge_request_widget/components/widget/dynamic_content.vue';
|
||||
import ContentHeader from '~/vue_merge_request_widget/components/widget/widget_content_header.vue';
|
||||
import ContentBody from '~/vue_merge_request_widget/components/widget/widget_content_body.vue';
|
||||
|
||||
describe('~/vue_merge_request_widget/components/widget/dynamic_content.vue', () => {
|
||||
let wrapper;
|
||||
|
||||
const createComponent = ({ propsData } = {}) => {
|
||||
wrapper = shallowMountExtended(DynamicContent, {
|
||||
propsData: {
|
||||
widgetName: 'MyWidget',
|
||||
...propsData,
|
||||
},
|
||||
stubs: {
|
||||
ContentHeader,
|
||||
ContentBody,
|
||||
DynamicContent,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
it('renders given data', () => {
|
||||
createComponent({
|
||||
propsData: {
|
||||
data: {
|
||||
id: 'row-id',
|
||||
header: ['This is a header', 'This is a subheader'],
|
||||
text: 'Main text for the row',
|
||||
subtext: 'Optional: Smaller sub-text to be displayed below the main text',
|
||||
icon: {
|
||||
name: EXTENSION_ICONS.success,
|
||||
},
|
||||
badge: {
|
||||
text: 'Badge is optional. Text to be displayed inside badge',
|
||||
variant: 'info',
|
||||
},
|
||||
link: {
|
||||
text: 'Optional link to display after text',
|
||||
href: 'https://gitlab.com',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
id: 'row-id-2',
|
||||
header: 'Child row header',
|
||||
text: 'This is recursive. It will be listed in level 3.',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(wrapper.html()).toMatchSnapshot();
|
||||
});
|
||||
});
|
|
@ -1,14 +1,14 @@
|
|||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import WidgetContentSection from '~/vue_merge_request_widget/components/widget/widget_content_section.vue';
|
||||
import StatusIcon from '~/vue_merge_request_widget/components/extensions/status_icon.vue';
|
||||
import WidgetContentBody from '~/vue_merge_request_widget/components/widget/widget_content_body.vue';
|
||||
import StatusIcon from '~/vue_merge_request_widget/components/widget/status_icon.vue';
|
||||
|
||||
describe('~/vue_merge_request_widget/components/widget/widget_content_section.vue', () => {
|
||||
describe('~/vue_merge_request_widget/components/widget/widget_content_body.vue', () => {
|
||||
let wrapper;
|
||||
|
||||
const findStatusIcon = () => wrapper.findComponent(StatusIcon);
|
||||
|
||||
const createComponent = ({ propsData, slots } = {}) => {
|
||||
wrapper = shallowMountExtended(WidgetContentSection, {
|
||||
wrapper = shallowMountExtended(WidgetContentBody, {
|
||||
propsData: {
|
||||
widgetName: 'MyWidget',
|
||||
...propsData,
|
|
@ -0,0 +1,31 @@
|
|||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import WidgetContentHeader from '~/vue_merge_request_widget/components/widget/widget_content_header.vue';
|
||||
|
||||
describe('~/vue_merge_request_widget/components/widget/widget_content_header.vue', () => {
|
||||
let wrapper;
|
||||
|
||||
const createComponent = ({ propsData } = {}) => {
|
||||
wrapper = shallowMountExtended(WidgetContentHeader, {
|
||||
propsData: {
|
||||
widgetName: 'MyWidget',
|
||||
...propsData,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
it('renders an array of header and subheader', () => {
|
||||
createComponent({ propsData: { header: ['this is a header', 'this is a subheader'] } });
|
||||
expect(wrapper.findByText('this is a header').exists()).toBe(true);
|
||||
expect(wrapper.findByText('this is a subheader').exists()).toBe(true);
|
||||
});
|
||||
|
||||
it('renders a string', () => {
|
||||
createComponent({ propsData: { header: 'this is a header' } });
|
||||
expect(wrapper.findByText('this is a header').exists()).toBe(true);
|
||||
});
|
||||
|
||||
it('escapes html injection properly', () => {
|
||||
createComponent({ propsData: { header: '<b role="header">this is a header</b>' } });
|
||||
expect(wrapper.findByText('<b role="header">this is a header</b>').exists()).toBe(true);
|
||||
});
|
||||
});
|
|
@ -0,0 +1,38 @@
|
|||
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
||||
import WidgetContentRow from '~/vue_merge_request_widget/components/widget/widget_content_row.vue';
|
||||
import WidgetContentBody from '~/vue_merge_request_widget/components/widget/widget_content_body.vue';
|
||||
|
||||
describe('~/vue_merge_request_widget/components/widget/widget_content_row.vue', () => {
|
||||
let wrapper;
|
||||
|
||||
const findContentBody = () => wrapper.findComponent(WidgetContentBody);
|
||||
|
||||
const createComponent = ({ propsData, slots } = {}) => {
|
||||
wrapper = shallowMountExtended(WidgetContentRow, {
|
||||
propsData: {
|
||||
widgetName: 'MyWidget',
|
||||
...propsData,
|
||||
},
|
||||
slots,
|
||||
});
|
||||
};
|
||||
|
||||
it('renders slots properly', () => {
|
||||
createComponent({
|
||||
propsData: {
|
||||
statusIconName: 'success',
|
||||
level: 2,
|
||||
},
|
||||
slots: {
|
||||
header: '<b>this is a header</b>',
|
||||
body: '<span>this is a body</span>',
|
||||
},
|
||||
});
|
||||
|
||||
expect(wrapper.findByText('this is a header').exists()).toBe(true);
|
||||
expect(findContentBody().props()).toMatchObject({
|
||||
statusIconName: 'success',
|
||||
widgetName: 'MyWidget',
|
||||
});
|
||||
});
|
||||
});
|
|
@ -5,8 +5,9 @@ import waitForPromises from 'helpers/wait_for_promises';
|
|||
import StatusIcon from '~/vue_merge_request_widget/components/extensions/status_icon.vue';
|
||||
import ActionButtons from '~/vue_merge_request_widget/components/action_buttons.vue';
|
||||
import Widget from '~/vue_merge_request_widget/components/widget/widget.vue';
|
||||
import WidgetContentRow from '~/vue_merge_request_widget/components/widget/widget_content_row.vue';
|
||||
|
||||
describe('MR Widget', () => {
|
||||
describe('~/vue_merge_request_widget/components/widget/widget.vue', () => {
|
||||
let wrapper;
|
||||
|
||||
const findStatusIcon = () => wrapper.findComponent(StatusIcon);
|
||||
|
@ -27,6 +28,10 @@ describe('MR Widget', () => {
|
|||
...propsData,
|
||||
},
|
||||
slots,
|
||||
stubs: {
|
||||
StatusIcon,
|
||||
ContentRow: WidgetContentRow,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe ScheduleDestroyInvalidGroupMembers, :migration do
|
||||
let_it_be(:migration) { described_class::MIGRATION }
|
||||
|
||||
describe '#up' do
|
||||
it 'schedules background jobs for each batch of members' do
|
||||
migrate!
|
||||
|
||||
expect(migration).to have_scheduled_batched_migration(
|
||||
table_name: :members,
|
||||
column_name: :id,
|
||||
interval: described_class::DELAY_INTERVAL,
|
||||
batch_size: described_class::BATCH_SIZE,
|
||||
max_batch_size: described_class::MAX_BATCH_SIZE
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#down' do
|
||||
it 'deletes all batched migration records' do
|
||||
migrate!
|
||||
schema_migrate_down!
|
||||
|
||||
expect(migration).not_to have_scheduled_batched_migration
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,31 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe ScheduleDestroyInvalidProjectMembers, :migration do
|
||||
let_it_be(:migration) { described_class::MIGRATION }
|
||||
|
||||
describe '#up' do
|
||||
it 'schedules background jobs for each batch of members' do
|
||||
migrate!
|
||||
|
||||
expect(migration).to have_scheduled_batched_migration(
|
||||
table_name: :members,
|
||||
column_name: :id,
|
||||
interval: described_class::DELAY_INTERVAL,
|
||||
batch_size: described_class::BATCH_SIZE,
|
||||
max_batch_size: described_class::MAX_BATCH_SIZE
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#down' do
|
||||
it 'deletes all batched migration records' do
|
||||
migrate!
|
||||
schema_migrate_down!
|
||||
|
||||
expect(migration).not_to have_scheduled_batched_migration
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,29 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Capybara
|
||||
MESSAGE = <<~MSG
|
||||
Timeout reached while running a waiting Capybara finder. Consider using a non-waiting finder.
|
||||
See https://www.cloudbees.com/blog/faster-rails-tests
|
||||
MSG
|
||||
|
||||
module Node
|
||||
class Base
|
||||
# Inspired by https://github.com/ngauthier/capybara-slow_finder_errors
|
||||
module SlowFinder
|
||||
def synchronize(seconds = nil, errors: nil)
|
||||
start_time = Gitlab::Metrics::System.monotonic_time
|
||||
|
||||
super
|
||||
rescue Capybara::ElementNotFound => e
|
||||
seconds ||= Capybara.default_max_wait_time
|
||||
|
||||
raise e unless seconds > 0 && Gitlab::Metrics::System.monotonic_time - start_time > seconds
|
||||
|
||||
raise e, "#{$!}#{MESSAGE}", e.backtrace
|
||||
end
|
||||
end
|
||||
|
||||
prepend SlowFinder
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,60 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Capybara::Node::Base::SlowFinder do # rubocop:disable RSpec/FilePath
|
||||
context 'without timeout' do
|
||||
context 'when element is found' do
|
||||
let(:slow_finder) do
|
||||
Class.new do
|
||||
def synchronize(seconds = nil, errors: nil)
|
||||
true
|
||||
end
|
||||
|
||||
prepend Capybara::Node::Base::SlowFinder
|
||||
end.new
|
||||
end
|
||||
|
||||
it 'does not raise error' do
|
||||
expect { slow_finder.synchronize }.not_to raise_error
|
||||
end
|
||||
end
|
||||
|
||||
context 'when element is not found' do
|
||||
let(:slow_finder) do
|
||||
Class.new do
|
||||
def synchronize(seconds = nil, errors: nil)
|
||||
raise Capybara::ElementNotFound
|
||||
end
|
||||
|
||||
prepend Capybara::Node::Base::SlowFinder
|
||||
end.new
|
||||
end
|
||||
|
||||
it 'raises Capybara::ElementNotFound error' do
|
||||
expect { slow_finder.synchronize }.to raise_error(Capybara::ElementNotFound)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'with timeout' do
|
||||
let(:slow_finder) do
|
||||
Class.new do
|
||||
def synchronize(seconds = nil, errors: nil)
|
||||
sleep 0.1
|
||||
|
||||
raise Capybara::ElementNotFound
|
||||
end
|
||||
|
||||
prepend Capybara::Node::Base::SlowFinder
|
||||
end.new
|
||||
end
|
||||
|
||||
it 'raises a timeout error' do
|
||||
expect { slow_finder.synchronize(0.01) }.to raise_error(
|
||||
Capybara::ElementNotFound,
|
||||
/Timeout reached while running a waiting Capybara finder./
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1074,10 +1074,10 @@
|
|||
resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-3.4.0.tgz#cfc8319e259e5914ad0f48ee0ab6e0eec75d03da"
|
||||
integrity sha512-myCYbjViOI2k6oHGRqL1iKaMKbYvPqWL6tYZ07QkUKziVz5kYjECWk5c0Qp6yu9NsFAMWuow5PkR3oFTGBHmbg==
|
||||
|
||||
"@gitlab/ui@43.18.0":
|
||||
version "43.18.0"
|
||||
resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-43.18.0.tgz#7c412eebe362052dae811502586e1fd100c28be0"
|
||||
integrity sha512-hAyBjYQtOFbVWt4XhUBgth/OtNg2cTQ7KMv0JSLLTnvrrrASJu0Li1ROaat81YsT+kGWytM/Fgr283ISNzy/vw==
|
||||
"@gitlab/ui@43.20.0":
|
||||
version "43.20.0"
|
||||
resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-43.20.0.tgz#f57b0ea8b01317a383695061f185acb7c92447d9"
|
||||
integrity sha512-ck1gXmWTh6vNSpz9QzCt9Lv9Twvj+BRGkiNexICOB3j9Y6UZbTdBKANu1eiGZnM+kh0v2z3H3Cbo3f95hwywqA==
|
||||
dependencies:
|
||||
"@popperjs/core" "^2.11.2"
|
||||
bootstrap-vue "2.20.1"
|
||||
|
|
Loading…
Reference in New Issue