Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2022-10-03 15:09:42 +00:00
parent 077b0a79d5
commit a99d0fa692
96 changed files with 656 additions and 635 deletions

View File

@ -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

View File

@ -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
# ------------------------------------------

View File

@ -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

View File

@ -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
# ------------------------------------------

View File

@ -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'

View File

@ -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'

View File

@ -1 +1 @@
5cba52f4acb04ddbe27d8b7cb2e936ea0be45ae1
4c15523cf680c107c5aa2b8268674cd0345a6b78

View File

@ -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>

View File

@ -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"

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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;
}

View File

@ -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 {

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
946e773d09863fe029507ac44b41a61ed0b6b766f7296759743cf09addfacfcd

View File

@ -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. |

View File

@ -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

View File

@ -1,6 +0,0 @@
---
redirect_to: 'index.md'
remove_date: '2022-08-24'
---
This document was moved to [another location](index.md).

View File

@ -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

View File

@ -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.

View File

@ -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 -->

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '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.

View File

@ -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

View File

@ -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

View File

@ -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 -->

View File

@ -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)

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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 -->

View File

@ -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

View File

@ -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 -->

View File

@ -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).

View File

@ -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

View File

@ -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 -->

View File

@ -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

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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.

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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)

View File

@ -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 -->

View File

@ -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

View File

@ -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

View File

@ -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 -->

View File

@ -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

View File

@ -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 -->

View File

@ -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)

View File

@ -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 -->

View File

@ -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.

View File

@ -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.

View File

@ -1,12 +0,0 @@
---
stage: Monitor
group: Respond
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '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.

View File

@ -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.

View File

@ -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.

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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 -->

View File

@ -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.

View File

@ -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",

View File

@ -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>"
`;

View File

@ -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();
});
});

View File

@ -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,

View File

@ -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);
});
});

View File

@ -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',
});
});
});

View File

@ -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,
},
});
};

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"