Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2024-04-22 15:12:00 +00:00
parent e28e280b79
commit 4edee7ef8b
77 changed files with 681 additions and 480 deletions

View File

@ -124,7 +124,10 @@ workflow:
PIPELINE_NAME: 'Scheduled Ruby $RUBY_VERSION $CI_COMMIT_BRANCH branch'
# This work around https://gitlab.com/gitlab-org/gitlab/-/issues/332411 which prevents usage of dependency proxy
# when pipeline is triggered by a project access token.
- if: '$GITLAB_USER_LOGIN =~ /project_\d+_bot\d*/'
# Example of project bot usernames (the format changed over time):
# - project_278964_bot2
# - project_278964_bot_7fb4d1cca8242cb399a0b8f483783120
- if: '$GITLAB_USER_LOGIN =~ /project_\d+_bot/'
variables:
<<: [*default-ruby-variables, *default-branch-pipeline-failure-variables]
GITLAB_DEPENDENCY_PROXY_ADDRESS: ""

View File

@ -67,9 +67,9 @@ start-as-if-foss:
variables:
START_AS_IF_FOSS: $START_AS_IF_FOSS
RUBY_VERSION: $RUBY_VERSION
# Fake merge request variables to make `detect-tests` work from FOSS
CI_MERGE_REQUEST_PROJECT_PATH: $CI_MERGE_REQUEST_PROJECT_PATH
CI_MERGE_REQUEST_IID: $CI_MERGE_REQUEST_IID
# Variables for `detect-tests` to work in FOSS
FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH: $FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH
FIND_CHANGES_MERGE_REQUEST_IID: $FIND_CHANGES_MERGE_REQUEST_IID
# Enabling each individual jobs
ENABLE_RSPEC: $ENABLE_RSPEC
ENABLE_RSPEC_FAST_SPEC_HELPER: $ENABLE_RSPEC_FAST_SPEC_HELPER

View File

@ -2421,6 +2421,11 @@
.static-analysis:rules:rubocop:
rules:
- if: '$ENABLE_RUBOCOP == "true"'
# Do not run full rubocop if the merge request isn't approved
- <<: *if-merge-request-not-approved
changes: *rubocop-patterns
variables:
RUN_ALL_RUBOCOP: "false"
- <<: *if-default-refs
changes: *rubocop-patterns
variables:

View File

@ -152,7 +152,8 @@ detect-tests:
- retrieve_tests_mapping
- retrieve_frontend_fixtures_mapping
- |
if [ -n "$CI_MERGE_REQUEST_IID" ]; then
# $FIND_CHANGES_MERGE_REQUEST_IID is defined in as-if-foss.gitlab-ci.yml
if [ -n "$CI_MERGE_REQUEST_IID" ] || [ -n "$FIND_CHANGES_MERGE_REQUEST_IID" ]; then
mkdir -p $(dirname "$RSPEC_CHANGED_FILES_PATH")
tooling/bin/predictive_tests

View File

@ -1 +1 @@
v16.11.0
v17.0.0-rc1

View File

@ -924,7 +924,7 @@ export default {
<work-item-detail
:key="activeIssuable.iid"
:work-item-iid="activeIssuable.iid"
class="gl-pt-0!"
class="gl-pt-0! work-item-drawer"
@work-item-updated="updateIssuablesCache"
@work-item-emoji-updated="updateIssuableEmojis"
@addChild="refetchIssuables"

View File

@ -98,24 +98,28 @@ export default {
/>
</template>
<template #left-primary>
<div class="gl-display-flex gl-align-items-center gl-mr-3 gl-min-w-0">
<div
class="gl-display-flex gl-align-items-center gl-gap-3 gl-mr-5 gl-min-w-0"
data-testid="package-name"
>
<gl-link
v-if="containsWebPathLink"
class="gl-text-body gl-min-w-0"
class="gl-text-body gl-min-w-0 gl-word-break-all"
:class="errorPackageStyle"
:href="packageLink"
>
<gl-truncate :text="packageEntity.name" />
{{ packageEntity.name }}
</gl-link>
<gl-truncate v-else :class="errorPackageStyle" :text="packageEntity.name" />
<span v-else :class="errorPackageStyle">
{{ packageEntity.name }}
</span>
<package-tags
<div
v-if="packageEntity.tags.nodes && packageEntity.tags.nodes.length"
class="gl-ml-3"
:tags="packageEntity.tags.nodes"
hide-label
:tag-display-limit="1"
/>
class="gl-display-flex gl-gap-2"
>
<package-tags :tags="packageEntity.tags.nodes" hide-label :tag-display-limit="1" />
</div>
</div>
</template>
<template #left-secondary>

View File

@ -144,35 +144,40 @@ export default {
/>
</template>
<template #left-primary>
<div class="gl-display-flex gl-align-items-center gl-mr-3 gl-min-w-0">
<div
class="gl-display-flex gl-align-items-center gl-gap-3 gl-mr-5 gl-min-w-0"
data-testid="package-name"
>
<router-link
v-if="containsWebPathLink"
:class="errorPackageStyle"
class="gl-text-body gl-min-w-0"
class="gl-text-body gl-min-w-0 gl-word-break-all"
data-testid="details-link"
:to="{ name: 'details', params: { id: packageId } }"
>
<gl-truncate :text="packageEntity.name" />
{{ packageEntity.name }}
</router-link>
<gl-truncate v-else :class="errorPackageStyle" :text="packageEntity.name" />
<span v-else :class="errorPackageStyle">
{{ packageEntity.name }}
</span>
<package-tags
v-if="showTags"
class="gl-ml-3"
:tags="packageEntity.tags.nodes"
hide-label
:tag-display-limit="1"
/>
<div v-if="showTags || showBadgeProtected" class="gl-display-flex gl-gap-2">
<package-tags
v-if="showTags"
:tags="packageEntity.tags.nodes"
hide-label
:tag-display-limit="1"
/>
<gl-badge
v-if="showBadgeProtected"
v-gl-tooltip="{ title: $options.i18n.badgeProtectedTooltipText }"
class="gl-ml-3"
icon-size="sm"
size="sm"
variant="neutral"
>{{ __('protected') }}</gl-badge
>
<gl-badge
v-if="showBadgeProtected"
v-gl-tooltip="{ title: $options.i18n.badgeProtectedTooltipText }"
icon-size="sm"
size="sm"
variant="neutral"
>{{ __('protected') }}</gl-badge
>
</div>
</div>
</template>
<template #left-secondary>

View File

@ -79,7 +79,7 @@ export default {
v-if="
$slots['left-primary'] /* eslint-disable-line @gitlab/vue-prefer-dollar-scopedslots */
"
class="gl-display-flex gl-align-items-center gl-text-body gl-font-weight-bold gl-min-h-6 gl-min-w-0"
class="gl-display-flex gl-align-items-center gl-text-body gl-font-weight-semibold gl-min-h-6 gl-min-w-0"
>
<slot name="left-primary"></slot>
<gl-button
@ -101,13 +101,13 @@ export default {
'left-secondary'
]
"
class="gl-display-flex gl-align-items-center gl-text-gray-500 gl-min-h-6 gl-min-w-0 gl-flex-grow-1"
class="gl-display-flex gl-align-items-center gl-text-secondary gl-font-sm gl-min-h-6 gl-min-w-0 gl-flex-grow-1"
>
<slot name="left-secondary"></slot>
</div>
</div>
<div
class="gl-display-flex gl-flex-direction-column gl-sm-align-items-flex-end gl-justify-content-space-between gl-text-gray-500 gl-flex-shrink-0"
class="gl-display-flex gl-flex-direction-column gl-sm-align-items-flex-end gl-justify-content-space-between gl-text-secondary gl-flex-shrink-0"
>
<div
v-if="
@ -115,7 +115,7 @@ export default {
'right-primary'
]
"
class="gl-display-flex gl-align-items-center gl-sm-text-body gl-sm-font-weight-bold gl-min-h-6"
class="gl-display-flex gl-align-items-center gl-sm-text-body gl-sm-font-weight-semibold gl-min-h-6"
>
<slot name="right-primary"></slot>
</div>
@ -125,7 +125,7 @@ export default {
'right-secondary'
]
"
class="gl-display-flex gl-align-items-center gl-min-h-6"
class="gl-display-flex gl-align-items-center gl-font-sm gl-min-h-6"
>
<slot name="right-secondary"></slot>
</div>

View File

@ -417,7 +417,7 @@ export default {
</script>
<template>
<section>
<section class="work-item-view">
<section v-if="updateError" class="flash-container flash-container-page sticky">
<gl-alert class="gl-mb-3" variant="danger" @dismiss="updateError = undefined">
{{ updateError }}

View File

@ -431,3 +431,14 @@ $disclosure-hierarchy-chevron-dimension: 1.2rem;
}
}
}
.work-item-view.work-item-drawer {
container-name: view;
container-type: inline-size;
}
@container view (max-width: 40vw) {
.work-item-overview {
display: block !important;
}
}

View File

@ -38,7 +38,7 @@ class Admin::GroupsController < Admin::ApplicationController
end
def create
response = ::Groups::CreateService.new(current_user, group_params).execute
response = ::Groups::CreateService.new(current_user, group_params.with_defaults(organization_id: Current.organization_id)).execute
@group = response[:group]
if response.success?
@ -103,6 +103,7 @@ class Admin::GroupsController < Admin::ApplicationController
:enabled_git_access_protocol,
:project_creation_level,
:subgroup_creation_level,
:organization_id,
admin_note_attributes: [
:note
]

View File

@ -84,7 +84,10 @@ class GroupsController < Groups::ApplicationController
end
def create
response = Groups::CreateService.new(current_user, group_params).execute
response = Groups::CreateService.new(
current_user,
group_params.merge(organization_id: Current.organization_id)
).execute
@group = response[:group]
if response.success?

View File

@ -5,11 +5,11 @@ module Projects
require 'json'
include ActionView::Helpers::NumberHelper
def experiment_as_data(experiment)
def experiment_as_data(project, experiment)
data = {
name: experiment.name,
metadata: experiment.metadata,
path: link_to_experiment(experiment.project, experiment)
path: link_to_experiment(project, experiment)
}
Gitlab::Json.generate(data)

View File

@ -21,6 +21,10 @@ class Current < ActiveSupport::CurrentAttributes # rubocop:disable Gitlab/Namesp
super(value)
end
def organization_id
organization&.id
end
private
# No unlock.

View File

@ -52,7 +52,8 @@ module Groups
set_visibility_level
@group = Group.new(params.except(*::NamespaceSetting.allowed_namespace_settings_params))
except_keys = ::NamespaceSetting.allowed_namespace_settings_params + [:organization_id]
@group = Group.new(params.except(*except_keys))
set_organization
@ -180,7 +181,7 @@ module Groups
def set_organization
if params[:organization_id]
nil # nothing to do, already assigned from params
@group.organization_id = params[:organization_id]
elsif @group.parent_id
@group.organization = @group.parent.organization
# Rely on middleware setting of the organization, but sometimes it won't be set, so we need to guard it here.

View File

@ -3,7 +3,7 @@
- page_title @experiment.name
- add_page_specific_style 'page_bundles/ml_experiment_tracking'
- experiment = experiment_as_data(@experiment)
- experiment = experiment_as_data(@project, @experiment)
- items = candidates_table_items(@candidates, current_user)
- metrics = unique_logged_names(@candidates, &:latest_metrics)
- params = unique_logged_names(@candidates, &:params)

View File

@ -83,7 +83,6 @@
- integrations
- internationalization
- logging
- measurement_and_locking
- merge_trains
- metrics
- mlops

View File

@ -1,24 +0,0 @@
- title: "CiRunnerUpgradeStatusType GraphQL type renamed to CiRunnerUpgradeStatus" # (required) Clearly explain the change, or planned change. For example, "The `confidential` field for a `Note` is deprecated" or "CI/CD job names will be limited to 250 characters."
removal_milestone: "17.0" # (required) The milestone when this feature is planned to be removed
announcement_milestone: "16.0" # (required) The milestone when this feature was first announced as deprecated.
breaking_change: true # (required) Change to false if this is not a breaking change.
reporter: pedropombeiro # (required) GitLab username of the person reporting the change
stage: Verify # (required) String value of the stage that the feature was created in. e.g., Growth
issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/409332 # (required) Link to the deprecation issue in GitLab
body: | # (required) Do not modify this line, instead modify the lines below.
The `CiRunnerUpgradeStatusType` GraphQL type has been renamed to `CiRunnerUpgradeStatus`. In GitLab 17.0,
the aliasing for the `CiRunnerUpgradeStatusType` type will be removed.
#
# OPTIONAL END OF SUPPORT FIELDS
#
# If an End of Support period applies, the announcement should be shared with GitLab Support
# in the `#spt_managers` channel in Slack, and mention `@gitlab-com/support` in this MR.
#
end_of_support_milestone: # (optional) Use "XX.YY" format. The milestone when support for this feature will end.
#
# OTHER OPTIONAL FIELDS
#
tiers: # (optional - may be required in the future) An array of tiers that the feature is available in currently. e.g., [Free, Silver, Gold, Core, Premium, Ultimate]
documentation_url: https://docs.gitlab.com/ee/api/graphql/reference/index.html#cirunnerupgradestatus # (optional) This is a link to the current documentation page
image_url: # (optional) This is a link to a thumbnail image depicting the feature
video_url: # (optional) Use the youtube thumbnail URL with the structure of https://img.youtube.com/vi/UNIQUEID/hqdefault.jpg

View File

@ -0,0 +1,69 @@
# frozen_string_literal: true
class SyncIndexForPipelinesIdBigintRelated < Gitlab::Database::Migration[2.2]
milestone '17.0'
disable_ddl_transaction!
TABLE = :ci_pipelines
INDEXES = [
{
name: :idx_ci_pipelines_artifacts_locked_bigint,
columns: [:ci_ref_id, :id_convert_to_bigint],
options: { where: 'locked = 1' }
},
{
name: :index_ci_pipelines_for_ondemand_dast_scans_bigint,
columns: [:id_convert_to_bigint],
options: { where: 'source = 13' }
},
{
name: :index_ci_pipelines_on_ci_ref_id_and_more_bigint,
columns: [:ci_ref_id, :id_convert_to_bigint, :source, :status],
options: { order: { id_convert_to_bigint: :desc }, where: 'ci_ref_id IS NOT NULL' }
},
{
name: :index_ci_pipelines_on_pipeline_schedule_id_and_id_bigint,
columns: [:pipeline_schedule_id, :id_convert_to_bigint]
},
{
name: :index_ci_pipelines_on_project_id_and_id_desc_bigint,
columns: [:project_id, :id_convert_to_bigint],
options: { order: { id_convert_to_bigint: :desc } }
},
{
name: :idx_ci_pipelines_on_project_id_and_ref_and_status_and_id_bigint,
columns: [:project_id, :ref, :status, :id_convert_to_bigint]
},
{
name: :index_ci_pipelines_on_project_id_and_ref_and_id_desc_bigint,
columns: [:project_id, :ref, :id_convert_to_bigint],
options: { order: { id_convert_to_bigint: :desc } }
},
{
name: :index_ci_pipelines_on_status_and_id_bigint,
columns: [:status, :id_convert_to_bigint]
},
{
name: :idx_ci_pipelines_on_user_id_and_id_and_cancelable_status_bigint,
columns: [:user_id, :id_convert_to_bigint],
options: { where: "((status)::text = ANY (ARRAY[('running'::character varying)::text, ('waiting_for_resource'::character varying)::text, ('preparing'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text, ('scheduled'::character varying)::text]))" } # rubocop:disable Layout/LineLength -- Just too long
},
{
name: :idx_ci_pipelines_on_user_id_and_user_not_verified_bigint,
columns: [:user_id, :id_convert_to_bigint],
options: { order: { id_convert_to_bigint: :desc }, where: "failure_reason = 3" }
}
]
def up
INDEXES.each do |index|
add_concurrent_index(TABLE, index[:columns], name: index[:name], **(index[:options] || {}))
end
end
def down
INDEXES.each do |index|
remove_concurrent_index_by_name(TABLE, index[:name])
end
end
end

View File

@ -0,0 +1,177 @@
# frozen_string_literal: true
class ValidateFkIdBigint4CiPipelinesPCiBuildsCiPipelinesConfigPCiStages < Gitlab::Database::Migration[2.2]
include ::Gitlab::Database::PartitioningMigrationHelpers
milestone '17.0'
disable_ddl_transaction!
TABLE = :ci_pipelines
FOREIGN_KEYS = [
{
source_table: :ci_pipelines,
options: {
name: :fk_262d4c2d19_tmp,
column: [:auto_canceled_by_id],
on_delete: :nullify
}
},
{
source_table: :ci_pipeline_chat_data,
options: {
name: :fk_64ebfab6b3_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
},
{
source_table: :ci_sources_pipelines,
options: {
name: :fk_d4e29af7d7_tmp,
column: [:source_pipeline_id],
on_delete: :cascade
}
},
{
source_table: :ci_sources_pipelines,
options: {
name: :fk_e1bad85861_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
},
{
source_table: :ci_sources_projects,
options: {
name: :fk_rails_10a1eb379a_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
},
{
source_table: :ci_pipeline_metadata,
options: {
name: :fk_rails_50c1e9ea10_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
},
{
source_table: :ci_pipeline_messages,
options: {
name: :fk_rails_8d3b04e3e1_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
},
{
source_table: :ci_pipelines_config,
options: {
name: :fk_rails_906c9a2533_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
},
{
source_table: :ci_pipeline_artifacts,
options: {
name: :fk_rails_a9e811a466_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
},
{
source_table: :ci_daily_build_group_report_results,
options: {
name: :fk_rails_ee072d13b3_tmp,
column: [:last_pipeline_id],
on_delete: :cascade
}
}
]
P_FOREIGN_KEYS = [
{
source_table: :p_ci_builds,
options: {
name: :fk_87f4cefcda_tmp,
column: [:upstream_pipeline_id],
on_delete: :cascade
}
},
{
source_table: :p_ci_builds,
options: {
name: :fk_d3130c9a7f_tmp,
column: [:commit_id],
on_delete: :cascade
}
},
{
source_table: :p_ci_builds,
options: {
name: :fk_a2141b1522_tmp,
column: [:auto_canceled_by_id],
on_delete: :nullify
}
},
{
source_table: :p_ci_pipeline_variables,
options: {
name: :fk_f29c5f4380_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
},
{
source_table: :p_ci_stages,
options: {
name: :fk_fb57e6cc56_tmp,
column: [:pipeline_id],
on_delete: :cascade
}
}
]
def up
FOREIGN_KEYS.each do |fk|
validate_foreign_key(fk[:source_table], fk[:options][:column], name: fk[:options][:name])
end
P_FOREIGN_KEYS.each do |fk|
add_concurrent_partitioned_foreign_key(fk[:source_table], TABLE, **default_options.merge(fk[:options]))
end
end
def down
FOREIGN_KEYS.each do |fk|
with_lock_retries do
remove_foreign_key_if_exists(
fk[:source_table], TABLE,
name: fk[:options][:name], reverse_lock_order: true
)
end
add_concurrent_foreign_key(fk[:source_table], TABLE, **default_options.merge(fk[:options]), validate: false)
end
P_FOREIGN_KEYS.each do |fk|
with_lock_retries do
remove_foreign_key_if_exists(
fk[:source_table], TABLE,
name: fk[:options][:name], reverse_lock_order: true
)
end
add_concurrent_partitioned_foreign_key(
fk[:source_table], TABLE, **default_options.merge(fk[:options]), validate: false
)
end
end
private
def default_options
{ target_column: [:id_convert_to_bigint], reverse_lock_order: true, validate: true }
end
end

View File

@ -0,0 +1 @@
c0755bd5c74f74b2d27546dcd5965ed6b4aa18e96c0ab066ef6a9d6b1b690f49

View File

@ -0,0 +1 @@
9b614c01c7ff4d314637846c1472308669a1952bf251ac798ed157e89e932e60

View File

@ -23916,6 +23916,14 @@ CREATE UNIQUE INDEX idx_ci_job_artifacts_on_job_id_file_type_and_partition_id_un
CREATE INDEX idx_ci_pipelines_artifacts_locked ON ci_pipelines USING btree (ci_ref_id, id) WHERE (locked = 1);
CREATE INDEX idx_ci_pipelines_artifacts_locked_bigint ON ci_pipelines USING btree (ci_ref_id, id_convert_to_bigint) WHERE (locked = 1);
CREATE INDEX idx_ci_pipelines_on_project_id_and_ref_and_status_and_id_bigint ON ci_pipelines USING btree (project_id, ref, status, id_convert_to_bigint);
CREATE INDEX idx_ci_pipelines_on_user_id_and_id_and_cancelable_status_bigint ON ci_pipelines USING btree (user_id, id_convert_to_bigint) WHERE ((status)::text = ANY (ARRAY[('running'::character varying)::text, ('waiting_for_resource'::character varying)::text, ('preparing'::character varying)::text, ('pending'::character varying)::text, ('created'::character varying)::text, ('scheduled'::character varying)::text]));
CREATE INDEX idx_ci_pipelines_on_user_id_and_user_not_verified_bigint ON ci_pipelines USING btree (user_id, id_convert_to_bigint DESC) WHERE (failure_reason = 3);
CREATE INDEX idx_compliance_security_policies_on_policy_configuration_id ON compliance_framework_security_policies USING btree (policy_configuration_id);
CREATE UNIQUE INDEX idx_component_usages_on_component_used_by_project_and_used_date ON ONLY p_catalog_resource_component_usages USING btree (component_id, used_by_project_id, used_date);
@ -24766,10 +24774,14 @@ CREATE INDEX index_ci_pipelines_config_on_pipeline_id ON ci_pipelines_config USI
CREATE INDEX index_ci_pipelines_for_ondemand_dast_scans ON ci_pipelines USING btree (id) WHERE (source = 13);
CREATE INDEX index_ci_pipelines_for_ondemand_dast_scans_bigint ON ci_pipelines USING btree (id_convert_to_bigint) WHERE (source = 13);
CREATE INDEX index_ci_pipelines_on_auto_canceled_by_id ON ci_pipelines USING btree (auto_canceled_by_id);
CREATE INDEX index_ci_pipelines_on_ci_ref_id_and_more ON ci_pipelines USING btree (ci_ref_id, id DESC, source, status) WHERE (ci_ref_id IS NOT NULL);
CREATE INDEX index_ci_pipelines_on_ci_ref_id_and_more_bigint ON ci_pipelines USING btree (ci_ref_id, id_convert_to_bigint DESC, source, status) WHERE (ci_ref_id IS NOT NULL);
CREATE INDEX index_ci_pipelines_on_external_pull_request_id ON ci_pipelines USING btree (external_pull_request_id) WHERE (external_pull_request_id IS NOT NULL);
CREATE UNIQUE INDEX index_ci_pipelines_on_id_convert_to_bigint ON ci_pipelines USING btree (id_convert_to_bigint);
@ -24778,10 +24790,16 @@ CREATE INDEX index_ci_pipelines_on_merge_request_id ON ci_pipelines USING btree
CREATE INDEX index_ci_pipelines_on_pipeline_schedule_id_and_id ON ci_pipelines USING btree (pipeline_schedule_id, id);
CREATE INDEX index_ci_pipelines_on_pipeline_schedule_id_and_id_bigint ON ci_pipelines USING btree (pipeline_schedule_id, id_convert_to_bigint);
CREATE INDEX index_ci_pipelines_on_project_id_and_id_desc ON ci_pipelines USING btree (project_id, id DESC);
CREATE INDEX index_ci_pipelines_on_project_id_and_id_desc_bigint ON ci_pipelines USING btree (project_id, id_convert_to_bigint DESC);
CREATE UNIQUE INDEX index_ci_pipelines_on_project_id_and_iid ON ci_pipelines USING btree (project_id, iid) WHERE (iid IS NOT NULL);
CREATE INDEX index_ci_pipelines_on_project_id_and_ref_and_id_desc_bigint ON ci_pipelines USING btree (project_id, ref, id_convert_to_bigint DESC);
CREATE INDEX index_ci_pipelines_on_project_id_and_ref_and_status_and_id ON ci_pipelines USING btree (project_id, ref, status, id);
CREATE INDEX index_ci_pipelines_on_project_id_and_sha ON ci_pipelines USING btree (project_id, sha);
@ -24800,6 +24818,8 @@ CREATE INDEX index_ci_pipelines_on_project_idandrefandiddesc ON ci_pipelines USI
CREATE INDEX index_ci_pipelines_on_status_and_id ON ci_pipelines USING btree (status, id);
CREATE INDEX index_ci_pipelines_on_status_and_id_bigint ON ci_pipelines USING btree (status, id_convert_to_bigint);
CREATE INDEX index_ci_pipelines_on_user_id_and_created_at_and_config_source ON ci_pipelines USING btree (user_id, created_at, config_source);
CREATE INDEX index_ci_pipelines_on_user_id_and_created_at_and_source ON ci_pipelines USING btree (user_id, created_at, source);
@ -29893,7 +29913,7 @@ ALTER TABLE ONLY ci_pipelines
ADD CONSTRAINT fk_262d4c2d19 FOREIGN KEY (auto_canceled_by_id) REFERENCES ci_pipelines(id) ON DELETE SET NULL;
ALTER TABLE ONLY ci_pipelines
ADD CONSTRAINT fk_262d4c2d19_tmp FOREIGN KEY (auto_canceled_by_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE SET NULL NOT VALID;
ADD CONSTRAINT fk_262d4c2d19_tmp FOREIGN KEY (auto_canceled_by_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE SET NULL;
ALTER TABLE ONLY geo_event_log
ADD CONSTRAINT fk_27548c6db3 FOREIGN KEY (hashed_storage_migrated_event_id) REFERENCES geo_hashed_storage_migrated_events(id) ON DELETE CASCADE;
@ -30163,7 +30183,7 @@ ALTER TABLE ONLY ci_pipeline_chat_data
ADD CONSTRAINT fk_64ebfab6b3 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_pipeline_chat_data
ADD CONSTRAINT fk_64ebfab6b3_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_64ebfab6b3_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY cluster_agent_tokens
ADD CONSTRAINT fk_64f741f626 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
@ -30309,8 +30329,8 @@ ALTER TABLE ONLY packages_package_files
ALTER TABLE p_ci_builds
ADD CONSTRAINT fk_87f4cefcda FOREIGN KEY (upstream_pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_builds
ADD CONSTRAINT fk_87f4cefcda_tmp FOREIGN KEY (upstream_pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ALTER TABLE p_ci_builds
ADD CONSTRAINT fk_87f4cefcda_tmp FOREIGN KEY (upstream_pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY approval_group_rules_users
ADD CONSTRAINT fk_888a0df3b7 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
@ -30435,8 +30455,8 @@ ALTER TABLE ONLY subscription_add_on_purchases
ALTER TABLE p_ci_builds
ADD CONSTRAINT fk_a2141b1522 FOREIGN KEY (auto_canceled_by_id) REFERENCES ci_pipelines(id) ON DELETE SET NULL;
ALTER TABLE ONLY ci_builds
ADD CONSTRAINT fk_a2141b1522_tmp FOREIGN KEY (auto_canceled_by_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE SET NULL NOT VALID;
ALTER TABLE p_ci_builds
ADD CONSTRAINT fk_a2141b1522_tmp FOREIGN KEY (auto_canceled_by_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE SET NULL;
ALTER TABLE ONLY bulk_import_entities
ADD CONSTRAINT fk_a44ff95be5 FOREIGN KEY (parent_id) REFERENCES bulk_import_entities(id) ON DELETE CASCADE;
@ -30687,14 +30707,14 @@ ALTER TABLE ONLY environments
ALTER TABLE p_ci_builds
ADD CONSTRAINT fk_d3130c9a7f FOREIGN KEY (commit_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_builds
ADD CONSTRAINT fk_d3130c9a7f_tmp FOREIGN KEY (commit_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ALTER TABLE p_ci_builds
ADD CONSTRAINT fk_d3130c9a7f_tmp FOREIGN KEY (commit_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY ci_sources_pipelines
ADD CONSTRAINT fk_d4e29af7d7 FOREIGN KEY (source_pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_sources_pipelines
ADD CONSTRAINT fk_d4e29af7d7_tmp FOREIGN KEY (source_pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_d4e29af7d7_tmp FOREIGN KEY (source_pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY incident_management_timeline_events
ADD CONSTRAINT fk_d606a2a890 FOREIGN KEY (promoted_from_note_id) REFERENCES notes(id) ON DELETE SET NULL;
@ -30769,7 +30789,7 @@ ALTER TABLE ONLY ci_sources_pipelines
ADD CONSTRAINT fk_e1bad85861 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_sources_pipelines
ADD CONSTRAINT fk_e1bad85861_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_e1bad85861_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE p_ci_builds_metadata
ADD CONSTRAINT fk_e20479742e_p FOREIGN KEY (partition_id, build_id) REFERENCES p_ci_builds(partition_id, id) ON UPDATE CASCADE ON DELETE CASCADE;
@ -30864,8 +30884,8 @@ ALTER TABLE ONLY boards
ALTER TABLE p_ci_pipeline_variables
ADD CONSTRAINT fk_f29c5f4380 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_pipeline_variables
ADD CONSTRAINT fk_f29c5f4380_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ALTER TABLE p_ci_pipeline_variables
ADD CONSTRAINT fk_f29c5f4380_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY zoekt_indices
ADD CONSTRAINT fk_f34800a202 FOREIGN KEY (zoekt_node_id) REFERENCES zoekt_nodes(id) ON DELETE CASCADE;
@ -30903,8 +30923,8 @@ ALTER TABLE ONLY application_settings
ALTER TABLE p_ci_stages
ADD CONSTRAINT fk_fb57e6cc56 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_stages
ADD CONSTRAINT fk_fb57e6cc56_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ALTER TABLE p_ci_stages
ADD CONSTRAINT fk_fb57e6cc56_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY agent_group_authorizations
ADD CONSTRAINT fk_fb70782616 FOREIGN KEY (agent_id) REFERENCES cluster_agents(id) ON DELETE CASCADE;
@ -31066,7 +31086,7 @@ ALTER TABLE ONLY ci_sources_projects
ADD CONSTRAINT fk_rails_10a1eb379a FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_sources_projects
ADD CONSTRAINT fk_rails_10a1eb379a_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_rails_10a1eb379a_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY zoom_meetings
ADD CONSTRAINT fk_rails_1190f0e0fa FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
@ -31528,7 +31548,7 @@ ALTER TABLE ONLY ci_pipeline_metadata
ADD CONSTRAINT fk_rails_50c1e9ea10 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_pipeline_metadata
ADD CONSTRAINT fk_rails_50c1e9ea10_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_rails_50c1e9ea10_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY project_repository_storage_moves
ADD CONSTRAINT fk_rails_5106dbd44a FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
@ -31978,7 +31998,7 @@ ALTER TABLE ONLY ci_pipeline_messages
ADD CONSTRAINT fk_rails_8d3b04e3e1 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_pipeline_messages
ADD CONSTRAINT fk_rails_8d3b04e3e1_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_rails_8d3b04e3e1_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE incident_management_pending_alert_escalations
ADD CONSTRAINT fk_rails_8d8de95da9 FOREIGN KEY (alert_id) REFERENCES alert_management_alerts(id) ON DELETE CASCADE;
@ -32008,7 +32028,7 @@ ALTER TABLE ONLY ci_pipelines_config
ADD CONSTRAINT fk_rails_906c9a2533 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_pipelines_config
ADD CONSTRAINT fk_rails_906c9a2533_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_rails_906c9a2533_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY approval_project_rules_groups
ADD CONSTRAINT fk_rails_9071e863d1 FOREIGN KEY (approval_project_rule_id) REFERENCES approval_project_rules(id) ON DELETE CASCADE;
@ -32197,7 +32217,7 @@ ALTER TABLE ONLY ci_pipeline_artifacts
ADD CONSTRAINT fk_rails_a9e811a466 FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_pipeline_artifacts
ADD CONSTRAINT fk_rails_a9e811a466_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_rails_a9e811a466_tmp FOREIGN KEY (pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY merge_request_user_mentions
ADD CONSTRAINT fk_rails_aa1b2961b1 FOREIGN KEY (merge_request_id) REFERENCES merge_requests(id) ON DELETE CASCADE;
@ -32701,7 +32721,7 @@ ALTER TABLE ONLY ci_daily_build_group_report_results
ADD CONSTRAINT fk_rails_ee072d13b3 FOREIGN KEY (last_pipeline_id) REFERENCES ci_pipelines(id) ON DELETE CASCADE;
ALTER TABLE ONLY ci_daily_build_group_report_results
ADD CONSTRAINT fk_rails_ee072d13b3_tmp FOREIGN KEY (last_pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE NOT VALID;
ADD CONSTRAINT fk_rails_ee072d13b3_tmp FOREIGN KEY (last_pipeline_id) REFERENCES ci_pipelines(id_convert_to_bigint) ON DELETE CASCADE;
ALTER TABLE ONLY import_source_users
ADD CONSTRAINT fk_rails_ee30e569be FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE;

View File

@ -21,8 +21,6 @@ To see DevOps Reports:
## DevOps Score
> - [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/20976) from Conversational Development Index in GitLab 12.6.
NOTE:
To see the DevOps score, you must activate your GitLab instance's [Service Ping](../settings/usage_statistics.md#service-ping). DevOps Score is a comparative tool, so your score data must be centrally processed by GitLab Inc. first.
@ -47,14 +45,6 @@ DETAILS:
**Tier:** Ultimate
**Offering:** Self-managed
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/247112) in GitLab 13.7 as a [Beta feature](../../policy/experiment-beta-support.md#beta).
> - The Overview tab [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330401) in GitLab 14.1.
> - DAST and SAST metrics [added](https://gitlab.com/gitlab-org/gitlab/-/issues/328033) in GitLab 14.1.
> - Fuzz Testing metrics [added](https://gitlab.com/gitlab-org/gitlab/-/issues/330398) in GitLab 14.2.
> - Dependency Scanning metrics [added](https://gitlab.com/gitlab-org/gitlab/-/issues/328034) in GitLab 14.2.
> - Multi-select [added](https://gitlab.com/gitlab-org/gitlab/-/issues/333586) in GitLab 14.2.
> - Overview table [added](https://gitlab.com/gitlab-org/gitlab/-/issues/335638) in GitLab 14.3.
DevOps Adoption shows feature adoption for development, security, and operations.
| Category | Feature |

View File

@ -10,8 +10,6 @@ DETAILS:
**Tier:** Free, Premium, Ultimate
**Offering:** Self-managed
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/41416) in GitLab 11.2.
Instance-level analytics provide insights into the feature and data usage of your entire instance.
## View instance-level analytics

View File

@ -10,9 +10,6 @@ DETAILS:
**Tier:** Free, Premium, Ultimate
**Offering:** Self-managed
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/235754) in GitLab 13.5 behind a feature flag, disabled by default.
> - [Became enabled by default](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/46962) in GitLab 13.6.
> - [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/285220) from Instance Statistics to Usage Trends in GitLab 13.6.
> - It's enabled on GitLab.com.
> - It's recommended for production use.

View File

@ -431,7 +431,7 @@ control over how the Pages daemon runs and serves content in your environment.
| `namespace_in_path` | (Experimental) Enable or disable namespace in the URL path. This requires `pages_nginx[enable] = true`. Sets `rewrite` configuration in NGINX to support [without wildcard DNS setup](#for-namespace-in-url-path-without-wildcard-dns). Default: `false` |
| `propagate_correlation_id` | Set to true (false by default) to re-use existing Correlation ID from the incoming request header `X-Request-ID` if present. If a reverse proxy sets this header, the value is propagated in the request chain. |
| `max_connections` | Limit on the number of concurrent connections to the HTTP, HTTPS or proxy listeners. |
| `max_uri_length` | The maximum length of URIs accepted by GitLab Pages. Set to 0 for unlimited length. [Introduced](https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/5729) in GitLab 14.5. |
| `max_uri_length` | The maximum length of URIs accepted by GitLab Pages. Set to 0 for unlimited length. |
| `metrics_address` | The address to listen on for metrics requests. |
| `redirect_http` | Redirect pages from HTTP to HTTPS, true/false. |
| `redirects_max_config_size` | The maximum size of the `_redirects` file, in bytes (default: 65536). |
@ -575,8 +575,6 @@ verification requirement:
### Let's Encrypt integration
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/28996) in GitLab 12.1.
[GitLab Pages' Let's Encrypt integration](../../user/project/pages/custom_domains_ssl_tls_certification/lets_encrypt_integration.md)
allows users to add Let's Encrypt SSL certificates for GitLab Pages
sites served under a custom domain.
@ -623,8 +621,6 @@ all the App nodes and Sidekiq nodes.
#### Using Pages with reduced authentication scope
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/423) in GitLab 13.10.
By default, the Pages daemon uses the `api` scope to authenticate. You can configure this. For
example, this reduces the scope to `read_api` in `/etc/gitlab/gitlab.rb`:
@ -646,8 +642,6 @@ this:
#### Disable public access to all Pages sites
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/32095) in GitLab 12.7.
You can enforce [Access Control](#access-control) for all GitLab Pages websites hosted
on your GitLab instance. By doing so, only authenticated users have access to them.
This setting overrides Access Control set by users in individual projects.
@ -694,8 +688,6 @@ Authority (CA) in the system certificate store.
### ZIP serving and cache configuration
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/392) in GitLab 13.7.
WARNING:
These instructions deal with some advanced settings of your GitLab instance. The recommended default values are set inside GitLab Pages. You should
change these settings only if absolutely necessary. Use extreme caution.
@ -787,8 +779,6 @@ Follow the steps below to configure verbose logging of GitLab Pages daemon.
## Propagating the correlation ID
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/438) in GitLab 13.10.
Setting the `propagate_correlation_id` to true allows installations behind a reverse proxy to generate
and set a correlation ID to requests sent to GitLab Pages. When a reverse proxy sets the header value `X-Request-ID`,
the value propagates in the request chain.
@ -1015,24 +1005,16 @@ Pages server.
When GitLab Pages daemon serves pages requests it firstly needs to identify which project should be used to
serve the requested URL and how its content is stored.
Before GitLab 13.3, all pages content was extracted to the special shared directory,
and each project had a special configuration file.
The Pages daemon was reading these configuration files and storing their content in memory.
This approach had several disadvantages and was replaced with GitLab Pages using the internal GitLab API
every time a new domain is requested.
By default, GitLab Pages uses the internal GitLab API every time a new domain is requested.
Pages fails to start if it can't connect to the API.
The domain information is also cached by the Pages daemon to speed up subsequent requests.
Starting from [GitLab 14.0](https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/5993) GitLab Pages uses API
by default and fails to start if it can't connect to it.
For common issues, see [troubleshooting](troubleshooting.md#failed-to-connect-to-the-internal-gitlab-api).
For more details see this [blog post](https://about.gitlab.com/blog/2020/08/03/how-gitlab-pages-uses-the-gitlab-api-to-serve-content/).
### GitLab API cache configuration
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/520) in GitLab 13.10.
API-based configuration uses a caching mechanism to improve performance and reliability of serving Pages.
The cache behavior can be modified by changing the cache settings, however, the recommended values are set for you and should only be modified if needed.
Incorrect configuration of these values may result in intermittent
@ -1077,72 +1059,14 @@ The following [object storage](../object_storage.md) settings are:
NOTE:
If you want to stop using and disconnect the NFS server, you need to
[explicitly disable local storage](#disable-pages-local-storage), and it's only possible after upgrading to GitLab 13.11.
[explicitly disable local storage](#disable-pages-local-storage).
### S3-compatible connection settings
In GitLab 13.2 and later, you should use the
[consolidated object storage settings](../object_storage.md#configure-a-single-storage-connection-for-all-object-types-consolidated-form).
This section describes the earlier configuration format.
You should use the [consolidated object storage settings](../object_storage.md#configure-a-single-storage-connection-for-all-object-types-consolidated-form).
See [the available connection settings for different providers](../object_storage.md#configure-the-connection-settings).
::Tabs
:::TabTitle Linux package (Omnibus)
1. Add the following lines to `/etc/gitlab/gitlab.rb` and replace the values with the ones you want:
```ruby
gitlab_rails['pages_object_store_enabled'] = true
gitlab_rails['pages_object_store_remote_directory'] = "pages"
gitlab_rails['pages_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'eu-central-1',
'aws_access_key_id' => 'AWS_ACCESS_KEY_ID',
'aws_secret_access_key' => 'AWS_SECRET_ACCESS_KEY'
}
```
If you use AWS IAM profiles, be sure to omit the AWS access key and secret access key/value
pairs:
```ruby
gitlab_rails['pages_object_store_connection'] = {
'provider' => 'AWS',
'region' => 'eu-central-1',
'use_iam_profile' => true
}
```
1. Save the file and [reconfigure GitLab](../restart_gitlab.md#reconfigure-a-linux-package-installation)
for the changes to take effect.
1. [Migrate existing Pages deployments to object storage.](#migrate-pages-deployments-to-object-storage)
:::TabTitle Self-compiled (source)
1. Edit `/home/git/gitlab/config/gitlab.yml` and add or amend the following lines:
```yaml
pages:
object_store:
enabled: true
remote_directory: "pages" # The bucket name
connection:
provider: AWS # Only AWS supported at the moment
aws_access_key_id: AWS_ACCESS_KEY_ID
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
region: eu-central-1
```
1. Save the file and [restart GitLab](../restart_gitlab.md#self-compiled-installations)
for the changes to take effect.
1. [Migrate existing Pages deployments to object storage.](#migrate-pages-deployments-to-object-storage)
::EndTabs
### Migrate Pages deployments to object storage
Existing Pages deployment objects (zip archives) can be stored in either:
@ -1159,8 +1083,7 @@ sudo gitlab-rake gitlab:pages:deployments:migrate_to_object_storage
You can track progress and verify that all Pages deployments migrated successfully using the
[PostgreSQL console](https://docs.gitlab.com/omnibus/settings/database.html#connecting-to-the-bundled-postgresql-database):
- `sudo gitlab-rails dbconsole` for Linux package installations running GitLab 14.1 and earlier.
- `sudo gitlab-rails dbconsole --database main` for Linux package installations running 14.2 and later.
- `sudo gitlab-rails dbconsole --database main` for Linux package installations.
- `sudo -u git -H psql -d gitlabhq_production` for self-compiled installations.
Verify `objectstg` below (where `store=2`) has count of all Pages deployments:
@ -1186,8 +1109,6 @@ sudo gitlab-rake gitlab:pages:deployments:migrate_to_local
### Disable Pages local storage
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/301159) in GitLab 13.11.
If you use [object storage](#object-storage-settings), you can disable local storage to avoid unnecessary disk usage/writes:
1. Edit `/etc/gitlab/gitlab.rb`:
@ -1221,12 +1142,11 @@ mounted on your primary server, in case you must migrate back to a single-node e
## ZIP storage
In GitLab 14.0 the underlying storage format of GitLab Pages changed from
files stored directly in disk to a single ZIP archive per project.
The underlying storage format of GitLab Pages is a single ZIP archive per project.
These ZIP archives can be stored either locally on disk storage or on [object storage](#object-storage-settings) if it is configured.
[Starting from GitLab 13.5](https://gitlab.com/gitlab-org/gitlab/-/issues/245308) ZIP archives are stored every time pages site is updated.
The ZIP archives are stored every time pages site is updated.
## Backup
@ -1268,8 +1188,6 @@ An IPv6 address receives a large prefix in the 128-bit address space. The prefix
#### Enable HTTP requests rate limits by source-IP
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/631) in GitLab 14.5.
1. Set rate limits in `/etc/gitlab/gitlab.rb`:
```ruby
@ -1281,8 +1199,6 @@ An IPv6 address receives a large prefix in the 128-bit address space. The prefix
#### Enable HTTP requests rate limits by domain
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/630) in GitLab 14.7.
1. Set rate limits in `/etc/gitlab/gitlab.rb`:
```ruby
@ -1294,8 +1210,6 @@ An IPv6 address receives a large prefix in the 128-bit address space. The prefix
#### Enable TLS connections rate limits by source-IP
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/632) in GitLab 14.9.
1. Set rate limits in `/etc/gitlab/gitlab.rb`:
```ruby
@ -1307,8 +1221,6 @@ An IPv6 address receives a large prefix in the 128-bit address space. The prefix
#### Enable TLS connections rate limits by domain
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/632) in GitLab 14.9.
1. Set rate limits in `/etc/gitlab/gitlab.rb`:
```ruby

View File

@ -428,7 +428,6 @@ Each request to view a resource in a private site is authenticated by Pages
using that token. For each request it receives, it makes a request to the GitLab
API to check that the user is authorized to read that site.
From [GitLab 12.8](https://gitlab.com/gitlab-org/omnibus-gitlab/-/merge_requests/3689) onward,
Access Control parameters for Pages are set in a configuration file, which
by convention is named `gitlab-pages-config`. The configuration file is passed to
pages using the `-config flag` or `CONFIG` environment variable.

View File

@ -124,8 +124,7 @@ ERRO[0010] Failed to connect to the internal GitLab API after 0.50s error="fail
If you are [Running GitLab Pages on a separate server](index.md#running-gitlab-pages-on-a-separate-server)
you must copy the `/etc/gitlab/gitlab-secrets.json` file
from the **GitLab server** to the **Pages server** after upgrading to GitLab 13.3,
as described in that section.
from the **GitLab server** to the **Pages server**.
Other reasons may include network connectivity issues between your
**GitLab server** and your **Pages server** such as firewall configurations or closed ports.
@ -262,29 +261,6 @@ In that case, it's highly recommended you to configure
Alternatively, you can mount the GitLab Pages shared directory to the same path on
both servers.
## GitLab Pages doesn't work after upgrading to GitLab 14.0 or above
GitLab 14.0 introduces a number of changes to GitLab Pages which may require manual intervention.
1. Firstly [follow the migration guide](https://archives.docs.gitlab.com/14.10/ee/administration/pages/#prepare-gitlab-pages-for-140).
1. Try to upgrade to GitLab 14.3 or above. Some of the issues were fixed in GitLab 14.1, 14.2 and 14.3.
1. If it doesn't work, see [GitLab Pages logs](#how-to-see-gitlab-pages-logs), and if you see any errors there then search them on this page.
WARNING:
In GitLab 14.0-14.2 you can temporarily enable legacy storage and configuration mechanisms.
To do that:
1. Describe the issue you're seeing in the [migration feedback issue](https://gitlab.com/gitlab-org/gitlab/-/issues/331699).
1. Edit `/etc/gitlab/gitlab.rb`:
```ruby
gitlab_pages['use_legacy_storage'] = true
```
1. [Reconfigure GitLab](../restart_gitlab.md#reconfigure-a-linux-package-installation).
## GitLab Pages deploy job fails with error "is not a recognized provider"
If the **pages** job succeeds but the **deploy** job gives the error "is not a recognized provider":

View File

@ -14,8 +14,6 @@ Adjust the wiki settings of your GitLab instance.
## Wiki page content size limit
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/31176) in GitLab 13.2.
You can set a maximum content size limit for wiki pages. This limit can prevent
abuse of the feature. The default value is **52428800 Bytes** (50 MB).

View File

@ -10,10 +10,6 @@ DETAILS:
**Tier:** Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/279039) in GitLab 13.10.
> - The legacy key/value pair `{ "<date>" => "<value>" }` was removed from the payload in GitLab 14.0.
> - `time_to_restore_service` metric was introduced in GitLab 14.9.
You can also retrieve [DORA metrics](../../user/analytics/dora_metrics.md) with the [GraphQL API](../../api/graphql/reference/index.md).
All methods require at least the Reporter role.
@ -58,8 +54,6 @@ Example response:
## Get group-level DORA metrics
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/279039) in GitLab 13.10.
Get group-level DORA metrics.
```plaintext

View File

@ -10,8 +10,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/26460) in GitLab 12.9.
## Get count of recently created issues for group
```plaintext

View File

@ -10,11 +10,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/212199) in GitLab 13.5.
> - The `encoding` field was [added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/81150) in GitLab 14.9.
> - The `render_html` attribute was [added](https://gitlab.com/gitlab-org/gitlab/-/issues/336792) in GitLab 14.9.
> - The `version` attribute was [added](https://gitlab.com/gitlab-org/gitlab/-/issues/336792) in GitLab 14.9.
The [group wikis](../user/project/wiki/group.md) API is available only in APIv4.
An API for [project wikis](wikis.md) is also available.

View File

@ -10,10 +10,6 @@ DETAILS:
**Tier:** Free, Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - The `encoding` field was [added](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/81150) in GitLab 14.9.
> - The `render_html` attribute was [added](https://gitlab.com/gitlab-org/gitlab/-/issues/336792) in GitLab 14.9.
> - The `version` attribute was [added](https://gitlab.com/gitlab-org/gitlab/-/issues/336792) in GitLab 14.9.
The project [wikis](../user/project/wiki/index.md) API is available only in APIv4.
An API for [group wikis](group_wikis.md) is also available.

View File

@ -243,3 +243,5 @@ In progress.
- 2023-06-30: The second largest table partitioned: `ci_builds`.
- 2023-12-12: `ci_builds` and `ci_builds_metadata` growth is stopped by writing data to new partitions.
- 2024-02-05: `ci_pipeline_variables` is partitioned.
- 2024-03-26: `ci_job_artifacts` is partitioned.
- 2024-04-26: `ci_stages` is partitioned.

View File

@ -6,8 +6,6 @@ info: Any user with at least the Maintainer role can merge updates to this conte
# Aggregated Value Stream Analytics
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/335391) in GitLab 14.7.
DISCLAIMER:
This page contains information related to upcoming products, features, and functionality.
It is important to note that the information presented is for informational purposes only.
@ -110,7 +108,7 @@ the service performs operations in batches and enforces strict application limit
- Stop processing when a limit is reached, schedule a background job to continue the processing later.
- Continue processing data from a specific point.
As of GitLab 14.7, the data loading is done manually. Once the feature is ready, the service is
The data loading is done manually. Once the feature is ready, the service is
invoked periodically by the system via a cron job (this part is not implemented yet).
#### Record iteration

View File

@ -7,8 +7,6 @@ description: "GitLab's development guidelines for Wikis"
# Wikis development guidelines
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/227027) in GitLab 13.5.
The wiki functionality in GitLab is based on [Gollum 4.x](https://github.com/gollum/gollum/).
It's used in the [Gitaly](gitaly.md) Ruby service, and accessed from the Rails app through Gitaly RPC calls.
@ -18,9 +16,6 @@ Wikis use Git repositories as storage backend, and can be accessed through:
- The [REST API](../api/wikis.md)
- [Git itself](../user/project/wiki/index.md#create-or-edit-wiki-pages-locally)
[Introduced](https://gitlab.com/groups/gitlab-org/-/epics/2214) in GitLab 13.5, wikis are also available
for groups, in addition to projects.
## Involved Gems
Some notable gems that are used for wikis are:

View File

@ -629,21 +629,6 @@ If you rely on the order of the returned projects to be `id_asc`, change your sc
<div class="deprecation breaking-change" data-milestone="17.0">
### CiRunnerUpgradeStatusType GraphQL type renamed to CiRunnerUpgradeStatus
<div class="deprecation-notes">
- Announced in GitLab <span class="milestone">16.0</span>
- Removal in GitLab <span class="milestone">17.0</span> ([breaking change](https://docs.gitlab.com/ee/update/terminology.html#breaking-change))
- To discuss this change or learn more, see the [deprecation issue](https://gitlab.com/gitlab-org/gitlab/-/issues/409332).
</div>
The `CiRunnerUpgradeStatusType` GraphQL type has been renamed to `CiRunnerUpgradeStatus`. In GitLab 17.0,
the aliasing for the `CiRunnerUpgradeStatusType` type will be removed.
</div>
<div class="deprecation breaking-change" data-milestone="17.0">
### Compliance framework in general settings
<div class="deprecation-notes">

View File

@ -10,9 +10,6 @@ DETAILS:
**Tier:** Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/275991) in GitLab 13.7.
> - Lead time for changes [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/291746) in GitLab 13.10.
The [DevOps Research and Assessment (DORA)](https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance)
team has identified four metrics that measure DevOps performance.
Using these metrics helps improve DevOps efficiency and communicate performance to business stakeholders, which can accelerate business results.
@ -225,14 +222,16 @@ and use it to automatically:
GitLab supports the following DORA metrics:
| Metric | Level | API | UI chart | Comments |
|---------------------------|-------------------|-----------------------------------------------------|------------------------|----------|
| `deployment_frequency` | Project | [GitLab 13.7 and later](../../api/dora/metrics.md) | GitLab 14.8 and later | The previous API endpoint was [deprecated](https://gitlab.com/gitlab-org/gitlab/-/issues/323713) in 13.10. |
| `deployment_frequency` | Group | [GitLab 13.10 and later](../../api/dora/metrics.md) | GitLab 13.12 and later | |
| `lead_time_for_changes` | Project | [GitLab 13.10 and later](../../api/dora/metrics.md) | GitLab 13.11 and later | Unit in seconds. Aggregation method is median. |
| `lead_time_for_changes` | Group | [GitLab 13.10 and later](../../api/dora/metrics.md) | GitLab 14.0 and later | Unit in seconds. Aggregation method is median. |
| `time_to_restore_service` | Project and group | [GitLab 14.9 and later](../../api/dora/metrics.md) | GitLab 15.1 and later | Unit in days. Aggregation method is median. |
| `change_failure_rate` | Project and group | [GitLab 14.10 and later](../../api/dora/metrics.md) | GitLab 15.2 and later | Percentage of deployments. |
| Metric | Level | Comments |
|---------------------------|-------------------|----------|
| `deployment_frequency` | Project | |
| `deployment_frequency` | Group | |
| `lead_time_for_changes` | Project | Unit in seconds. Aggregation method is median. |
| `lead_time_for_changes` | Group | Unit in seconds. Aggregation method is median. |
| `time_to_restore_service` | Project and group | Unit in days. Aggregation method is median. (Available in UI chart in GitLab 15.1 and later) |
| `change_failure_rate` | Project and group | Percentage of deployments. (Available in UI chart in GitLab 15.2 and later) |
All metrics are available for the [(DORA) key metrics API](../../api/dora/metrics.md).
### DORA metrics charts

View File

@ -11,9 +11,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/229045) in GitLab 13.3.
> - Moved to GitLab Premium in 13.9.
Use merge request analytics to view:
- The number of merge requests your organization merged per month.
@ -38,9 +35,6 @@ To view merge request analytics:
## View the number of merge requests in a date range
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/232651) in GitLab 13.3.
> - Filtering [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/229266) in GitLab 13.4
To view the number of merge requests merged during a specific date range:
1. On the left sidebar, select **Search or go to** and find your project.
@ -70,8 +64,6 @@ the following information about each merge request:
## View average time between merge request creation and merge
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/229389) in GitLab 13.9.
The number in **Mean time to merge** shows the average time between when a merge request is
created and when it's merged. Closed and not yet merged merge requests are not included.

View File

@ -13,7 +13,7 @@ DETAILS:
Use repository analytics to view information about a project's Git repository:
- Programming languages used in the repository's default branch.
- Code coverage history from last 3 months ([Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/33743) in GitLab 13.1).
- Code coverage history from last 3 months.
- Commit statistics (last month).
- Commits per day of month.
- Commits per weekday.

View File

@ -9,8 +9,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/3090) in GitLab 12.2 for subgroups.
Contribution analytics provide an overview of the
[contribution events](../../profile/contributions_calendar.md#user-contribution-events) made by your group's members.

View File

@ -10,16 +10,6 @@ DETAILS:
**Tier:** Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/321083) in GitLab 13.11 as a [Beta feature](../../../policy/experiment-beta-support.md#beta).
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/333556) in GitLab 14.1.
> - The Overview tab [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/330401) in GitLab 14.1.
> - DAST and SAST metrics [added](https://gitlab.com/gitlab-org/gitlab/-/issues/328033) in GitLab 14.1.
> - Fuzz Testing metrics [added](https://gitlab.com/gitlab-org/gitlab/-/issues/330398) in GitLab 14.2.
> - Dependency Scanning metrics [added](https://gitlab.com/gitlab-org/gitlab/-/issues/328034) in GitLab 14.2.
> - Multi-select [added](https://gitlab.com/gitlab-org/gitlab/-/issues/333586) in GitLab 14.2.
> - Overview table [added](https://gitlab.com/gitlab-org/gitlab/-/issues/335638) in GitLab 14.3.
> - Adoption over time chart [added](https://gitlab.com/gitlab-org/gitlab/-/issues/337561) in GitLab 14.4.
DevOps Adoption shows you how groups in your organization adopt and use the most essential features of GitLab.
You can use Group DevOps Adoption to:

View File

@ -10,9 +10,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - Issue analytics for groups [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7478) in GitLab 11.5.
> - Issue analytics for projects [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/196561) in GitLab 12.9.
Issue analytics is a bar graph which illustrates the number of issues created each month.
The default time span is 13 months, which includes the current month, and the 12 months prior.
Issue analytics is available for projects and groups.
@ -59,8 +56,6 @@ You can use this metric to improve the overall turn-around time and value delive
## Drill into the information
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/196547) in GitLab 13.1.
You can examine details of individual issues by browsing the table
located below the chart.

View File

@ -110,10 +110,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/335391) in GitLab 14.5.
> - Filter by stop date toggle [added](https://gitlab.com/gitlab-org/gitlab/-/issues/352428) in GitLab 14.9
> - Data refresh badge [added](https://gitlab.com/gitlab-org/gitlab/-/issues/341739) in GitLab 14.9
> - Filter by stop date toggle [removed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84356) in GitLab 14.9
> - Enable filtering by stop date [added](https://gitlab.com/gitlab-org/gitlab/-/issues/355000) in GitLab 15.0
Value stream analytics uses a backend process to collect and aggregate stage-level data, which
@ -279,8 +275,6 @@ You can change the name of a project environment in your GitLab CI/CD configurat
## View value stream analytics
> - Filtering [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13216) in GitLab 13.3
> - Horizontal stage path [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/12196) in 13.0 and [feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/323982) in 13.12
> - Predefined date ranges dropdown list [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/408656/) in GitLab 16.5 [with a flag](../../../administration/feature_flags.md) named `vsa_predefined_date_ranges`. Disabled by default.
> - Predefined date ranges dropdown list [enabled on self-managed and GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/issues/433149) in GitLab 16.7.
> - Predefined date ranges dropdown list [generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/438051) in GitLab 16.9. Feature flag `vsa_predefined_date_ranges` removed.
@ -331,9 +325,6 @@ For the "Tasks by type" chart, only the Date range and Project selector filters
## Value stream analytics metrics
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/210315) in GitLab 13.0.
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/323982) in GitLab 13.12.
The **Overview** page in value stream analytics displays key metrics of the DevSecOps lifecycle performance for projects and groups.
### Lifecycle metrics
@ -353,8 +344,6 @@ DETAILS:
**Tier:** Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/340150) lead time for changes DORA metric in GitLab 14.5.
> - DORA API-based deployment metrics for value stream analytics for groups were [moved](https://gitlab.com/gitlab-org/gitlab/-/issues/337256) from GitLab Ultimate to GitLab Premium in GitLab 14.3.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/355304) time to restore service tile in GitLab 15.0.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/357071) change failure rate tile in GitLab 15.0.
@ -373,10 +362,6 @@ If you have a GitLab Premium or Ultimate subscription:
- The number of successful deployments is calculated with DORA data.
- The data is filtered based on environment and environment tier.
NOTE:
In GitLab 13.9 and later, deployment frequency metrics are calculated based on when the deployment was finished.
In GitLab 13.8 and earlier, deployment frequency metrics are calculated based on when the deployment was created.
## View lifecycle and DORA metrics
Prerequisites:
@ -408,9 +393,6 @@ To view the [Value Streams Dashboard](../../analytics/value_streams_dashboard.md
## View metrics for each development stage
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/210315) in GitLab 13.0.
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/323982) in GitLab 13.12.
Value stream analytics shows the median time spent by issues or merge requests in each development stage.
To view the median time spent in each stage by a group:
@ -464,8 +446,6 @@ On self-managed GitLab, by default the **New value stream** feature is not avail
### Create a value stream with GitLab default stages
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/221202) in GitLab 13.3
When you create a value stream, you can use GitLab default stages and hide or re-order them. You can also
create custom stages in addition to those provided in the default template.
@ -487,10 +467,6 @@ If you have recently upgraded to GitLab Premium, it can take up to 30 minutes fo
### Create a value stream with custom stages
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/50229) in GitLab 13.7.
> - [Enabled by default](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55572) in GitLab 13.10.
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/294190) in GitLab 13.11.
When you create a value stream, you can create and add custom stages that align with your own development workflows.
1. On the left sidebar, select **Search or go to** and find your project or group.
@ -527,7 +503,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/267537) in GitLab 13.10.
> - **Edit value stream** feature [changed](https://gitlab.com/gitlab-org/gitlab/-/issues/381002) from a dialog to a page in GitLab 16.11 [with a flag](../../../administration/feature_flags.md) named `vsa_standalone_settings_page`. Disabled by default.
FLAG:
@ -554,8 +529,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/221205) in GitLab 13.4.
To delete a custom value stream:
1. On the left sidebar, select **Search or go to** and find your project or group.
@ -571,9 +544,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - Chart median line [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/235455) in GitLab 13.4.
> - Totals [replaced](https://gitlab.com/gitlab-org/gitlab/-/issues/262070) with averages in GitLab 13.12.
The **Total time chart** shows the average number of days it takes for development cycles to complete.
The chart shows data for the last 500 workflow items.

View File

@ -10,8 +10,6 @@ DETAILS:
**Tier:** Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/725) in GitLab 12.0.
Configure insights for your projects and groups to explore data such as:
- Issues created and closed during a specified period.

View File

@ -11,8 +11,6 @@ DETAILS:
**Tier:** Free, Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/28996) in GitLab 12.1.
The GitLab Pages integration with Let's Encrypt (LE) allows you
to use LE certificates for your Pages website with custom domains
without the hassle of having to issue and update them yourself;
@ -70,8 +68,6 @@ associated Pages domain. GitLab also renews it automatically.
### Something went wrong while obtaining the Let's Encrypt certificate
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/30146) in GitLab 13.0.
If you get an error **Something went wrong while obtaining the Let's Encrypt certificate**, first, make sure that your pages site is set to "Everyone" in your project's **Settings > General > Visibility**. This allows the Let's Encrypt Servers reach your pages site. Once this is confirmed, you can try obtaining the certificate again by following these steps:
1. On the left sidebar, select **Search or go to** and find your project.

View File

@ -10,9 +10,6 @@ DETAILS:
**Tier:** Free, Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/24) in GitLab Pages 1.25.0 and GitLab 13.4 behind a feature flag, disabled by default.
> - [Became enabled by default](https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/367) in GitLab 13.5.
In GitLab Pages, you can configure rules to forward one URL to another using
[Netlify style](https://docs.netlify.com/routing/redirects/#syntax-for-the-redirects-file)
HTTP redirects.
@ -93,10 +90,6 @@ you can explicitly set your own. The following HTTP codes are supported:
## Redirects
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/458) in GitLab 14.3.
> - Enabled on GitLab.com.
> - Enabled on self-managed in [GitLab 14.6](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/618).
To create a redirect, add a rule that includes a `from` path, a `to` path,
and an [HTTP status code](#http-status-codes):
@ -110,7 +103,6 @@ and an [HTTP status code](#http-status-codes):
## Rewrites
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/458) in GitLab 14.3 [with a flag](../../../administration/pages/index.md#use-environment-variables) named `FF_ENABLE_PLACEHOLDERS`. Disabled by default.
> - [Enabled on GitLab.com and self-managed](https://gitlab.com/gitlab-org/gitlab-pages/-/issues/619) in GitLab 15.2.
Provide a status code of `200` to serve the content of the `to` path when the
@ -156,8 +148,6 @@ to dynamically rewrite the URL path.
## Splats
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/458) in GitLab 14.3.
A rule with an asterisk (`*`) in its `from` path, known as a splat, matches
anything at the start, middle, or end of the requested path. This example
matches anything after `/old/` and rewrites it to `/new/file.html`:
@ -214,8 +204,6 @@ rule like:
## Placeholders
> - [Introduced](https://gitlab.com/gitlab-org/gitlab-pages/-/merge_requests/458) in GitLab 14.3.
Use placeholders in rules to match portions of the requested URL and use these
matches when rewriting or redirecting to a new URL.

View File

@ -10,8 +10,6 @@ DETAILS:
**Tier:** Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/13195) in GitLab 13.5.
If you use GitLab groups to manage multiple projects, some of your documentation
might span multiple groups. You can create group wikis, instead of [project wikis](index.md),
to ensure all group members have the correct access permissions to contribute.
@ -38,8 +36,6 @@ To access a group wiki:
## Export a group wiki
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53247) in GitLab 13.9.
Users with the Owner role in a group can
[import or export a group wiki](../../project/settings/import_export.md#migrate-groups-by-uploading-an-export-file-deprecated) when they
import or export a group.

View File

@ -10,9 +10,6 @@ DETAILS:
**Tier:** Free, Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - Page loading [changed](https://gitlab.com/gitlab-org/gitlab/-/issues/336792) to asynchronous in GitLab 14.9.
> - Page slug encoding method [changed](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/71753) to `ERB::Util.url_encode` in GitLab 14.9.
If you don't want to keep your documentation in your repository, but you want
to keep it in the same project as your code, you can use the wiki GitLab provides
in each GitLab project. Every wiki is a separate Git repository, so you can create
@ -23,8 +20,7 @@ Wiki pages written in Markdown support all [Markdown features](../../markdown.md
and also provide some [wiki-specific behavior](../../markdown.md#wiki-specific-markdown)
for links.
In [GitLab 13.5 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/17673/),
wiki pages display a sidebar, which you [can customize](#customize-sidebar). This
Wiki pages display a sidebar, which you [can customize](#customize-sidebar). This
sidebar contains a partial list of pages in the wiki, displayed as a nested tree,
with sibling pages listed in alphabetical order. To view a list of all pages, select
**View All Pages** in the sidebar:
@ -46,8 +42,6 @@ has [disabled it](#enable-or-disable-a-project-wiki).
## Configure a default branch for your wiki
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/221159) in GitLab 14.1.
The default branch for your wiki repository depends on your version of GitLab:
- *GitLab versions 14.1 and later:* Wikis inherit the
@ -126,8 +120,6 @@ Wiki pages are stored as files in a Git repository, so certain characters have a
### Length restrictions for file and directory names
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/24364) in GitLab 12.8.
Many common file systems have a [limit of 255 bytes](https://en.wikipedia.org/wiki/Comparison_of_file_systems#Limits)
for file and directory names. Git and GitLab both support paths exceeding
those limits. However, if your file system enforces these limits, you cannot check out a
@ -263,8 +255,6 @@ To view the changes for a wiki page:
### View changes between page versions
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15242) in GitLab 13.2.
You can see the changes made in a version of a wiki page, similar to versioned diff file views:
1. On the left sidebar, select **Search or go to** and find your project or group.
@ -277,10 +267,6 @@ You can see the changes made in a version of a wiki page, similar to versioned d
## Track wiki events
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/14902) in GitLab 12.10.
> - Git events were [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/216014) in GitLab 13.0.
> - [Feature flag for Git events was removed](https://gitlab.com/gitlab-org/gitlab/-/issues/258665) in GitLab 13.5.
GitLab tracks wiki creation, deletion, and update events. These events are displayed on these pages:
- [User profile](../../profile/index.md#access-your-user-profile).
@ -292,7 +278,7 @@ Commits to wikis are not counted in [repository analytics](../../analytics/repos
## Customize sidebar
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/23109) in GitLab 13.8, the sidebar can be customized by selecting the **Edit sidebar** button.
You can manually edit the contents of the sidebar navigation.
Prerequisites:
@ -379,9 +365,6 @@ to disable the wiki but toggle it on (in blue).
## Rich text editor
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/5643) in GitLab 14.0.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/345398) switching between editing experiences in GitLab 14.7 [with a flag](../../../administration/feature_flags.md) named `wiki_switch_between_content_editor_raw_markdown`. Enabled by default.
> - Switching between editing experiences generally available in GitLab 14.10. [Feature flag `wiki_switch_between_content_editor_raw_markdown`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83760) removed.
> - [Renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/398152) from content editor to rich text editor in GitLab 16.2.
GitLab provides a WYSIWYG editing experience for GitLab Flavored Markdown in wikis.
@ -431,7 +414,7 @@ For the status of the ongoing development for CommonMark and GitLab Flavored Mar
### Page slug rendering with Apache reverse proxy
In GitLab 14.9 and later, page slugs are now encoded using the
Page slugs are encoded using the
[`ERB::Util.url_encode`](https://www.rubydoc.info/stdlib/erb/ERB%2FUtil.url_encode) method.
If you use an Apache reverse proxy, you can add a `nocanon` argument to the `ProxyPass`
line of your Apache configuration to ensure your page slugs render correctly.

View File

@ -10,7 +10,6 @@ DETAILS:
**Tier:** Free, Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
> - [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/5643) for [wikis](project/wiki/index.md#rich-text-editor) in GitLab 14.0.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/371931) for editing issue descriptions in GitLab 15.5 [with a flag](../administration/feature_flags.md) named `content_editor_on_issues`. Disabled by default.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/382636) for [discussions](discussions/index.md), and creating and editing issues and merge requests in GitLab 15.11 with the same flag.
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/407507) for epics in GitLab 16.1 with the same flag.

View File

@ -23,7 +23,7 @@ WARNING:
This feature is in [Beta](../../policy/experiment-beta-support.md#beta) and subject to change without notice.
For more information, see [epic 9404](https://gitlab.com/groups/gitlab-org/-/epics/9404).
With exact code search, you can use regular expressions and exact strings to search for code in a project.
With exact code search, you can use regular expressions and exact strings to search for code in one or more projects.
You can use backslashes to escape special characters and double quotes to search for exact strings.
Exact code search is powered by [Zoekt](https://github.com/sourcegraph/zoekt)

View File

@ -10,13 +10,15 @@ DETAILS:
**Tier:** Free, Premium, Ultimate
**Offering:** GitLab.com, Self-managed, GitLab Dedicated
GitLab has three types of search: basic search, [advanced search](advanced_search.md), and [exact code search](exact_code_search.md).
GitLab has three types of search: **basic search**, [**advanced search**](advanced_search.md),
and [**exact code search**](exact_code_search.md).
All three types are available for code search. GitLab uses these types in this order of priority:
All three types are available for code search.
GitLab uses these types in this order of priority:
- Exact code search: regular expressions and exact strings are supported.
- Advanced search: when exact code search is not available.
- Basic search: when exact code search and advanced search are not available
- **Exact code search:** regular expressions and exact strings are supported.
- **Advanced search:** when exact code search is not available.
- **Basic search:** when exact code search and advanced search are not available
or when you search against a non-default branch.
This type does not support group or global search.

View File

@ -507,7 +507,7 @@ environment variable is set correctly. Otherwise, your private SSH key might not
Alternative tools include:
- [Cygwin](https://www.cygwin.com)
- [PuttyGen](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
- [PuTTYgen](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) 0.81 and later (earlier versions are [vulnerable to disclosure attacks](https://www.openwall.com/lists/oss-security/2024/04/15/6))
## Overriding SSH settings on the GitLab server

View File

@ -227,7 +227,8 @@ module API
requires :name, type: String, desc: 'The name of the group'
requires :path, type: String, desc: 'The path of the group'
optional :parent_id, type: Integer, desc: 'The parent group id for creating nested group'
optional :organization_id, type: Integer, desc: 'The organization id for the group'
optional :organization_id, type: Integer, default: -> { Current.organization_id },
desc: 'The organization id for the group'
use :optional_params
end

View File

@ -37,16 +37,18 @@ module Gitlab
@source = source
@config = self.logger.instrument(:config_expand, once: true) do
expand_config(config)
end
Gitlab::Ci::YamlProcessor::FeatureFlags.with_actor(project) do
@config = self.logger.instrument(:config_expand, once: true) do
expand_config(config)
end
@root = self.logger.instrument(:config_root, once: true) do
Entry::Root.new(@config, project: project, user: user, logger: self.logger)
end
@root = self.logger.instrument(:config_root, once: true) do
Entry::Root.new(@config, project: project, user: user, logger: self.logger)
end
self.logger.instrument(:config_root_compose, once: true) do
@root.compose!
self.logger.instrument(:config_root_compose, once: true) do
@root.compose!
end
end
rescue *rescue_errors => e
raise Config::ConfigError, e.message

View File

@ -18,14 +18,6 @@ module Gitlab
end
def execute
Gitlab::Ci::YamlProcessor::FeatureFlags.with_actor(project) do
parse_config
end
end
private
def parse_config
if @config_content.blank?
return Result.new(errors: ['Please provide content of .gitlab-ci.yml'])
end
@ -47,6 +39,8 @@ module Gitlab
Result.new(ci_config: @ci_config, errors: [e.message], warnings: @ci_config&.warnings)
end
private
def project
@opts[:project]
end

View File

@ -8,13 +8,10 @@ module Gitlab
#
# DEPRECATIONS = [
# Gitlab::Graphql::DeprecationsBase::NameDeprecation.new(
# old_name: 'CiRunnerUpgradeStatusType', new_name: 'CiRunnerUpgradeStatus', milestone: '15.3'
# old_name: 'RunnerMembershipFilter', new_name: 'CiRunnerMembershipFilter', milestone: '15.4'
# )
# ].freeze
DEPRECATIONS = [
Gitlab::Graphql::DeprecationsBase::NameDeprecation.new(
old_name: 'CiRunnerUpgradeStatusType', new_name: 'CiRunnerUpgradeStatus', milestone: '15.3'
),
Gitlab::Graphql::DeprecationsBase::NameDeprecation.new(
old_name: 'RunnerMembershipFilter', new_name: 'CiRunnerMembershipFilter', milestone: '15.4'
)

View File

@ -1,5 +1,8 @@
# frozen_string_literal: true
# This module is used to define quick actions for issues and merge requests.
#
module Gitlab
module QuickActions
module IssueAndMergeRequestActions
@ -7,7 +10,10 @@ module Gitlab
include Gitlab::QuickActions::Dsl
included do
# Issue, MergeRequest: quick actions definitions
########################################################################
#
# /assign
#
desc { _('Assign') }
explanation do |users|
_('Assigns %{assignee_users_sentence}.') % { assignee_users_sentence: assignee_users_sentence(users) }
@ -42,6 +48,10 @@ module Gitlab
end
end
########################################################################
#
# /unassign
#
desc do
if quick_action_target.allows_multiple_assignees?
_('Remove all or specific assignees')
@ -81,6 +91,10 @@ module Gitlab
end
end
########################################################################
#
# /milestone
#
desc { _('Set milestone') }
explanation do |milestone|
_("Sets the milestone to %{milestone_reference}.") % { milestone_reference: milestone.to_reference(full: true, absolute_path: true) } if milestone
@ -103,6 +117,10 @@ module Gitlab
@updates[:milestone_id] = milestone.id if milestone
end
########################################################################
#
# /remove_milestone
#
desc { _('Remove milestone') }
explanation do
_("Removes %{milestone_reference} milestone.") % { milestone_reference: quick_action_target.milestone.to_reference(full: true, absolute_path: true) }
@ -121,6 +139,10 @@ module Gitlab
@updates[:milestone_id] = nil
end
########################################################################
#
# /copy_metadata
#
desc { _('Copy labels and milestone from other issue or merge request in this project') }
explanation do |source_issuable|
_("Copy labels and milestone from %{source_issuable_reference}.") % { source_issuable_reference: source_issuable.to_reference }
@ -143,6 +165,10 @@ module Gitlab
end
end
########################################################################
#
# /estimate
#
desc { _('Set time estimate') }
explanation do |time_estimate|
next unless time_estimate
@ -173,6 +199,10 @@ module Gitlab
@updates[:time_estimate] = time_estimate
end
########################################################################
#
# /spend, /spent, /spend_time
#
desc { _('Add or subtract spent time') }
explanation do |time_spent, time_spent_date|
spend_time_message(time_spent, time_spent_date, false)
@ -208,6 +238,10 @@ module Gitlab
end
end
########################################################################
#
# /remove_estimate, /remove_time_estimate
#
desc { _('Remove time estimate') }
explanation { _('Removes time estimate.') }
execution_message { _('Removed time estimate.') }
@ -220,6 +254,10 @@ module Gitlab
@updates[:time_estimate] = 0
end
########################################################################
#
# /remove_time_spent
#
desc { _('Remove spent time') }
explanation { _('Removes spent time.') }
execution_message { _('Removed spent time.') }
@ -232,6 +270,10 @@ module Gitlab
@updates[:spend_time] = { duration: :reset, user_id: current_user.id }
end
########################################################################
#
# /lock
#
desc { _("Lock the discussion") }
explanation { _("Locks the discussion.") }
execution_message { _("Locked the discussion.") }
@ -245,6 +287,10 @@ module Gitlab
@updates[:discussion_locked] = true
end
########################################################################
#
# /unlock
#
desc { _("Unlock the discussion") }
explanation { _("Unlocks the discussion.") }
execution_message { _("Unlocked the discussion.") }

View File

@ -38376,6 +38376,9 @@ msgstr ""
msgid "Please try again"
msgstr ""
msgid "Please try again or reach out to %{support_link_start}GitLab Support%{support_link_end}."
msgstr ""
msgid "Please try and refresh the page. If the problem persists please contact support."
msgstr ""
@ -57293,9 +57296,6 @@ msgstr ""
msgid "We found your token in a public project and have automatically revoked it to protect your account."
msgstr ""
msgid "We have found the following errors:"
msgstr ""
msgid "We heard back from your device. You have been authenticated."
msgstr ""
@ -57338,6 +57338,12 @@ msgstr ""
msgid "We're experiencing difficulties and this tab content is currently unavailable."
msgstr ""
msgid "We're sorry, your GitLab Duo Pro trial could not be created because our system did not respond successfully."
msgstr ""
msgid "We're sorry, your trial could not be created because our system did not respond successfully."
msgstr ""
msgid "We've detected some unusual activity"
msgstr ""

View File

@ -50,8 +50,8 @@ class GenerateAsIfFossEnv
{
START_AS_IF_FOSS: 'true',
RUBY_VERSION: ENV['RUBY_VERSION'],
CI_MERGE_REQUEST_PROJECT_PATH: ENV['CI_MERGE_REQUEST_PROJECT_PATH'],
CI_MERGE_REQUEST_IID: ENV['CI_MERGE_REQUEST_IID']
FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH: ENV['CI_MERGE_REQUEST_PROJECT_PATH'],
FIND_CHANGES_MERGE_REQUEST_IID: ENV['CI_MERGE_REQUEST_IID']
}.merge(rspec_variables).merge(other_jobs_variables)
end

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Admin::GroupsController do
RSpec.describe Admin::GroupsController, feature_category: :groups_and_projects do
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, namespace: group) }
let_it_be(:admin) { create(:admin) }
@ -141,6 +141,24 @@ RSpec.describe Admin::GroupsController do
post :create, params: { group: { path: 'test', name: 'test' } }
end
context 'when organization_id is not in params', :with_current_organization do
it 'assigns Current.organization to newly created group' do
post :create, params: { group: { path: 'test', name: 'test' } }
expect(Group.last.organization_id).to eq(Current.organization.id)
end
end
context 'when organization_id is set' do
let_it_be(:organization) { create(:organization) }
it 'assigns specified organization to newly created group' do
post :create, params: { group: { organization_id: organization.id, path: 'test', name: 'test' } }
expect(Group.last.organization_id).to eq(organization.id)
end
end
end
describe 'PUT #update' do

View File

@ -6,7 +6,8 @@ RSpec.describe GroupsController, factory_default: :keep, feature_category: :code
include ExternalAuthorizationServiceHelpers
include AdminModeHelper
let_it_be_with_refind(:group) { create_default(:group, :public) }
let_it_be(:group_organization) { create(:organization) }
let_it_be_with_refind(:group) { create_default(:group, :public, organization: group_organization) }
let_it_be_with_refind(:project) { create(:project, namespace: group) }
let_it_be(:user) { create(:user) }
let_it_be(:admin_with_admin_mode) { create(:admin) }
@ -279,6 +280,7 @@ RSpec.describe GroupsController, factory_default: :keep, feature_category: :code
expect(response).to be_redirect
expect(response.location).to eq("http://test.host/#{group.path}/subgroup")
expect(Group.last.organization.id).to eq(group_organization.id)
end
end
@ -299,9 +301,10 @@ RSpec.describe GroupsController, factory_default: :keep, feature_category: :code
end
end
context 'when creating a top level group' do
context 'when creating a top level group', :with_current_organization do
before do
sign_in(developer)
Current.organization.users << developer
end
context 'and can_create_group is enabled' do
@ -313,9 +316,9 @@ RSpec.describe GroupsController, factory_default: :keep, feature_category: :code
original_group_count = Group.count
post :create, params: { group: { path: 'subgroup' } }
expect(Group.count).to eq(original_group_count + 1)
expect(response).to be_redirect
expect(Group.last.organization.id).to eq(Current.organization.id)
end
end

View File

@ -3,7 +3,7 @@
require 'spec_helper'
RSpec.describe 'Group', feature_category: :groups_and_projects do
let(:user) { create(:user) }
let_it_be(:user) { create(:user) }
before do
sign_in(user)
@ -37,7 +37,7 @@ RSpec.describe 'Group', feature_category: :groups_and_projects do
end
context 'with current organization setting in middleware' do
let_it_be(:another_organization) { create(:organization) }
let_it_be(:another_organization) { create(:organization, users: [user]) }
before_all do
create(:organization, :default)

View File

@ -15,7 +15,7 @@ exports[`packages_list_row renders 1`] = `
class="gl-display-flex gl-flex-direction-column gl-flex-grow-1 gl-mb-3 gl-min-w-0 gl-sm-mb-0"
>
<div
class="gl-align-items-center gl-display-flex gl-font-weight-bold gl-min-h-6 gl-min-w-0 gl-text-body"
class="gl-align-items-center gl-display-flex gl-font-weight-semibold gl-min-h-6 gl-min-w-0 gl-text-body"
>
<div
class="gl-align-items-center gl-display-flex gl-min-w-0 gl-mr-3"
@ -33,7 +33,7 @@ exports[`packages_list_row renders 1`] = `
</div>
</div>
<div
class="gl-align-items-center gl-display-flex gl-flex-grow-1 gl-min-h-6 gl-min-w-0 gl-text-gray-500"
class="gl-align-items-center gl-display-flex gl-flex-grow-1 gl-font-sm gl-min-h-6 gl-min-w-0 gl-text-secondary"
>
<div
class="gl-display-flex"
@ -49,17 +49,17 @@ exports[`packages_list_row renders 1`] = `
</div>
</div>
<div
class="gl-display-flex gl-flex-direction-column gl-flex-shrink-0 gl-justify-content-space-between gl-sm-align-items-flex-end gl-text-gray-500"
class="gl-display-flex gl-flex-direction-column gl-flex-shrink-0 gl-justify-content-space-between gl-sm-align-items-flex-end gl-text-secondary"
>
<div
class="gl-align-items-center gl-display-flex gl-min-h-6 gl-sm-font-weight-bold gl-sm-text-body"
class="gl-align-items-center gl-display-flex gl-min-h-6 gl-sm-font-weight-semibold gl-sm-text-body"
>
<publish-method-stub
packageentity="[object Object]"
/>
</div>
<div
class="gl-align-items-center gl-display-flex gl-min-h-6"
class="gl-align-items-center gl-display-flex gl-font-sm gl-min-h-6"
>
<span>
Created

View File

@ -29,7 +29,7 @@ describe('VersionRow', () => {
const findPackageTags = () => wrapper.findComponent(PackageTags);
const findPublishMethod = () => wrapper.findComponent(PublishMethod);
const findTimeAgoTooltip = () => wrapper.findComponent(TimeAgoTooltip);
const findPackageName = () => wrapper.findComponent(GlTruncate);
const findPackageName = () => wrapper.findByTestId('package-name');
const findWarningIcon = () => wrapper.findComponent(GlIcon);
const findBulkDeleteAction = () => wrapper.findComponent(GlFormCheckbox);
const findDeleteDropdownItem = () => wrapper.findComponent(GlDisclosureDropdownItem);
@ -162,7 +162,7 @@ describe('VersionRow', () => {
});
it('lists the package name', () => {
expect(findPackageName().props('text')).toBe('@gitlab-org/package-15');
expect(findPackageName().text()).toBe('@gitlab-org/package-15');
});
it('does not have a link to navigate to the details page', () => {
@ -194,7 +194,7 @@ describe('VersionRow', () => {
});
it('lists the package name', () => {
expect(findPackageName().props('text')).toBe('@gitlab-org/package-15');
expect(findPackageName().text()).toBe('@gitlab-org/package-15');
});
it('does not have a link to navigate to the details page', () => {

View File

@ -23,24 +23,22 @@ exports[`packages_list_row renders 1`] = `
class="gl-display-flex gl-flex-direction-column gl-flex-grow-1 gl-mb-3 gl-min-w-0 gl-sm-mb-0"
>
<div
class="gl-align-items-center gl-display-flex gl-font-weight-bold gl-min-h-6 gl-min-w-0 gl-text-body"
class="gl-align-items-center gl-display-flex gl-font-weight-semibold gl-min-h-6 gl-min-w-0 gl-text-body"
>
<div
class="gl-align-items-center gl-display-flex gl-min-w-0 gl-mr-3"
class="gl-align-items-center gl-display-flex gl-gap-3 gl-min-w-0 gl-mr-5"
data-testid="package-name"
>
<a
class="gl-min-w-0 gl-text-body"
class="gl-min-w-0 gl-text-body gl-word-break-all"
data-testid="details-link"
>
<gl-truncate-stub
position="end"
text="@gitlab-org/package-15"
/>
@gitlab-org/package-15
</a>
</div>
</div>
<div
class="gl-align-items-center gl-display-flex gl-flex-grow-1 gl-min-h-6 gl-min-w-0 gl-text-gray-500"
class="gl-align-items-center gl-display-flex gl-flex-grow-1 gl-font-sm gl-min-h-6 gl-min-w-0 gl-text-secondary"
>
<div
class="gl-align-items-center gl-display-flex"
@ -62,15 +60,15 @@ exports[`packages_list_row renders 1`] = `
</div>
</div>
<div
class="gl-display-flex gl-flex-direction-column gl-flex-shrink-0 gl-justify-content-space-between gl-sm-align-items-flex-end gl-text-gray-500"
class="gl-display-flex gl-flex-direction-column gl-flex-shrink-0 gl-justify-content-space-between gl-sm-align-items-flex-end gl-text-secondary"
>
<div
class="gl-align-items-center gl-display-flex gl-min-h-6 gl-sm-font-weight-bold gl-sm-text-body"
class="gl-align-items-center gl-display-flex gl-min-h-6 gl-sm-font-weight-semibold gl-sm-text-body"
>
<publish-method-stub />
</div>
<div
class="gl-align-items-center gl-display-flex gl-min-h-6"
class="gl-align-items-center gl-display-flex gl-font-sm gl-min-h-6"
>
<span
data-testid="right-secondary"

View File

@ -46,7 +46,7 @@ describe('packages_list_row', () => {
const findRightSecondary = () => wrapper.findByTestId('right-secondary');
const findListItem = () => wrapper.findComponent(ListItem);
const findBulkDeleteAction = () => wrapper.findComponent(GlFormCheckbox);
const findPackageName = () => wrapper.findComponent(GlTruncate);
const findPackageName = () => wrapper.findByTestId('package-name');
const mountComponent = ({
packageEntity = packageWithoutTags,
@ -88,9 +88,7 @@ describe('packages_list_row', () => {
it('lists the package name', () => {
mountComponent();
expect(findPackageName().props()).toMatchObject({
text: '@gitlab-org/package-15',
});
expect(findPackageName().text()).toBe('@gitlab-org/package-15');
});
describe('tags', () => {
@ -168,9 +166,7 @@ describe('packages_list_row', () => {
});
it('lists the package name', () => {
expect(findPackageName().props()).toMatchObject({
text: '@gitlab-org/package-15',
});
expect(findPackageName().text()).toBe('@gitlab-org/package-15');
});
it('does not have a link to navigate to the details page', () => {

View File

@ -103,7 +103,7 @@ RSpec.describe Projects::Ml::ExperimentsHelper, feature_category: :mlops do
end
describe '#experiment_as_data' do
subject { Gitlab::Json.parse(helper.experiment_as_data(experiment)) }
subject { Gitlab::Json.parse(helper.experiment_as_data(project, experiment)) }
it do
is_expected.to eq({

View File

@ -3,11 +3,11 @@
require 'spec_helper'
RSpec.describe Current, feature_category: :cell do
describe '#organization=' do
after do
described_class.reset
end
after do
described_class.reset
end
describe '.organization=' do
context 'when organization has not been set yet' do
where(:value) do
[nil, '_value_']
@ -57,4 +57,27 @@ RSpec.describe Current, feature_category: :cell do
end
end
end
describe '.organization_id' do
let_it_be(:current_organization) { create(:organization) }
subject(:organization_id) { described_class.organization_id }
context 'when organization is set' do
before do
described_class.organization = current_organization
end
it 'returns the id of the organization' do
expect(organization_id).not_to be_nil
expect(organization_id).to eq(current_organization.id)
end
end
context 'when organization is not set' do
it 'returns nil' do
expect(organization_id).to be_nil
end
end
end
end

View File

@ -2152,28 +2152,45 @@ RSpec.describe API::Groups, feature_category: :groups_and_projects do
end
context 'when group is within a provided organization' do
let_it_be(:current_organization) { create(:organization, name: "Current Organization") }
let_it_be(:organization) { create(:organization) }
before do
allow(Current).to receive(:organization).and_return(current_organization)
end
context 'when user is an organization user' do
before_all do
create(:organization_user, user: user3, organization: current_organization)
create(:organization_user, user: user3, organization: organization)
end
it 'creates group within organization' do
post api('/groups', user3), params: attributes_for_group_api(organization_id: organization.id)
context 'and organization_id is not passed' do
it 'creates organization using current organization' do
post api('/groups', user3), params: attributes_for_group_api
expect(response).to have_gitlab_http_status(:created)
expect(json_response['organization_id']).to eq(organization.id)
expect(response).to have_gitlab_http_status(:created)
expect(json_response['organization_id']).to eq(Current.organization.id)
end
end
context 'when parent_group is not part of the organization' do
it 'does not create the group with not_found' do
post(
api('/groups', user3),
params: attributes_for_group_api(parent_id: group2.id, organization_id: organization.id)
)
context 'and organization_id is passed' do
it 'creates group within organization' do
post api('/groups', user3), params: attributes_for_group_api(organization_id: organization.id)
expect(response).to have_gitlab_http_status(:not_found)
expect(response).to have_gitlab_http_status(:created)
expect(json_response['organization_id']).to eq(organization.id)
end
context 'when parent_group is not part of the organization' do
it 'does not create the group with not_found' do
post(
api('/groups', user3),
params: attributes_for_group_api(parent_id: group2.id, organization_id: organization.id)
)
expect(response).to have_gitlab_http_status(:not_found)
end
end
end
end

View File

@ -201,8 +201,8 @@ RSpec.describe Projects::Ml::ExperimentsController, feature_category: :mlops do
end
end
it 'does not perform N+1 sql queries', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/444689' do
control_count = ActiveRecord::QueryRecorder.new(skip_cached: false) { show_experiment }
it 'does not perform N+1 sql queries' do
control_count = ActiveRecord::QueryRecorder.new(skip_cached: true) { show_experiment }
create_list(:ml_candidates, 2, :with_metrics_and_params, experiment: experiment)

View File

@ -14,7 +14,10 @@ RSpec.describe GenerateAsIfFossEnv, feature_category: :tooling do
subject(:generate) { described_class.new }
before do
stub_env(RUBY_VERSION: '3.1')
stub_env(
'RUBY_VERSION' => '3.1',
'CI_MERGE_REQUEST_PROJECT_PATH' => 'fake-mr-project-path',
'CI_MERGE_REQUEST_IID' => 'fake-mr-iid')
end
shared_context 'when there are all jobs' do
@ -68,8 +71,8 @@ RSpec.describe GenerateAsIfFossEnv, feature_category: :tooling do
expect(generate.variables).to eq({
START_AS_IF_FOSS: 'true',
RUBY_VERSION: ENV['RUBY_VERSION'],
CI_MERGE_REQUEST_PROJECT_PATH: ENV['CI_MERGE_REQUEST_PROJECT_PATH'],
CI_MERGE_REQUEST_IID: ENV['CI_MERGE_REQUEST_IID'],
FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH: ENV['CI_MERGE_REQUEST_PROJECT_PATH'],
FIND_CHANGES_MERGE_REQUEST_IID: ENV['CI_MERGE_REQUEST_IID'],
ENABLE_RSPEC: 'true',
ENABLE_RSPEC_FAST_SPEC_HELPER: 'true',
ENABLE_RSPEC_UNIT: 'true',
@ -109,8 +112,8 @@ RSpec.describe GenerateAsIfFossEnv, feature_category: :tooling do
expect { generate.display }.to output(<<~ENV).to_stdout
START_AS_IF_FOSS=true
RUBY_VERSION=#{ENV['RUBY_VERSION']}
CI_MERGE_REQUEST_PROJECT_PATH=#{ENV['CI_MERGE_REQUEST_PROJECT_PATH']}
CI_MERGE_REQUEST_IID=#{ENV['CI_MERGE_REQUEST_IID']}
FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH=#{ENV['CI_MERGE_REQUEST_PROJECT_PATH']}
FIND_CHANGES_MERGE_REQUEST_IID=#{ENV['CI_MERGE_REQUEST_IID']}
ENABLE_RSPEC=true
ENABLE_RSPEC_FAST_SPEC_HELPER=true
ENABLE_RSPEC_UNIT=true

View File

@ -244,8 +244,6 @@ RSpec.describe Groups::CreateService, '#execute', feature_category: :groups_and_
end
context 'when organization is not set by params', :with_current_organization do
let_it_be(:default_organization) { create(:organization, :default) }
context 'and the parent of the group has an organization' do
let_it_be(:parent_group) { create(:group, organization: other_organization) }
@ -263,6 +261,15 @@ RSpec.describe Groups::CreateService, '#execute', feature_category: :groups_and_
end
end
context 'when organization_id is set to nil' do
let_it_be(:default_organization) { create(:organization, :default) }
let(:extra_params) { { organization_id: nil } }
it 'creates group in default organization' do
expect(created_group.organization).to eq(default_organization)
end
end
context 'when organization is not set at all' do
it 'creates group without an organization' do
expect(created_group.organization).to eq(nil)

View File

@ -27,6 +27,9 @@ RSpec.describe Tooling::FindChanges, feature_category: :tooling do
let(:gitlab_client) { double('GitLab') } # rubocop:disable RSpec/VerifiedDoubles
let(:file_filter) { ->(_) { true } }
let(:only_new_paths) { false }
let(:find_changes_api_token) { nil }
let(:find_changes_mr_project_path) { nil }
let(:find_changes_mr_iid) { nil }
around do |example|
self.changed_files_file = Tempfile.new('changed_files_file')
@ -52,7 +55,10 @@ RSpec.describe Tooling::FindChanges, feature_category: :tooling do
'CI_API_V4_URL' => 'gitlab_api_url',
'CI_MERGE_REQUEST_IID' => '1234',
'CI_MERGE_REQUEST_PROJECT_PATH' => 'dummy-project',
'PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE' => 'dummy-token'
'PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE' => 'dummy-token',
'FIND_CHANGES_API_TOKEN' => find_changes_api_token,
'FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH' => find_changes_mr_project_path,
'FIND_CHANGES_MERGE_REQUEST_IID' => find_changes_mr_iid
)
end
@ -66,6 +72,56 @@ RSpec.describe Tooling::FindChanges, feature_category: :tooling do
)
end
end
describe '#gitlab_token' do
it 'sets to PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE' do
expect(instance.__send__(:gitlab_token)).to eq('dummy-token')
end
context 'when FIND_CHANGES_API_TOKEN is set' do
let(:find_changes_api_token) { 'mummy-token' }
it 'sets to PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE' do
expect(instance.__send__(:gitlab_token)).to eq('dummy-token')
end
context 'when FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH is set' do
let(:find_changes_mr_project_path) { 'mummy-project' }
it 'sets to PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE' do
expect(instance.__send__(:gitlab_token)).to eq('mummy-token')
end
end
end
end
describe '#mr_project_path' do
it 'sets to CI_MERGE_REQUEST_PROJECT_PATH' do
expect(instance.__send__(:mr_project_path)).to eq('dummy-project')
end
context 'when FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH is set' do
let(:find_changes_mr_project_path) { 'mummy-project' }
it 'sets to FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH' do
expect(instance.__send__(:mr_project_path)).to eq('mummy-project')
end
end
end
describe '#mr_iid' do
it 'sets to CI_MERGE_REQUEST_PROJECT_PATH' do
expect(instance.__send__(:mr_iid)).to eq('1234')
end
context 'when FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH is set' do
let(:find_changes_mr_iid) { '1357' }
it 'sets to FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH' do
expect(instance.__send__(:mr_iid)).to eq('1357')
end
end
end
end
describe '#execute' do

View File

@ -22,10 +22,24 @@ module Tooling
raise ArgumentError, ':from can only be :api or :changed_files' unless
%i[api changed_files].include?(from)
@gitlab_token = ENV['PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE'] || ''
@gitlab_endpoint = ENV['CI_API_V4_URL']
@mr_project_path = ENV['CI_MERGE_REQUEST_PROJECT_PATH']
@mr_iid = ENV['CI_MERGE_REQUEST_IID']
@gitlab_endpoint = ENV['CI_API_V4_URL']
@gitlab_token =
if ENV['FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH']
# We set FIND_CHANGES_API_TOKEN in the security FOSS project so it
# can request the security EE project to retrieve the changed files.
ENV['FIND_CHANGES_API_TOKEN']
else
ENV['PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE']
end || ''
@mr_project_path =
ENV['FIND_CHANGES_MERGE_REQUEST_PROJECT_PATH'] ||
ENV['CI_MERGE_REQUEST_PROJECT_PATH']
@mr_iid =
ENV['FIND_CHANGES_MERGE_REQUEST_IID'] ||
ENV['CI_MERGE_REQUEST_IID']
@changed_files_pathname = changed_files_pathname
@predictive_tests_pathname = predictive_tests_pathname
@frontend_fixtures_mapping_pathname = frontend_fixtures_mapping_pathname