Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2024-12-02 12:19:42 +00:00
parent 3dfa4bff20
commit 0545a43e37
200 changed files with 2055 additions and 1904 deletions

View File

@ -39,6 +39,41 @@ review-docs-cleanup:
script:
- ./scripts/trigger-build.rb docs cleanup
.review-docs-hugo:
extends:
- .default-retry
- .docs:rules:review-docs
image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-alpine
stage: review
needs: []
variables:
GIT_DEPTH: 1
# By default, deploy the Review App using the `main` branch of the `gitlab-org/technical-writing-group/gitlab-docs-hugo` project
DOCS_BRANCH: main
environment:
name: review-docs/mr-${CI_MERGE_REQUEST_IID}-hugo
auto_stop_in: 2 weeks
url: https://new.docs.gitlab.com/upstream-review-mr-${DOCS_GITLAB_REPO_SUFFIX}-${CI_MERGE_REQUEST_IID}
on_stop: review-docs-hugo-cleanup
before_script:
- source ./scripts/utils.sh
- install_gitlab_gem
# Deploy documentation review app by using GitLab Docs Hugo project (gitlab-org/technical-writing-group/gitlab-docs-hugo)
review-docs-hugo-deploy:
extends: .review-docs-hugo
script:
- ./scripts/trigger-build.rb docs-hugo deploy
# Cleanup remote environment of gitlab-org/technical-writing-group/gitlab-docs-hugo
review-docs-hugo-cleanup:
extends: .review-docs-hugo
environment:
name: review-docs/mr-${CI_MERGE_REQUEST_IID}-hugo
action: stop
script:
- ./scripts/trigger-build.rb docs-hugo cleanup
.docs-markdown-lint-image:
# When updating the image version here, update it in /scripts/lint-doc.sh too.
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-docs/lint-markdown:alpine-3.20-vale-3.7.1-markdownlint2-0.14.0-lychee-0.15.1

View File

@ -2,7 +2,6 @@
# Cop supports --autocorrect.
Layout/ArgumentAlignment:
Exclude:
- 'ee/app/services/ee/issues/clone_service.rb'
- 'ee/app/services/ee/keys/create_service.rb'
- 'ee/app/services/ee/projects/create_from_template_service.rb'
- 'ee/app/services/ee/projects/gitlab_projects_import_service.rb'

View File

@ -45,7 +45,7 @@ export default {
return {
text: __('New custom emoji'),
attributes: {
variant: 'info',
variant: 'confirm',
to: '/new',
},
};

View File

@ -39,7 +39,6 @@ export default {
modalProps: {
primary: {
text: s__('Environments|Clean up'),
attributes: [{ variant: 'info' }],
},
cancel: {
text: __('Cancel'),

View File

@ -1,5 +1,6 @@
<script>
import { GlBadge, GlButton } from '@gitlab/ui';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import ProtectedBadge from '~/vue_shared/components/badges/protected_badge.vue';
import { s__, sprintf, n__ } from '~/locale';
import { accessLevelsConfig } from '~/projects/settings/branch_rules/components/view/constants';
@ -18,12 +19,14 @@ export default {
matchingBranches: s__('BranchRules|%{total} matching %{subject}'),
pushAccessLevels: s__('BranchRules|Allowed to push and merge'),
mergeAccessLevels: s__('BranchRules|Allowed to merge'),
squashSetting: s__('BranchRules|Squash commits: %{setting}'),
},
components: {
GlBadge,
GlButton,
ProtectedBadge,
},
mixins: [glFeatureFlagsMixin()],
inject: {
branchRulesPath: {
default: '',
@ -94,6 +97,11 @@ export default {
subject: n__('branch', 'branches', this.matchingBranchesCount),
});
},
squashSettingText() {
return sprintf(this.$options.i18n.squashSetting, {
setting: this.branchProtection?.squashSetting,
});
},
mergeAccessLevels() {
const { mergeAccessLevels } = this.branchProtection || {};
return this.getAccessLevels(mergeAccessLevels);
@ -131,6 +139,9 @@ export default {
if (this.pushAccessLevels.total > 0) {
approvalDetails.push(this.pushAccessLevelsText);
}
if (this.glFeatures.branchRuleSquashSettings && this.branchProtection?.squashSetting) {
approvalDetails.push(this.squashSettingText);
}
return approvalDetails;
},
},

View File

@ -43,12 +43,6 @@ export const VISUALIZATION_TYPE_SINGLE_STAT = 'SingleStat';
export const EVENT_LABEL_VIEWED_DASHBOARD_DESIGNER = 'user_viewed_dashboard_designer';
export const EVENT_LABEL_EXCLUDE_ANONYMISED_USERS = 'exclude_anonymised_users';
export const AI_IMPACT_DASHBOARD = 'ai_impact';
// The URL name already in use is `value_streams_dashboard`,
// the slug name for a dashboard must match the URL path that is used
export const BUILT_IN_VALUE_STREAM_DASHBOARD = 'value_streams_dashboard';
// The URL for shared analytics dashboards is based on the name of the YAML config
// YAML configured VSD uses `/value_streams` for the custom file name
export const CUSTOM_VALUE_STREAM_DASHBOARD = 'value_streams';

View File

@ -1,13 +1,5 @@
<script>
import {
GlButton,
GlFormInput,
GlFormGroup,
GlLink,
GlIcon,
GlSprintf,
GlExperimentBadge,
} from '@gitlab/ui';
import { GlButton, GlFormInput, GlFormGroup, GlIcon, GlExperimentBadge } from '@gitlab/ui';
import { isEqual } from 'lodash';
import { createAlert } from '~/alert';
import { cloneWithoutReferences } from '~/lib/utils/common_utils';
@ -17,13 +9,10 @@ import { InternalEvents } from '~/tracking';
import UrlSync, { HISTORY_REPLACE_UPDATE_METHOD } from '~/vue_shared/components/url_sync.vue';
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';
import { helpPagePath } from '~/helpers/help_page_helper';
import {
EVENT_LABEL_VIEWED_DASHBOARD_DESIGNER,
EVENT_LABEL_EXCLUDE_ANONYMISED_USERS,
DASHBOARD_STATUS_BETA,
AI_IMPACT_DASHBOARD,
BUILT_IN_VALUE_STREAM_DASHBOARD,
CUSTOM_VALUE_STREAM_DASHBOARD,
} from './constants';
import GridstackWrapper from './gridstack_wrapper.vue';
@ -43,9 +32,7 @@ export default {
GlButton,
GlFormInput,
GlIcon,
GlLink,
GlFormGroup,
GlSprintf,
GlExperimentBadge,
UrlSync,
AvailableVisualizationsDrawer,
@ -155,12 +142,6 @@ export default {
getDashboardConfig(this.dashboard),
);
},
isValueStreamsDashboard() {
return this.dashboard.slug === BUILT_IN_VALUE_STREAM_DASHBOARD;
},
isAiImpactDashboard() {
return this.dashboard.slug === AI_IMPACT_DASHBOARD;
},
},
watch: {
isNewDashboard(isNew) {
@ -344,19 +325,9 @@ export default {
this.dashboard.panels.push(...panels);
},
},
i18n: {
alternativeAiImpactDescription: s__(
'Analytics|Visualize the relation between AI usage and SDLC trends. Learn more about %{docsLinkStart}AI Impact analytics%{docsLinkEnd} and %{subscriptionLinkStart}GitLab Duo Pro seats usage%{subscriptionLinkEnd}.',
),
},
HISTORY_REPLACE_UPDATE_METHOD,
FORM_GROUP_CLASS: 'gl-w-full sm:gl-w-3/10 gl-min-w-20 gl-m-0',
FORM_INPUT_CLASS: 'form-control gl-mr-4 gl-border-gray-200',
VSD_DOCUMENTATION_LINK: helpPagePath('user/analytics/value_streams_dashboard'),
AI_IMPACT_DOCUMENTATION_LINK: helpPagePath('user/analytics/ai_impact_analytics'),
DUO_PRO_SUBSCRIPTION_ADD_ON_LINK: helpPagePath('subscriptions/subscription-add-ons', {
anchor: 'assign-gitlab-duo-seats',
}),
};
</script>
@ -382,31 +353,8 @@ export default {
data-testid="dashboard-description"
>
<p class="gl-mb-0">
<!-- TODO: Remove this alternative description in https://gitlab.com/gitlab-org/gitlab/-/issues/465569 -->
<gl-sprintf
v-if="isAiImpactDashboard"
:message="$options.i18n.alternativeAiImpactDescription"
>
<template #docsLink="{ content }">
<gl-link :href="$options.AI_IMPACT_DOCUMENTATION_LINK">{{ content }}</gl-link>
</template>
<template #subscriptionLink="{ content }">
<gl-link :href="$options.DUO_PRO_SUBSCRIPTION_ADD_ON_LINK">{{ content }}</gl-link>
</template>
</gl-sprintf>
<template v-else>
{{ dashboardDescription }}
<!-- TODO: Remove this link in https://gitlab.com/gitlab-org/gitlab/-/issues/465569 -->
<gl-sprintf
v-if="isValueStreamsDashboard"
:message="__('%{linkStart} Learn more%{linkEnd}.')"
>
<template #link="{ content }">
<gl-link :href="$options.VSD_DOCUMENTATION_LINK">{{ content }}</gl-link>
</template>
</gl-sprintf>
</template>
{{ dashboardDescription }}
<slot name="after-description"></slot>
</p>
</div>

View File

@ -11,6 +11,7 @@ import {
sprintfWorkItem,
I18N_WORK_ITEM_ERROR_FETCHING_TYPES,
ROUTES,
RELATED_ITEM_ID_URL_QUERY_PARAM,
} from '../constants';
import namespaceWorkItemTypesQuery from '../graphql/namespace_work_item_types.query.graphql';
import CreateWorkItem from './create_work_item.vue';
@ -134,6 +135,7 @@ export default {
fullPath: this.fullPath,
isGroup: this.isGroup,
workItemTypeName: this.workItemTypeName,
query: this.relatedItem ? `?${RELATED_ITEM_ID_URL_QUERY_PARAM}=${this.relatedItem.id}` : '',
});
},
newWorkItemText() {
@ -202,7 +204,10 @@ export default {
event.preventDefault();
if (this.useVueRouter) {
this.$router.push({ name: ROUTES.new });
this.$router.push({
name: ROUTES.new,
query: { [RELATED_ITEM_ID_URL_QUERY_PARAM]: this.relatedItem?.id },
});
} else {
visitUrl(this.newWorkItemPath);
}

View File

@ -188,6 +188,10 @@ export default {
required: false,
default: false,
},
isGroup: {
type: Boolean,
required: true,
},
},
data() {
return {
@ -551,6 +555,7 @@ export default {
:related-item="relatedItemData"
:work-item-type-name="workItemType.toUpperCase()"
:show-project-selector="!isEpic"
:is-group="isGroup"
hide-button
@workItemCreated="$emit('workItemCreated')"
@hideModal="isCreateWorkItemModalVisible = false"

View File

@ -676,6 +676,7 @@ export default {
:is-sticky-header-showing="isStickyHeaderShowing"
:work-item-notifications-subscribed="workItemNotificationsSubscribed"
:work-item-author-id="workItemAuthorId"
:is-group="isGroupWorkItem"
@hideStickyHeader="hideStickyHeader"
@showStickyHeader="showStickyHeader"
@deleteWorkItem="$emit('deleteWorkItem', { workItemType, workItemId: workItem.id })"
@ -773,6 +774,7 @@ export default {
:has-children="hasChildren"
:work-item-author-id="workItemAuthorId"
:can-create-related-item="workItemLinkedItems !== undefined"
:is-group="isGroupWorkItem"
@deleteWorkItem="$emit('deleteWorkItem', { workItemType, workItemId: workItem.id })"
@toggleWorkItemConfidentiality="toggleConfidentiality"
@error="updateError = $event"

View File

@ -71,6 +71,10 @@ export default {
required: false,
default: 0,
},
isGroup: {
type: Boolean,
required: true,
},
},
computed: {
canUpdate() {
@ -175,6 +179,7 @@ export default {
:work-item-state="workItem.state"
:is-modal="isModal"
:work-item-author-id="workItemAuthorId"
:is-group="isGroup"
@deleteWorkItem="$emit('deleteWorkItem')"
@toggleWorkItemConfidentiality="
$emit('toggleWorkItemConfidentiality', !workItem.confidential)

View File

@ -344,6 +344,7 @@ export const DEFAULT_EPIC_COLORS = '#1068bf';
export const MAX_FREQUENT_PROJECTS = 3;
export const CREATE_NEW_WORK_ITEM_MODAL = 'create_new_work_item_modal';
export const RELATED_ITEM_ID_URL_QUERY_PARAM = 'related_item_id';
export const WORK_ITEM_REFERENCE_CHAR = '#';

View File

@ -0,0 +1,10 @@
query workItemRelatedItem($id: WorkItemID!) {
workItem(id: $id) {
id
reference
workItemType {
id
name
}
}
}

View File

@ -1,7 +1,8 @@
<script>
import { visitUrl } from '~/lib/utils/url_utility';
import { visitUrl, getParameterByName, updateHistory, removeParams } from '~/lib/utils/url_utility';
import CreateWorkItem from '../components/create_work_item.vue';
import { ROUTES } from '../constants';
import { ROUTES, RELATED_ITEM_ID_URL_QUERY_PARAM } from '../constants';
import workItemRelatedItemQuery from '../graphql/work_item_related_item.query.graphql';
export default {
name: 'CreateWorkItemPage',
@ -16,6 +17,36 @@ export default {
default: null,
},
},
data() {
return {
relatedItem: null,
relatedItemId: getParameterByName(RELATED_ITEM_ID_URL_QUERY_PARAM),
};
},
apollo: {
relatedItem: {
query: workItemRelatedItemQuery,
variables() {
return {
id: this.relatedItemId,
};
},
skip() {
return !this.relatedItemId;
},
update(data) {
return {
id: this.relatedItemId,
reference: data.workItem.reference,
type: data.workItem.workItemType.name,
};
},
error() {
// if we cannot find an item with the given id, ignore it and remove it from the url.
updateHistory({ url: removeParams([RELATED_ITEM_ID_URL_QUERY_PARAM]), replace: true });
},
},
},
methods: {
workItemCreated(workItem) {
if (this.$router) {
@ -35,6 +66,7 @@ export default {
<create-work-item
:work-item-type-name="workItemTypeName"
:is-group="isGroup"
:related-item="relatedItem"
@workItemCreated="workItemCreated"
/>
</template>

View File

@ -161,12 +161,12 @@ export const markdownPreviewPath = ({ fullPath, iid, isGroup = false }) => {
};
// the path for creating a new work item of that type, e.g. /groups/gitlab-org/-/epics/new
export const newWorkItemPath = ({ fullPath, isGroup = false, workItemTypeName }) => {
export const newWorkItemPath = ({ fullPath, isGroup = false, workItemTypeName, query = '' }) => {
const domain = gon.relative_url_root || '';
const basePath = isGroup ? `groups/${fullPath}` : fullPath;
const type =
WORK_ITEMS_TYPE_MAP[workItemTypeName]?.routeParamName || WORK_ITEM_TYPE_ROUTE_WORK_ITEM;
return `${domain}/${basePath}/-/${type}/new`;
return `${domain}/${basePath}/-/${type}/new${query}`;
};
export const getDisplayReference = (workItemFullPath, workitemReference) => {

View File

@ -9,6 +9,7 @@ module Projects
before_action do
push_frontend_feature_flag(:edit_branch_rules, @project)
push_frontend_feature_flag(:branch_rule_squash_settings, @project)
push_frontend_ability(ability: :admin_project, resource: @project, user: current_user)
push_frontend_ability(ability: :admin_protected_branch, resource: @project, user: current_user)
end

View File

@ -22,7 +22,6 @@ module Projects
def relation
@experiments = ::Ml::Experiment
.by_project(project)
.exclude_experiments_for_models
.including_project
with_candidate_count

View File

@ -323,8 +323,6 @@ class Packages::Package < ApplicationRecord
# This is a temp advisory lock to prevent race conditions. We will switch to use database `upsert`
# once we have a database unique index: https://gitlab.com/gitlab-org/gitlab/-/issues/424238#note_2187274213
def prevent_concurrent_inserts
return if Feature.disabled?(:use_exclusive_lease_in_mvn_find_or_create_package, project)
lock_key = [self.class.table_name, project_id, name, version].join('-')
lock_expression = "hashtext(#{connection.quote(lock_key)})"

View File

@ -15,8 +15,6 @@ class SentNotification < ApplicationRecord
validates :in_reply_to_discussion_id, format: { with: /\A\h{40}\z/, allow_nil: true }
validate :note_valid
after_save :keep_around_commit, if: :for_commit?
class << self
def reply_key
SecureRandom.hex(16)
@ -122,8 +120,4 @@ class SentNotification < ApplicationRecord
)
end
end
def keep_around_commit
project.repository.keep_around(self.commit_id, source: self.class.name)
end
end

View File

@ -107,8 +107,6 @@ class Todo < ApplicationRecord
state :done
end
after_save :keep_around_commit, if: :commit_id
class << self
# Returns all todos for the given group ids and their descendants.
#
@ -388,10 +386,6 @@ class Todo < ApplicationRecord
private
def keep_around_commit
project.repository.keep_around(self.commit_id, source: self.class.name)
end
def build_work_item_target_url
::Gitlab::UrlBuilder.build(
target,

View File

@ -18,12 +18,7 @@ module Packages
ServiceResponse.success(payload: { package: package })
rescue ActiveRecord::RecordInvalid => e
reason = if e.record&.errors&.of_kind?(:name, :taken) && ::Feature.enabled?(
:use_exclusive_lease_in_mvn_find_or_create_package, project)
:name_taken
else
:invalid_parameter
end
reason = e.record&.errors&.of_kind?(:name, :taken) ? :name_taken : :invalid_parameter
ServiceResponse.error(message: e.message, reason: reason)
end

View File

@ -4,6 +4,6 @@ feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/458062
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/159610
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/483039
milestone: '17.5'
group: group::static analysis
group: group::security platform management
type: beta
default_enabled: true

View File

@ -4,6 +4,6 @@ feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/458062
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/157858
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/465776
milestone: '17.2'
group: group::static analysis
group: group::security platform management
type: beta
default_enabled: true

View File

@ -1,9 +1,9 @@
---
name: use_exclusive_lease_in_mvn_find_or_create_package
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/424238
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170916
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/501019
milestone: '17.6'
group: group::package registry
type: gitlab_com_derisk
name: branch_rule_squash_settings
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/498701
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173991
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/506542
milestone: '17.7'
group: group::source code
type: wip
default_enabled: false

View File

@ -4,9 +4,7 @@ class AddHighestSeverityAndVulnerabilityCountIntoSbomOccurrences < Gitlab::Datab
milestone '16.7'
def change
add_column :sbom_occurrences, :highest_severity, :smallint, null: true # rubocop:disable Migration/PreventAddingColumns -- Legacy migration
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :sbom_occurrences, :highest_severity, :smallint, null: true
add_column :sbom_occurrences, :vulnerability_count, :integer, null: false, default: 0
# rubocop:enable Migration/PreventAddingColumns
end
end

View File

@ -13,9 +13,7 @@ class CreateSbomSourcePackagesTable < Gitlab::Database::Migration[2.2]
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
with_lock_retries do
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :sbom_occurrences, :source_package_id, :bigint, if_not_exists: true
# rubocop:enable Migration/PreventAddingColumns
end
create_table :sbom_source_packages, if_not_exists: true do |t|

View File

@ -7,11 +7,9 @@ class AddIndexSentNotificationsOnIssueEmailParticipantId < Gitlab::Database::Mig
INDEX_NAME = 'index_sent_notifications_on_issue_email_participant_id'
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
add_concurrent_index :sent_notifications, :issue_email_participant_id, name: INDEX_NAME
end
# rubocop:enable Migration/PreventIndexCreation
def down
remove_concurrent_index_by_name :sent_notifications, INDEX_NAME

View File

@ -5,8 +5,6 @@ class AddPartitionIdToPipelineConfig < Gitlab::Database::Migration[2.2]
enable_lock_retries!
def change
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column(:ci_pipelines_config, :partition_id, :bigint, default: 100, null: false)
# rubocop:enable Migration/PreventAddingColumns
end
end

View File

@ -4,11 +4,7 @@ class AddArchivedAndTraversalIdsColumnsToSbomOccurrences < Gitlab::Database::Mig
milestone '16.9'
def change
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :sbom_occurrences, :archived, :boolean, default: false, null: false
# rubocop:enable Migration/PreventAddingColumns
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :sbom_occurrences, :traversal_ids, 'bigint[]', default: [], null: false
# rubocop:enable Migration/PreventAddingColumns
end
end

View File

@ -6,9 +6,7 @@ class AddAncestorsColumnToSbomOccurrences < Gitlab::Database::Migration[2.2]
enable_lock_retries!
def up
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :sbom_occurrences, :ancestors, :jsonb, default: [], null: false
# rubocop:enable Migration/PreventAddingColumns
end
def down

View File

@ -6,9 +6,7 @@ class AddFileFinalPathToPackagesPackageFiles < Gitlab::Database::Migration[2.2]
def up
with_lock_retries do
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :packages_package_files, :file_final_path, :text, if_not_exists: true
# rubocop:enable Migration/PreventAddingColumns
end
add_text_limit :packages_package_files, :file_final_path, 1024

View File

@ -4,8 +4,6 @@ class AddPartitionIdToCiPipelineMessage < Gitlab::Database::Migration[2.2]
milestone '17.1'
def change
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column(:ci_pipeline_messages, :partition_id, :bigint, default: 100, null: false)
# rubocop:enable Migration/PreventAddingColumns
end
end

View File

@ -7,9 +7,7 @@ class AddAdvancedTokenScope < Gitlab::Database::Migration[2.2]
def up
with_lock_retries do
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :personal_access_tokens, :advanced_scopes, :text, if_not_exists: true
# rubocop:enable Migration/PreventAddingColumns
end
add_text_limit :personal_access_tokens, :advanced_scopes, 4096

View File

@ -4,6 +4,8 @@ class AddAutoCanceledByPartitionIdToCiPipelines < Gitlab::Database::Migration[2.
milestone '17.2'
def change
add_column :ci_pipelines, :auto_canceled_by_partition_id, :bigint # rubocop:disable Migration/PreventAddingColumns -- Legacy migration
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :ci_pipelines, :auto_canceled_by_partition_id, :bigint
# rubocop:enable Migration/PreventAddingColumns
end
end

View File

@ -4,6 +4,6 @@ class AddProjectIdToPackagesPackageFiles < Gitlab::Database::Migration[2.2]
milestone '17.3'
def change
add_column :packages_package_files, :project_id, :bigint # rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :packages_package_files, :project_id, :bigint
end
end

View File

@ -4,6 +4,6 @@ class AddProjectIdToVulnerabilityOccurrencePipelines < Gitlab::Database::Migrati
milestone '17.3'
def change
add_column :vulnerability_occurrence_pipelines, :project_id, :bigint # rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :vulnerability_occurrence_pipelines, :project_id, :bigint
end
end

View File

@ -4,9 +4,7 @@ class AddProjectIdToMergeRequestDiffCommitsB5377a7a34 < Gitlab::Database::Migrat
milestone '17.3'
def up
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :merge_request_diff_commits_b5377a7a34, :project_id, :bigint
# rubocop:enable Migration/PreventAddingColumns
end
def down

View File

@ -4,7 +4,7 @@ class AddProjectIdToMergeRequestDiffFiles99208b8fac < Gitlab::Database::Migratio
milestone '17.3'
def up
add_column :merge_request_diff_files_99208b8fac, :project_id, :bigint # rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :merge_request_diff_files_99208b8fac, :project_id, :bigint
end
def down

View File

@ -9,9 +9,7 @@ class AddOrganizationIdToPersonalAccessTokens < Gitlab::Database::Migration[2.2]
def up
with_lock_retries do
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :personal_access_tokens, :organization_id, :bigint, default: DEFAULT_ORGANIZATION_ID, null: false,
# rubocop:enable Migration/PreventAddingColumns
if_not_exists: true
end
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration

View File

@ -4,7 +4,7 @@ class AddReachabilityColumnToSbomOccurancesTable < Gitlab::Database::Migration[2
milestone '17.4'
def up
with_lock_retries do
add_column :sbom_occurrences, :reachability, :smallint, default: 0 # rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :sbom_occurrences, :reachability, :smallint, default: 0 # -- Legacy migration
end
end

View File

@ -4,15 +4,9 @@ class AddNotificationColsToPersonalAccessTokens < Gitlab::Database::Migration[2.
milestone '17.4'
def up
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :personal_access_tokens, :seven_days_notification_sent_at, :datetime_with_timezone
# rubocop:enable Migration/PreventAddingColumns
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :personal_access_tokens, :thirty_days_notification_sent_at, :datetime_with_timezone
# rubocop:enable Migration/PreventAddingColumns
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :personal_access_tokens, :sixty_days_notification_sent_at, :datetime_with_timezone
# rubocop:enable Migration/PreventAddingColumns
end
def down

View File

@ -4,6 +4,6 @@ class AddProjectIdToCiPipelineMessages < Gitlab::Database::Migration[2.2]
milestone '17.6'
def change
add_column(:ci_pipeline_messages, :project_id, :bigint) # rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column(:ci_pipeline_messages, :project_id, :bigint)
end
end

View File

@ -4,8 +4,6 @@ class AddAutoResolvedToVulnerabilities < Gitlab::Database::Migration[2.2]
milestone '17.6'
def change
# rubocop:disable Migration/PreventAddingColumns -- Legacy migration
add_column :vulnerabilities, :auto_resolved, :boolean, null: false, default: false, if_not_exists: true
# rubocop:enable Migration/PreventAddingColumns
end
end

View File

@ -6,11 +6,9 @@ class AddMergeRequestDiffsProjectIdIndexAsync < Gitlab::Database::Migration[2.2]
INDEX_NAME = 'index_merge_request_diffs_on_project_id'
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
prepare_async_index :merge_request_diffs, :project_id, name: INDEX_NAME
end
# rubocop:enable Migration/PreventIndexCreation
def down
unprepare_async_index :merge_request_diffs, :project_id, name: INDEX_NAME

View File

@ -6,11 +6,9 @@ class AddMergeRequestDiffsProjectIdIndex < Gitlab::Database::Migration[2.2]
INDEX_NAME = 'index_merge_request_diffs_on_project_id'
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
add_concurrent_index :merge_request_diffs, :project_id, name: INDEX_NAME
end
# rubocop:enable Migration/PreventIndexCreation
def down
remove_concurrent_index_by_name :merge_request_diffs, name: INDEX_NAME

View File

@ -6,11 +6,9 @@ class PrepareIidNamespaceUniqueIndexInIssues < Gitlab::Database::Migration[2.2]
milestone '16.8'
# TODO: Index to be created synchronously in https://gitlab.com/gitlab-org/gitlab/-/issues/435856
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
prepare_async_index :issues, [:namespace_id, :iid], unique: true, name: INDEX_NAME
end
# rubocop:enable Migration/PreventIndexCreation
def down
unprepare_async_index :issues, [:namespace_id, :iid], unique: true, name: INDEX_NAME

View File

@ -7,11 +7,9 @@ class AddIidNamespaceUniqueIndexToIssues < Gitlab::Database::Migration[2.2]
milestone '16.8'
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
add_concurrent_index :issues, [:namespace_id, :iid], name: INDEX_NAME, unique: true
end
# rubocop:enable Migration/PreventIndexCreation
def down
remove_concurrent_index_by_name :issues, INDEX_NAME

View File

@ -6,11 +6,9 @@ class ScheduleIndexToEventsAuthorGroupActionTargetTypeCreatedAt < Gitlab::Databa
INDEX_NAME = 'index_events_author_id_group_id_action_target_type_created_at'
COLUMNS = [:author_id, :group_id, :action, :target_type, :created_at]
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
prepare_async_index :events, COLUMNS, name: INDEX_NAME
end
# rubocop:enable Migration/PreventIndexCreation
def down
unprepare_async_index :events, COLUMNS, name: INDEX_NAME

View File

@ -7,7 +7,9 @@ class AddIndexToCiJobArtifactStates < Gitlab::Database::Migration[2.2]
TABLE_NAME = :ci_job_artifact_states
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index(TABLE_NAME, [:job_artifact_id, :partition_id], name: INDEX_NAME)
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -7,9 +7,7 @@ class AddIndexToCiBuildTraceMetadata < Gitlab::Database::Migration[2.2]
TABLE_NAME = :ci_build_trace_metadata
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index(TABLE_NAME, [:trace_artifact_id, :partition_id], name: INDEX_NAME)
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -8,9 +8,7 @@ class AddIndexOwaspTop10WithProjectIdOnVulnerabilityReads < Gitlab::Database::Mi
INDEX_NAME = 'index_vuln_reads_on_project_id_owasp_top_10'
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index :vulnerability_reads, [:project_id, :owasp_top_10], name: INDEX_NAME
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -8,11 +8,9 @@ class AddIndexToEventsAuthorGroupActionTargetType < Gitlab::Database::Migration[
INDEX_NAME = 'index_events_author_id_group_id_action_target_type_created_at'
COLUMNS = [:author_id, :group_id, :action, :target_type, :created_at]
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
add_concurrent_index :events, COLUMNS, name: INDEX_NAME
end
# rubocop:enable Migration/PreventIndexCreation
def down
remove_concurrent_index_by_name :events, INDEX_NAME

View File

@ -6,11 +6,9 @@ class AddIndexOnIssuesTableTmpEpicIdColumn < Gitlab::Database::Migration[2.2]
INDEX_NAME = "tmp_index_issues_on_tmp_epic_id"
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
add_concurrent_index :issues, :tmp_epic_id, unique: true, name: INDEX_NAME
end
# rubocop:enable Migration/PreventIndexCreation
def down
remove_concurrent_index_by_name :issues, name: INDEX_NAME

View File

@ -6,11 +6,9 @@ class ScheduleIndexMergeRequestsOnUnmergedStateId < Gitlab::Database::Migration[
INDEX_NAME = :idx_merge_requests_on_unmerged_state_id
TABLE_NAME = :merge_requests
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
prepare_async_index(TABLE_NAME, :id, name: INDEX_NAME, where: "state_id <> 3")
end
# rubocop:enable Migration/PreventIndexCreation
def down
unprepare_async_index(TABLE_NAME, :id, name: INDEX_NAME)

View File

@ -8,11 +8,9 @@ class AddIndexMergeRequestsOnUnmergedStateId < Gitlab::Database::Migration[2.2]
INDEX_NAME = :idx_merge_requests_on_unmerged_state_id
TABLE_NAME = :merge_requests
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
add_concurrent_index(TABLE_NAME, :id, name: INDEX_NAME, where: "state_id <> 3")
end
# rubocop:enable Migration/PreventIndexCreation
def down
remove_concurrent_index_by_name(TABLE_NAME, INDEX_NAME)

View File

@ -8,9 +8,7 @@ class IndexVulnerabilityReadsOnStateReportTypeSeverityTraversalIdsArchived < Git
COLUMNS = %i[resolved_on_default_branch state report_type severity traversal_ids vulnerability_id].freeze
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index :vulnerability_reads, COLUMNS, name: INDEX_NAME, where: 'archived = false'
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -8,9 +8,7 @@ class IndexVulnerabilityReadsForCommonGroupLevelQuery < Gitlab::Database::Migrat
milestone '17.0'
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index :vulnerability_reads, COLUMNS, name: INDEX_NAME, where: 'archived = false'
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -6,11 +6,9 @@ class ReplaceIssuesMilestoneIndex < Gitlab::Database::Migration[2.2]
INDEX_NAME = 'index_issues_on_milestone_id_and_id'
# TODO: Index to be created synchronously in https://gitlab.com/gitlab-org/gitlab/-/issues/461627
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
def up
prepare_async_index :issues, %i[milestone_id id], name: INDEX_NAME
end
# rubocop:enable Migration/PreventIndexCreation
def down
unprepare_async_index :issues, %i[milestone_id id], name: INDEX_NAME

View File

@ -7,11 +7,9 @@ class AddIssuesMilestoneAndIdIndexConcurrently < Gitlab::Database::Migration[2.2
disable_ddl_transaction!
# rubocop: disable Migration/PreventIndexCreation -- Replacing an existing index
def up
add_concurrent_index :issues, %i[milestone_id id], name: INDEX_NAME
end
# rubocop: enable Migration/PreventIndexCreation
def down
remove_concurrent_index_by_name :issues, INDEX_NAME

View File

@ -7,14 +7,13 @@ class CreateIdxVulnerabilityOccurencesOnPrimIdenId < Gitlab::Database::Migration
NEW_INDEX_NAME = 'index_vulnerability_occurrences_prim_iden_id_and_vuln_id'
TABLE_NAME = :vulnerability_occurrences
# rubocop:disable Migration/PreventIndexCreation -- This index was created async previously, check https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131647
# -- This index was created async previously, check https://gitlab.com/gitlab-org/gitlab/-/merge_requests/131647
def up
add_concurrent_index(
TABLE_NAME, [:primary_identifier_id, :vulnerability_id],
name: NEW_INDEX_NAME
)
end
# rubocop:enable Migration/PreventIndexCreation
def down
remove_concurrent_index_by_name TABLE_NAME, NEW_INDEX_NAME

View File

@ -6,13 +6,12 @@ class AddIndexOwaspTop10ForGroupLevelReports < Gitlab::Database::Migration[2.2]
INDEX_NAME = 'index_for_owasp_top_10_group_level_reports'
# -- Legacy migration
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index :vulnerability_reads, [:owasp_top_10, :state, :report_type,
:severity, :traversal_ids, :vulnerability_id, :resolved_on_default_branch],
where: 'archived = false',
name: INDEX_NAME
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -11,10 +11,9 @@ class TmpIndexOnVulnerabilityReads < Gitlab::Database::Migration[2.2]
INDEX_NAME = 'tmp_index_vulnerability_reads_where_state_is_detected'
TABLE_NAME = :vulnerability_reads
# -- Legacy migration
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index TABLE_NAME, :id, name: INDEX_NAME, where: "state = 1"
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -6,10 +6,9 @@ class PrepareIndexVulnerabilityFindingLinksOnProjectId < Gitlab::Database::Migra
INDEX_NAME = 'index_vulnerability_finding_links_on_project_id'
# -- Legacy migration
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
prepare_async_index :vulnerability_finding_links, :project_id, name: INDEX_NAME
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -6,10 +6,9 @@ class PrepareIndexVulnerabilityOccurrencePipelinesOnProjectId < Gitlab::Database
INDEX_NAME = 'index_vulnerability_occurrence_pipelines_on_project_id'
# -- Legacy migration
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
prepare_async_index :vulnerability_occurrence_pipelines, :project_id, name: INDEX_NAME
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -8,10 +8,9 @@ class TmpIndexForOwaspOnVulnerabilityReads < Gitlab::Database::Migration[2.2]
COLUMNS = %i[vulnerability_id].freeze
WHERE_CLAUSE = 'owasp_top_10 IS NULL'
# -- Legacy migration
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index :vulnerability_reads, COLUMNS, name: INDEX_NAME, where: WHERE_CLAUSE
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -9,13 +9,12 @@ class AddRevisedIdxOwaspTop10ForGroupLevelReports < Gitlab::Database::Migration[
INDEX_NAME = 'revised_idx_for_owasp_top_10_group_level_reports'
# -- Legacy migration
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index :vulnerability_reads, [:owasp_top_10, :state, :report_type, :resolved_on_default_branch,
:severity, :traversal_ids, :vulnerability_id],
where: 'archived = false',
name: INDEX_NAME
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -5,14 +5,13 @@ class AsyncAddIndexOnEventsPersonalNamespaceId2 < Gitlab::Database::Migration[2.
INDEX_NAME = 'index_events_on_personal_namespace_id'
# rubocop:disable Migration/PreventIndexCreation -- https://gitlab.com/gitlab-org/gitlab/-/issues/462801#note_2081632603
# -- https://gitlab.com/gitlab-org/gitlab/-/issues/462801#note_2081632603
def up
return unless Gitlab.com_except_jh?
prepare_async_index :events, :personal_namespace_id, name: INDEX_NAME,
where: 'personal_namespace_id IS NOT NULL'
end
# rubocop:enable Migration/PreventIndexCreation
def down
return unless Gitlab.com_except_jh?

View File

@ -7,7 +7,7 @@ class AddIndexOnEventsPersonalNamespaceIdSelfManaged < Gitlab::Database::Migrati
INDEX = 'index_events_on_personal_namespace_id'
# rubocop:disable Migration/PreventIndexCreation -- https://gitlab.com/gitlab-org/gitlab/-/issues/462801#note_2081632603
# -- https://gitlab.com/gitlab-org/gitlab/-/issues/462801#note_2081632603
def up
return if Gitlab.com_except_jh?
@ -16,7 +16,6 @@ class AddIndexOnEventsPersonalNamespaceIdSelfManaged < Gitlab::Database::Migrati
where: 'personal_namespace_id IS NOT NULL',
name: INDEX
end
# rubocop:enable Migration/PreventIndexCreation
def down
return if Gitlab.com_except_jh?

View File

@ -7,7 +7,9 @@ class PrepareIndexCiJobArtifactStatesOnProjectId < Gitlab::Database::Migration[2
INDEX_NAME = 'index_ci_job_artifact_states_on_project_id'
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
prepare_async_index :ci_job_artifact_states, :project_id, name: INDEX_NAME
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -7,10 +7,9 @@ class AddIndexOnVulnerabilityReadsForFilteredRemoval < Gitlab::Database::Migrati
milestone '17.5'
# -- Legacy migration
def up
# rubocop:disable Migration/PreventIndexCreation -- Legacy migration
add_concurrent_index :vulnerability_reads, %i[project_id resolved_on_default_branch], name: INDEX_NAME
# rubocop:enable Migration/PreventIndexCreation
end
def down

View File

@ -8,7 +8,7 @@ class PrepareAsyncIndexOnIssuesByProjectCorrectTypeWhereClosed < Gitlab::Databas
def up
# Temporary index to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/500165
# TODO: Index to be created synchronously in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170005
prepare_async_index :issues, # rubocop:disable Migration/PreventIndexCreation -- Tmp index needed to fix work item type ids
prepare_async_index :issues, # -- Tmp index needed to fix work item type ids
[:project_id, :correct_work_item_type_id, :closed_at],
where: 'state_id = 2',
name: INDEX_NAME

View File

@ -9,7 +9,7 @@ class PrepareAsyncIndexOnIssuesProjectHealthIdDescStateCorrectType < Gitlab::Dat
def up
# Temporary index to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/500165
# TODO: Index to be created synchronously in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170005
prepare_async_index :issues, # rubocop:disable Migration/PreventIndexCreation -- Tmp index needed to fix work item type ids
prepare_async_index :issues, # -- Tmp index needed to fix work item type ids
[:project_id, :health_status, :id, :state_id, :correct_work_item_type_id],
order: { health_status: 'DESC NULLS LAST', id: :desc },
name: INDEX_NAME

View File

@ -9,7 +9,7 @@ class PrepareAsyncIndexOnIssuesProjectHealthIdAscStateCorrectType < Gitlab::Data
def up
# Temporary index to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/500165
# TODO: Index to be created synchronously in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170005
prepare_async_index :issues, # rubocop:disable Migration/PreventIndexCreation -- Tmp index needed to fix work item type ids
prepare_async_index :issues, # -- Tmp index needed to fix work item type ids
[:project_id, :health_status, :id, :state_id, :correct_work_item_type_id],
order: { health_status: 'ASC NULLS LAST', id: :desc },
name: INDEX_NAME

View File

@ -9,7 +9,7 @@ class PrepareAsyncIndexOnIssuesCorrectTypeProjectCreatedAtState < Gitlab::Databa
def up
# Temporary index to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/500165
# TODO: Index to be created synchronously in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/170005
prepare_async_index :issues, # rubocop:disable Migration/PreventIndexCreation -- Tmp index needed to fix work item type ids
prepare_async_index :issues, # -- Tmp index needed to fix work item type ids
[:correct_work_item_type_id, :project_id, :created_at, :state_id],
name: INDEX_NAME
end

View File

@ -8,7 +8,7 @@ class CreateTmpIndexOnIssuesByProjectCorrectTypeWhereClosed < Gitlab::Database::
def up
# Temporary index to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/500165
add_concurrent_index :issues, # rubocop:disable Migration/PreventIndexCreation -- Tmp index needed to fix work item type ids
add_concurrent_index :issues, # -- Tmp index needed to fix work item type ids
[:project_id, :correct_work_item_type_id, :closed_at],
where: 'state_id = 2',
name: INDEX_NAME

View File

@ -8,7 +8,7 @@ class CreateTmpIndexOnIssuesProjectHealthIdDescStateCorrectType < Gitlab::Databa
def up
# Temporary index to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/500165
add_concurrent_index :issues, # rubocop:disable Migration/PreventIndexCreation -- Tmp index needed to fix work item type ids
add_concurrent_index :issues, # -- Tmp index needed to fix work item type ids
[:project_id, :health_status, :id, :state_id, :correct_work_item_type_id],
order: { health_status: 'DESC NULLS LAST', id: :desc },
name: INDEX_NAME

View File

@ -8,7 +8,7 @@ class CreateTmpIndexOnIssuesProjectHealthIdAscStateCorrectType < Gitlab::Databas
def up
# Temporary index to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/500165
add_concurrent_index :issues, # rubocop:disable Migration/PreventIndexCreation -- Tmp index needed to fix work item type ids
add_concurrent_index :issues, # -- Tmp index needed to fix work item type ids
[:project_id, :health_status, :id, :state_id, :correct_work_item_type_id],
order: { health_status: 'ASC NULLS LAST', id: :desc },
name: INDEX_NAME

View File

@ -8,7 +8,7 @@ class CreateTmpIndexOnIssuesCorrectTypeProjectCreatedAtState < Gitlab::Database:
def up
# Temporary index to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/500165
add_concurrent_index :issues, # rubocop:disable Migration/PreventIndexCreation -- Tmp index needed to fix work item type ids
add_concurrent_index :issues, # -- Tmp index needed to fix work item type ids
[:correct_work_item_type_id, :project_id, :created_at, :state_id],
name: INDEX_NAME
end

View File

@ -1,6 +1,6 @@
# frozen_string_literal: true
# rubocop: disable Migration/PreventIndexCreation -- update an existing index
# -- update an existing index
class UpdateSentNotificationsIndexOnNoteable < Gitlab::Database::Migration[2.2]
milestone '17.6'
@ -22,4 +22,3 @@ class UpdateSentNotificationsIndexOnNoteable < Gitlab::Database::Migration[2.2]
unprepare_async_index :sent_notifications, COLUMN_NAMES, name: INDEX_NAME
end
end
# rubocop: enable Migration/PreventIndexCreation

View File

@ -0,0 +1,21 @@
# frozen_string_literal: true
class RemovePushTablesForcePushDeleteBranchRegex < Gitlab::Database::Migration[2.2]
milestone '17.7'
disable_ddl_transaction!
def up
remove_column :push_rules, :force_push_regex, if_exists: true
remove_column :push_rules, :delete_branch_regex, if_exists: true
end
def down
add_column :push_rules, :force_push_regex, :string, if_not_exists: true
add_column :push_rules, :delete_branch_regex, :string, if_not_exists: true
# Re-add constraints
add_check_constraint(:push_rules, 'char_length(force_push_regex) <= 511', 'force_push_regex_size_constraint')
add_check_constraint(:push_rules, 'char_length(delete_branch_regex) <= 511', 'delete_branch_regex_size_constraint')
end
end

View File

@ -0,0 +1 @@
d601bb020ed7764440919cacaac775c1b6c492df5fc8218ff4d7a791a0128615

View File

@ -18563,8 +18563,6 @@ CREATE TABLE push_event_payloads (
CREATE TABLE push_rules (
id bigint NOT NULL,
force_push_regex character varying,
delete_branch_regex character varying,
commit_message_regex character varying,
deny_delete_tag boolean,
project_id bigint,
@ -18588,9 +18586,7 @@ CREATE TABLE push_rules (
CONSTRAINT branch_name_regex_size_constraint CHECK ((char_length((branch_name_regex)::text) <= 511)),
CONSTRAINT commit_message_negative_regex_size_constraint CHECK ((char_length((commit_message_negative_regex)::text) <= 2047)),
CONSTRAINT commit_message_regex_size_constraint CHECK ((char_length((commit_message_regex)::text) <= 511)),
CONSTRAINT delete_branch_regex_size_constraint CHECK ((char_length((delete_branch_regex)::text) <= 511)),
CONSTRAINT file_name_regex_size_constraint CHECK ((char_length((file_name_regex)::text) <= 511)),
CONSTRAINT force_push_regex_size_constraint CHECK ((char_length((force_push_regex)::text) <= 511))
CONSTRAINT file_name_regex_size_constraint CHECK ((char_length((file_name_regex)::text) <= 511))
);
CREATE SEQUENCE push_rules_id_seq

View File

@ -16,6 +16,7 @@ DETAILS:
> - [Feed tokens added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/169821) in GitLab 17.6.
> - [OAuth application secrets added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172985) in GitLab 17.7.
> - [Cluster agent tokens added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/172932) in GitLab 17.7.
> - [Runner authentication tokens added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/173987) in GitLab 17.7.
FLAG:
The availability of this feature is controlled by a feature flag.
@ -30,7 +31,7 @@ Prerequisites:
- You must be an administrator.
## Get Token Information
## Identify Token
Returns information about a token.
@ -41,6 +42,7 @@ Supported tokens:
- [Feed tokens](../../security/tokens/index.md#feed-token)
- [OAuth application secrets](../../integration/oauth_provider.md)
- [Cluster agent tokens](../../security/tokens/index.md#gitlab-cluster-agent-tokens)
- [Runner authentication tokens](../../security/tokens/index.md#runner-authentication-tokens)
```plaintext
POST /api/v4/admin/token

View File

@ -6,7 +6,7 @@ info: >-
this page, see
https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
---
# Provisioning runners in Google Cloud
# Provision runners in Google Cloud Compute Engine
DETAILS:
**Tier:** Free, Premium, Ultimate
@ -15,86 +15,53 @@ DETAILS:
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/438316) in GitLab 16.10 [with a flag](../../administration/feature_flags.md) named `google_cloud_support_feature_flag`. This feature is in [beta](../../policy/development_stages_support.md).
> - [Enabled on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/150472) in GitLab 17.1. Feature flag `google_cloud_support_feature_flag` removed.
## Creating a runner provisioned in Google Cloud
Prerequisites:
- You must have [billing enabled](https://cloud.google.com/billing/docs/how-to/verify-billing-enabled#confirm_billing_is_enabled_on_a_project)
for your Google Cloud project.
- You must have a working [`gcloud` CLI tool](https://cloud.google.com/sdk/docs/install) that is authenticated with the
[Owner](https://cloud.google.com/iam/docs/understanding-roles#owner) IAM role on the Google Cloud project.
- You must have the [Terraform CLI tool](https://developer.hashicorp.com/terraform/install) installed.
You can create a project or group runner for GitLab.com and provision it on your Google Cloud project.
When you create a runner, the GitLab UI provides on-screen instructions and scripts to automatically provision the runner
in a Google Cloud project that you own.
in your Google Cloud project.
After you create a runner, it is assigned a runner authentication token that a Terraform script uses to register it.
The runner uses the token to authenticate with GitLab when picking up jobs from the job queue.
A runner authentication token is assigned to your runner when you create it. A [GRIT](https://gitlab.com/gitlab-org/ci-cd/runner-tools/grit) Terraform script uses this token to
register the runner. The runner then uses the token to authenticate with GitLab when it picks up jobs
from the job queue.
After the runners are provisioned, an autoscaling fleet of runners is available to execute your CI/CD jobs
in Google Cloud.
A runner manager automatically creates temporary runners.
### Create a group runner
After provisioning, an autoscaling fleet of runners is ready to run CI/CD jobs in Google Cloud.
The runner manager creates temporary runners automatically.
Prerequisites:
- You must have the Owner role for the group.
- For group runners: Owner role for the group.
- For project runners: Maintainer role for the project.
- For your Google Cloud Platform project: [Owner](https://cloud.google.com/iam/docs/understanding-roles#owner) IAM role.
- [Billing enabled](https://cloud.google.com/billing/docs/how-to/verify-billing-enabled#confirm_billing_is_enabled_on_a_project)
for your Google Cloud Platform project.
- A working [`gcloud` CLI tool](https://cloud.google.com/sdk/docs/install) authenticated with the
IAM role on the Google Cloud project.
- [Terraform v1.5 or later](https://releases.hashicorp.com/terraform/1.5.7/) and [Terraform CLI tool](https://developer.hashicorp.com/terraform/install).
- A terminal with Bash installed.
To create a group runner and provision it on Google Cloud:
To create a group or project runner and provision it on Google Cloud:
1. On the left sidebar, select **Search or go to** and find your group.
1. Select **Build > Runners**.
1. Select **New group runner**.
1. Create a new runner.
- To create a new group runner, select **Build > Runners > New group runner**.
- To create a new project runner, select **Settings > CI/CD > Runners > New project runner**.
1. In the **Tags** section, in the **Tags** field, enter the job tags to specify jobs the runner can run.
If there are no job tags for this runner, select **Run untagged**.
1. Optional. In the **Runner description** field, add a runner description
that displays in GitLab.
1. Optional. In the **Configuration** section, add additional configurations.
To use the runner for jobs without tags in addition to the tagged jobs, select **Run untagged**.
1. Optional. In the **Configuration** section, add runner description and additional configurations.
1. Select **Create runner**.
1. In the **Platform** section, select **Google Cloud**.
1. To specify the environment in Google Cloud where
runners execute jobs, in **Step 1: Specify environment**, complete the form.
1. In **Step 2: Set up GitLab Runner**, select **Setup instructions**. In the dialog:
1. In **Environment**, enter the following details of the Google Cloud environment:
- **Step 1: Configure Google Cloud project** must be executed once per Google Cloud project,
to ensure it meets the prerequisites for the required services, service account, and permissions.
- **Step 2: Install and register GitLab Runner** displays the Terraform script that uses the
[GitLab Runner Infrastructure Toolkit](https://gitlab.com/gitlab-org/ci-cd/runner-tools/grit/-/blob/main/docs/scenarios/google/linux/docker-autoscaler-default/index.md)
(GRIT) to provision the infrastructure on the Google Cloud project to execute your runner manager.
After you execute the scripts, a runner manager connects with the runner authentication token. The runner manager might
take up to one minute to show as online and start receiving jobs.
### Create a project runner
Prerequisites:
- You must have the Maintainer role for the project.
To create a project runner and provision it on Google Cloud:
1. On the left sidebar, select **Search or go to** and find your project.
1. Select **Settings > CI/CD**.
1. Expand the **Runners** section.
1. Select **New project runner**.
1. In the **Tags** section, in the **Tags** field, enter the job tags to specify jobs the runner can run.
If there are no job tags for this runner, select **Run untagged**.
1. Optional. In the **Runner description** field, add a description for the runner
that displays in GitLab.
1. Optional. In the **Configuration** section, add additional configurations.
1. Select **Create runner**.
1. In the **Platform** section, select **Google Cloud**.
1. To specify the environment in Google Cloud where
runners execute jobs, in **Step 1: Specify environment**, complete the form.
1. In **Step 2: Set up GitLab Runner**, select **Setup instructions**. In the dialog:
- **Step 1: Configure Google Cloud project** must be executed once per Google Cloud project,
to ensure it meets the prerequisites for the required services, service account, and permissions.
- **Step 2: Install and register GitLab Runner** displays the Terraform script that uses the
[GitLab Runner Infrastructure Toolkit](https://gitlab.com/gitlab-org/ci-cd/runner-tools/grit/-/blob/main/docs/scenarios/google/linux/docker-autoscaler-default/index.md) (GRIT)
to provision the infrastructure on the Google Cloud project to execute your runner manager.
- **Google Cloud project ID**
- **Region**
- **Zone**
- **Machine type**
1. In **Set up GitLab Runner**, select **Setup instructions**. In the dialog:
1. To enable the required services, service account, and permissions, in **Configure Google Cloud project** run the Bash script once for each Google Cloud project.
1. Create a `main.tf` file with the configuration from **Install and register GitLab Runner**.
The script uses the [GitLab Runner Infrastructure Toolkit](https://gitlab.com/gitlab-org/ci-cd/runner-tools/grit/-/blob/main/docs/scenarios/google/linux/docker-autoscaler-default/index.md)
(GRIT) to provision the infrastructure on the Google Cloud project to execute your runner manager.
After you execute the scripts, a runner manager connects with the runner authentication token. The runner manager might
take up to one minute to show as online and start receiving jobs.

View File

@ -29,6 +29,15 @@ Exceptions to these size limitations should only granted for the following cases
- Modify a table to assist in partitioning or data retention efforts
- Replace an existing index to provide better query performance
### Requesting an exception
To request an exception to these limitations:
1. Create a new issue using the [Database Team Tasks template](https://gitlab.com/gitlab-org/database-team/team-tasks/-/issues/new)
1. Select the `schema_change_exception` template
1. Provide detailed justification for why your case requires an exception
1. Wait for review and approval from the Database team before proceeding
## Alternatives to table modifications
Consider these alternatives when working with large tables:

View File

@ -116,7 +116,7 @@ is inside `_()` so it can be translated:
the rest of the page layout:
```haml
= render Pajamas::ButtonComponent.new(variant: :default, href: help_page_path('user/group/import/index.md'), target: '_blank') do
= render Pajamas::ButtonComponent.new(href: help_page_path('user/group/import/index.md'), target: '_blank') do
= _('Learn more')
```

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@ -7,144 +7,63 @@ description: Learn how documentation review apps work.
# Documentation review apps
If you're a GitLab team member and your merge request contains documentation changes, you can use a review app to preview
how they would look if they were deployed to the [GitLab Docs site](https://docs.gitlab.com).
GitLab team members can deploy a [review app](../../ci/review_apps/index.md) for merge requests with documentation
changes. The review app helps you preview what the changes would look like if they were deployed to either:
Review apps are enabled for the following projects:
- The [GitLab Docs site](https://docs.gitlab.com).
- The [new GitLab Docs site](https://new.docs.gitlab.com). The site is still in development.
- [GitLab](https://gitlab.com/gitlab-org/gitlab)
- [Omnibus GitLab](https://gitlab.com/gitlab-org/omnibus-gitlab)
- [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner)
- [GitLab Charts](https://gitlab.com/gitlab-org/charts/gitlab)
- [GitLab Operator](https://gitlab.com/gitlab-org/cloud-native/gitlab-operator)
Review apps deployments are available for these projects:
Alternatively, check the [`gitlab-docs` development guide](https://gitlab.com/gitlab-org/gitlab-docs/blob/main/README.md#development-when-contributing-to-gitlab-documentation)
or [the GDK documentation](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/gitlab_docs.md)
to render and preview the documentation locally.
- [GitLab](https://gitlab.com/gitlab-org/gitlab) (configuration: <https://gitlab.com/gitlab-org/gitlab/-/blob/b4f30955e41aeab862c59f7102529e1a5a2659d1/.gitlab/ci/docs.gitlab-ci.yml#L1-40>)
- [Omnibus GitLab](https://gitlab.com/gitlab-org/omnibus-gitlab) (configuration: <https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/bae935d36ea9296941c20233b637d780847c443a/gitlab-ci-config/gitlab-com.yml#L304-328>)
- [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner) (configuration: <https://gitlab.com/gitlab-org/gitlab-runner/-/blob/69d2416333df4712cbd95d90214b10f100183df3/.gitlab/ci/docs.gitlab-ci.yml#L64-110>)
- [GitLab Charts](https://gitlab.com/gitlab-org/charts/gitlab) (configuration: <https://gitlab.com/gitlab-org/charts/gitlab/-/blob/8222a7c3cf28d8ad3f454784a04cad8921b6638b/.gitlab/ci/review-docs.yml#L2-49>)
- [GitLab Operator](https://gitlab.com/gitlab-org/cloud-native/gitlab-operator) (configuration: <https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/blob/56200465a5c8f8857f3aef2c309bdf2ca9e4b672/.gitlab-ci.yml#L210-257>)
## How to trigger a review app
## Deploy a review app and preview changes
If a merge request has documentation changes, use the `review-docs-deploy` manual job
to deploy the documentation review app for your merge request.
Prerequisites:
![Manual trigger a documentation review app](img/manual_build_docs_v14_6.png)
- You must have the Developer role for the project. External contributors cannot run these jobs and
should ask a GitLab team member to run the jobs for them.
The `review-docs-deploy*` job triggers a cross project pipeline and builds the
docs site with your changes. When the pipeline finishes, the review app URL
appears in the merge request widget. Use the app to go to your changes.
Merge requests with documentation changes have the following jobs available:
The `review-docs-cleanup` job is triggered automatically on merge. This job deletes the review app.
- `review-docs-deploy`, which uses Nanoc static-site generation using
[`gitlab-docs`](https://gitlab.com/gitlab-org/gitlab-docs).
- `review-docs-hugo-deploy`: Optional. This review app is only for testing the Hugo static site generation from
[`gitlab-docs-hugo`](https://gitlab.com/gitlab-org/technical-writing-group/gitlab-docs-hugo),
which is still in development.
You must have the Developer role for the project. Users without the Developer role, such
as external contributors, cannot run the manual job. In that case, ask someone from
the GitLab team to run the job.
To deploy a review app and preview changes:
## Technical aspects
1. [Manually run](../../ci/jobs/job_control.md#run-a-manual-job) either (or both) of these jobs. These jobs trigger a
[multi project pipelines](../../ci/pipelines/downstream_pipelines.md#multi-project-pipelines), build the
documentation site with your changes, and deploy a site with your changes.
1. When the pipeline finishes, select **View app** on either deployment to open a browser and review the
changes introduced by the merge request.
If you want to know the in-depth details, here's what's really happening:
The `review-docs-cleanup` and `review-docs-hugo-cleanup` jobs are triggered automatically on merge. These job delete
the review app.
1. You manually run the `review-docs-deploy` job in a merge request.
1. The job downloads and runs the [`scripts/trigger-build.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/scripts/trigger-build.rb)
script with the `docs deploy` flag, which triggers the "Triggered from `gitlab-org/gitlab` 'review-docs-deploy' job"
pipeline trigger in the `gitlab-org/gitlab-docs` project for the `$DOCS_BRANCH` (defaults to `main`).
1. The preview URL is shown both at the job output and in the merge request
widget. You also get the link to the remote pipeline.
1. In the `gitlab-org/gitlab-docs` project, the pipeline is created and it
[skips most test jobs](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/d41ca9323f762132780d2d072f845d28817a5383/.gitlab/ci/rules.gitlab-ci.yml#L101-103)
to lower the build time.
1. After the docs site is built, the HTML files are uploaded as artifacts to
a GCP bucket (see [issue `gitlab-com/gl-infra/reliability#11021`](https://gitlab.com/gitlab-com/gl-infra/reliability/-/issues/11021)
for the implementation details).
## How documentation review apps work
The following GitLab features are used among others:
Documentation review apps follow this process:
- [Manual jobs](../../ci/jobs/job_control.md#create-a-job-that-must-be-run-manually)
- [Multi project pipelines](../../ci/pipelines/downstream_pipelines.md#multi-project-pipelines)
- [Review apps](../../ci/review_apps/index.md)
- [Artifacts](../../ci/yaml/index.md#artifacts)
- [Merge request pipelines](../../ci/pipelines/merge_request_pipelines.md)
1. You manually run the `review-docs-deploy` or `review-docs-hugo-deploy` job in a merge request.
1. The job downloads (if outside of `gitlab` project) and runs the
[`scripts/trigger-build.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/scripts/trigger-build.rb) script with
either:
## How to add a new documentation review app
- The `docs deploy` flag, which triggers a pipeline in the `gitlab-org/gitlab-docs` project.
- The `docs-hugo deploy` flag, which triggers a pipeline in the `gitlab-org/technical-writing-group/gitlab-docs-hugo`
project.
In case a documentation review app is missing from one of the documentation
projects, you can use the following CI/CD template to add a manually triggered review app:
```yaml
# Set up documentation review apps
# https://docs.gitlab.com/ee/development/documentation/review_apps.html
.review-docs:
image: ruby:3.1-alpine
needs: []
before_script:
- gem install gitlab --no-doc
# We need to download the script rather than clone the repo since the
# review-docs-cleanup job will not be able to run when the branch gets
# deleted (when merging the MR).
- apk add --update openssl
- wget https://gitlab.com/gitlab-org/gitlab/-/raw/master/scripts/trigger-build.rb
- chmod 755 trigger-build.rb
variables:
GIT_STRATEGY: none
DOCS_REVIEW_APPS_DOMAIN: docs.gitlab-review.app
# By default, deploy the Review App using the `main` branch of the `gitlab-org/gitlab-docs` project
DOCS_BRANCH: main
when: manual
allow_failure: true
# Trigger a docs build in gitlab-docs
# Useful to preview the docs changes live
# https://docs.gitlab.com/ee/development/documentation/index.html#previewing-the-changes-live
review-docs-deploy:
extends:
- .review-docs
environment:
name: review-docs/mr-${CI_MERGE_REQUEST_IID}
# DOCS_REVIEW_APPS_DOMAIN and DOCS_GITLAB_REPO_SUFFIX are CI variables
# Discussion: https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/14236/diffs#note_40140693
auto_stop_in: 2 weeks
url: https://${DOCS_BRANCH}-${DOCS_GITLAB_REPO_SUFFIX}-${CI_MERGE_REQUEST_IID}.${DOCS_REVIEW_APPS_DOMAIN}/${DOCS_GITLAB_REPO_SUFFIX}
on_stop: review-docs-cleanup
script:
- ./trigger-build.rb docs deploy
# Cleanup remote environment of gitlab-docs
review-docs-cleanup:
extends:
- .review-docs
environment:
name: review-docs/mr-${CI_MERGE_REQUEST_IID}
action: stop
script:
- ./trigger-build.rb docs cleanup
```
You may need to add some rules when those jobs run, it depends on the project.
You can find the current implementations:
- [GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/docs.gitlab-ci.yml)
- [Omnibus GitLab](https://gitlab.com/gitlab-org/omnibus-gitlab/-/blob/ee8699658c8a7d4c635ad503ef0b825ac592dc4b/gitlab-ci-config/gitlab-com.yml#L367-391)
- [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/.gitlab/ci/docs.gitlab-ci.yml)
- [GitLab Charts](https://gitlab.com/gitlab-org/charts/gitlab/-/blob/aae7ee8d23a60d6025eec7d1a864ce244f21cd85/.gitlab-ci.yml#L629-679)
- [GitLab Operator](https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/blob/5fa29607cf9286b510148a8f5fef7595dca34186/.gitlab-ci.yml#L180-228)
## Troubleshooting review apps
### `NoSuchKey The specified key does not exist`
If you see the following message in a review app, either the site is not
yet deployed, or something went wrong with the downstream pipeline in `gitlab-docs`.
```plaintext
NoSuchKeyThe specified key does not exist.No such object: <URL>
```
In that case, you can:
- Wait a few minutes and the review app should appear online.
- Check the `review-docs-deploy` job's log and verify the URL. If the URL shown in the merge
request UI is different than the job log, try the one from the job log.
- Check the status of the remote pipeline from the link in the merge request's job output.
If the pipeline failed or got stuck, GitLab team members can ask for help in the `#docs`
internal Slack channel. Contributors can ping a
[technical writer](https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-devops-stages-and-groups)
in the merge request.
The `DOCS_BRANCH` environment variable determines which branch of either the `gitlab-org/gitlab-docs` project or the
`gitlab-org/technical-writing-group/gitlab-docs-hugo` project are used. If not set, the `main` branch is used.
1. After the documentation preview site is built:
- For `nanoc` builds, the HTML files are uploaded as [artifacts](../../ci/yaml/index.md#artifacts) to a GCP bucket.
For implementation details, see
[issue `gitlab-com/gl-infra/reliability#11021`](https://gitlab.com/gitlab-com/gl-infra/reliability/-/issues/11021).
- For `hugo` builds, a [parallel deployment](../../user/project/pages/index.md#parallel-deployments) is deployed.

View File

@ -74,6 +74,7 @@ For status, choose one:
- `Beta`
- `Experiment`
- `Limited availability`
Generally available features should not have a status.
@ -129,7 +130,14 @@ For a feature status change from experiment to beta, use `changed`:
```markdown
> - [Introduced](https://issue-link) as an [experiment](../../policy/development_stages_support.md) in GitLab 15.7.
> - [Changed](https://issue-link) to beta in GitLab 16.0.
> - [Changed](https://issue-link) from experiment to beta in GitLab 16.0.
```
For a feature status change from beta to limited availability, use `changed`:
```markdown
> - [Changed](https://issue-link) from experiment to beta in GitLab 16.0.
> - [Changed](https://issue-link) from beta to limited availability in GitLab 16.3.
```
For a change to generally available, use:

View File

@ -1029,6 +1029,15 @@ To open group settings:
1. Expand **General pipelines**.
```
To open settings for a top-level group:
```markdown
1. On the left sidebar, select **Search or go to** and find your group.
This group must be at the top level.
1. Select **Settings > CI/CD**.
1. Expand **General pipelines**.
```
To open either project or group settings:
```markdown

View File

@ -9,7 +9,7 @@ info: Any user with at least the Maintainer role can merge updates to this conte
Geo connects GitLab instances together. One GitLab instance is
designated as a **primary** site and can be run with multiple
**secondary** sites. Geo orchestrates quite a few components that can be seen on
the diagram below and are described in more detail within this document.
the diagram below and are described in more detail in this document.
![Geo Architecture Diagram](../administration/geo/replication/img/geo_architecture_v13_8.png)

View File

@ -183,7 +183,8 @@ DETAILS:
To enable or disable the overview count aggregation for the Value Streams Dashboard:
1. On the left sidebar, select **Search or go to** and find your top-level group.
1. On the left sidebar, select **Search or go to** and find your group.
This group must be at the top level.
1. Select **Settings > Analytics**.
1. In **Value Streams Dashboard**, select or clear the **Enable overview background aggregation for Value Streams Dashboard** checkbox.

View File

@ -107,7 +107,8 @@ For more information on group-level domain verification, see [epic 5299](https:/
The custom domain must match the email domain exactly. For example, if your email is `username@example.com`, verify the `example.com` domain.
1. On the left sidebar, select **Search or go to** and find your top-level group.
1. On the left sidebar, select **Search or go to** and find your group.
This group must be at the top level.
1. Select **Settings > Domain Verification**.
1. In the upper-right corner, select **Add Domain**.
1. In **Domain**, enter the domain name.
@ -153,7 +154,8 @@ For GitLab instances with domain verification enabled, if the domain cannot be v
To view all configured domains in your group:
1. On the left sidebar, select **Search or go to** and find your top-level group.
1. On the left sidebar, select **Search or go to** and find your group.
This group must be at the top level.
1. Select **Settings > Domain Verification**.
You then see:
@ -166,7 +168,8 @@ You then see:
To edit or remove a domain:
1. On the left sidebar, select **Search or go to** and find your top-level group.
1. On the left sidebar, select **Search or go to** and find your group.
This group must be at the top level.
1. Select **Settings > Domain Verification**.
1. When viewing **Domain Verification**, select the project listed next to the relevant domain.
1. Edit or remove a domain following the relevant [GitLab Pages custom domains](../project/pages/custom_domains_ssl_tls_certification/index.md) instructions.

View File

@ -193,11 +193,11 @@ After GitLab Duo Chat opens:
1. To send your question, press **Enter** or select **Send**.
1. Use the buttons within code blocks in the responses to interact with them.
### In the editor window
### In GitLab Duo Quick Chat in the editor view
> - Introduced as [generally available](https://gitlab.com/groups/gitlab-org/editor-extensions/-/epics/80) in GitLab Duo 3.0.0.
> - Introduced as generally available in the [GitLab Duo plugin for JetBrains 3.0.0](https://gitlab.com/groups/gitlab-org/editor-extensions/-/epics/80) and [GitLab Workflow extension for VS Code 5.14.0](https://gitlab.com/groups/gitlab-org/-/epics/15218).
To open GitLab Duo Chat in the editor window, use any of these methods:
To open GitLab Duo Chat Quick Chat in the editor window, use any of these methods:
- From a keyboard shortcut, by pressing:
- MacOS: <kbd>Option</kbd> + <kbd>c</kbd>
@ -215,6 +215,14 @@ After Quick Chat opens:
1. Use the buttons around code blocks in the responses to interact with them.
1. To exit chat, either select **Escape to close**, or press **Escape** while focused on the chat.
<div class="video-fallback">
<a href="https://youtu.be/5JbAM5g2VbQ">View how to use GitLab Duo Quick Chat</a>.
</div>
<figure class="video-container">
<iframe src="https://www.youtube.com/embed/5JbAM5g2VbQ?si=pm7bTRDCR5we_1IX" frameborder="0" allowfullscreen> </iframe>
</figure>
<!-- Video published on 2024-10-15 -->
## Watch a demo and get tips
<div class="video-fallback">
@ -223,6 +231,7 @@ After Quick Chat opens:
<figure class="video-container">
<iframe src="https://www.youtube-nocookie.com/embed/l6vsd1HMaYA?si=etXpFbj1cBvWyj3_" frameborder="0" allowfullscreen> </iframe>
</figure>
<!-- Video published on 2023-11-10 -->
For tips and tricks about integrating GitLab Duo Chat into your AI-powered DevSecOps workflows,
read the blog post:

View File

@ -213,6 +213,14 @@ You might get an error that states
This is a fallback error that occurs when there is a problem with GitLab Duo Chat.
Please try a more specific request, enter `/clear` to start a new chat, or leave feedback to help us improve.
## `Error G3001`
You might get an error that states
`I'm sorry, but answering this question requires a different Duo subscription. Please contact your administrator.`.
This error occurs when GitLab Duo Chat is not available in your subscription.
Try a different request and contact your administrator.
## Header mismatch issue
You might get an error that states `I'm sorry, I can't generate a response. Please try again`, without a specific error code.

View File

@ -21,10 +21,6 @@ You can migrate GitLab groups:
- From one self-managed GitLab instance to another.
- Between groups in the same GitLab instance.
WARNING:
Migrating GitLab.com groups and projects by using direct transfer is [unavailable](https://status.gitlab.com).
For more information, contact [GitLab Support](https://about.gitlab.com/support/).
Migration by direct transfer creates a new copy of the group. If you want to move groups instead of copying groups, you
can [transfer groups](../manage.md#transfer-a-group) if the groups are in the same GitLab instance. Transferring groups
instead of migrating them is a faster and more complete option.

View File

@ -220,7 +220,8 @@ To integrate Microsoft Azure AD, you:
To configure for a GitLab.com group:
1. On the left sidebar, select **Search or go to** and find your top-level group.
1. On the left sidebar, select **Search or go to** and find your group.
This group must be at the top level.
1. Select **Settings > SAML SSO**.
1. Configure [SAML SSO for the group](../../../user/group/saml_sso/index.md).
1. In the **Microsoft Azure integration** section, select the **Enable Microsoft Azure integration for this group** checkbox.

View File

@ -175,7 +175,8 @@ To limit potential abuse, you can restrict users from creating tokens for a grou
To restrict the creation of group access tokens:
1. On the left sidebar, select **Search or go to** and find your top-level group.
1. On the left sidebar, select **Search or go to** and find your group.
This group must be at the top level.
1. Select **Settings > General**.
1. Expand **Permissions and group features**.
1. Under **Permissions**, clear the **Users can create project access tokens and group access tokens in this group** checkbox.

View File

@ -128,7 +128,8 @@ See the warning in [create a project access token](#create-a-project-access-toke
To limit potential abuse, you can restrict users from creating tokens for a group hierarchy. This setting is only configurable for a top-level group and applies to every downstream project and subgroup. Any existing project access tokens remain valid until their expiration date or until manually revoked.
1. On the left sidebar, select **Search or go to** and find your top-level group.
1. On the left sidebar, select **Search or go to** and find your group.
This group must be at the top level.
1. Select **Settings > General**.
1. Expand **Permissions and group features**.
1. In **Permissions**, clear the **Users can create project access tokens and group access tokens in this group** checkbox.

View File

@ -4,7 +4,6 @@ require_relative 'secret_detection/status'
require_relative 'secret_detection/finding'
require_relative 'secret_detection/response'
require_relative 'secret_detection/scan'
require_relative 'secret_detection/scan_diffs'
require_relative 'secret_detection/grpc'
require_relative 'secret_detection/utils'

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