Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
90f2c67875
commit
a9e651e01a
|
|
@ -136,15 +136,16 @@ detect-tests:
|
|||
stage: prepare
|
||||
variables:
|
||||
RSPEC_TESTS_MAPPING_ENABLED: "true"
|
||||
MAPPING_ARCHIVE: $RSPEC_PACKED_TESTS_MAPPING_PATH
|
||||
before_script:
|
||||
- apt update && apt install -y curl
|
||||
script:
|
||||
- source ./scripts/utils.sh
|
||||
- source ./scripts/rspec_helpers.sh
|
||||
- install_gitlab_gem
|
||||
- install_tff_gem
|
||||
- retrieve_tests_mapping
|
||||
- retrieve_tests_mapping "$MAPPING_ARCHIVE"
|
||||
- retrieve_frontend_fixtures_mapping
|
||||
script:
|
||||
- |
|
||||
# $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
|
||||
|
|
@ -182,6 +183,14 @@ detect-tests:
|
|||
- ${RSPEC_MATCHING_TESTS_PATH}
|
||||
- ${RSPEC_VIEWS_INCLUDING_PARTIALS_PATH}
|
||||
|
||||
# This job is used for evaluating rspec test mappings created based on coverage strategy
|
||||
# See: https://gitlab.com/groups/gitlab-org/quality/analytics/-/epics/13
|
||||
detect-tests-alt:
|
||||
extends: detect-tests
|
||||
variables:
|
||||
MAPPING_ARCHIVE: $RSPEC_PACKED_TESTS_MAPPING_ALT_PATH
|
||||
PREDICTIVE_TESTS_STRATEGY: coverage
|
||||
|
||||
detect-previous-failed-tests:
|
||||
extends:
|
||||
- detect-tests
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
64e5702b727ea069f6f987d33cf87264a761e997
|
||||
9a811d8cd0a428c6a2a6c7037d0792855d1fd1bc
|
||||
|
|
|
|||
|
|
@ -5,6 +5,13 @@ export default {
|
|||
components: {
|
||||
GlBreadcrumb,
|
||||
},
|
||||
props: {
|
||||
staticBreadcrumbs: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: () => ({ items: [] }),
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
rootRoute() {
|
||||
const rootName = this.$route.meta.environmentName;
|
||||
|
|
@ -30,7 +37,7 @@ export default {
|
|||
if (!this.isLoaded) {
|
||||
return [];
|
||||
}
|
||||
const breadCrumbs = [this.rootRoute];
|
||||
const breadCrumbs = [...this.staticBreadcrumbs.items, this.rootRoute];
|
||||
|
||||
if (!this.isRootRoute) {
|
||||
breadCrumbs.push(this.logsRoute);
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ export const initPage = async () => {
|
|||
},
|
||||
});
|
||||
|
||||
injectVueAppBreadcrumbs(router, EnvironmentBreadcrumbs);
|
||||
injectVueAppBreadcrumbs(router, EnvironmentBreadcrumbs, null, {}, { singleNavOptIn: true });
|
||||
|
||||
return new Vue({
|
||||
el,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,10 @@ module Packages
|
|||
INVALID_METADATA_ERROR_SYMBOL_MESSAGE = 'package name, version and/or description not found in metadata'
|
||||
MISSING_MATCHING_PACKAGE_ERROR_MESSAGE = 'symbol package is invalid, matching package does not exist'
|
||||
|
||||
InvalidMetadataError = ZipError = DuplicatePackageError = ProtectedPackageError = Class.new(StandardError)
|
||||
DuplicatePackageError = Class.new(StandardError)
|
||||
InvalidMetadataError = Class.new(StandardError)
|
||||
ProtectedPackageError = Class.new(StandardError)
|
||||
ZipError = Class.new(StandardError)
|
||||
|
||||
def initialize(package_file, package_zip_file)
|
||||
@package_file = package_file
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
name: virtual_registry_maven
|
||||
feature_issue_url: https://gitlab.com/groups/gitlab-org/-/epics/14137
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/160891
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/474863
|
||||
milestone: '17.3'
|
||||
group: group::package registry
|
||||
type: wip
|
||||
default_enabled: false
|
||||
|
|
@ -5,4 +5,4 @@ feature_category: team_planning
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183903
|
||||
milestone: '17.11'
|
||||
queued_migration_version: 20250317222744
|
||||
finalized_by: # version of the migration that finalized this BBM
|
||||
finalized_by: 20250519120927
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ feature_categories:
|
|||
description: The diff of the change when an edit is made to an Issue, MR or Epic description
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/17147
|
||||
milestone: '12.4'
|
||||
gitlab_schema: gitlab_main
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/514600
|
||||
gitlab_schema: gitlab_main_cell
|
||||
sharding_key:
|
||||
namespace_id: namespaces
|
||||
table_size: over_limit
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddStatusWidgetDefinitionToIssues < Gitlab::Database::Migration[2.3]
|
||||
include Gitlab::Database::MigrationHelpers::WorkItems::Widgets
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
disable_ddl_transaction!
|
||||
milestone '18.1'
|
||||
|
||||
WORK_ITEM_TYPE_ENUM_VALUES = [0] # issues
|
||||
WIDGETS = [
|
||||
{
|
||||
name: 'Status',
|
||||
widget_type: 26
|
||||
}
|
||||
]
|
||||
|
||||
def up
|
||||
add_widget_definitions(type_enum_values: WORK_ITEM_TYPE_ENUM_VALUES, widgets: WIDGETS)
|
||||
end
|
||||
|
||||
def down
|
||||
remove_widget_definitions(type_enum_values: WORK_ITEM_TYPE_ENUM_VALUES, widgets: WIDGETS)
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class FinalizeBackfillDescriptionVersionsNamespace < Gitlab::Database::Migration[2.3]
|
||||
MIGRATION = "BackfillDescriptionVersionsNamespace"
|
||||
|
||||
disable_ddl_transaction!
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
milestone '18.1'
|
||||
|
||||
def up
|
||||
ensure_batched_background_migration_is_finished(
|
||||
job_class_name: MIGRATION,
|
||||
table_name: :description_versions,
|
||||
column_name: :id,
|
||||
job_arguments: [],
|
||||
finalize: true
|
||||
)
|
||||
end
|
||||
|
||||
def down
|
||||
# no-op
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddDescriptionVersionsNamespaceIdIndex < Gitlab::Database::Migration[2.3]
|
||||
INDEX_NAME = 'idx_description_versions_on_namespace_id'
|
||||
|
||||
disable_ddl_transaction!
|
||||
milestone '18.1'
|
||||
|
||||
def up
|
||||
add_concurrent_index :description_versions, :namespace_id, name: INDEX_NAME # rubocop:disable Migration/PreventIndexCreation -- Sharding keys are an exception
|
||||
end
|
||||
|
||||
def down
|
||||
remove_concurrent_index_by_name :description_versions, name: INDEX_NAME
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class ValidateDescriptionVersionsParentNotNullConstraint < Gitlab::Database::Migration[2.3]
|
||||
CONSTRAINT_NAME = 'check_76c1eb7122'
|
||||
|
||||
milestone '18.1'
|
||||
|
||||
def up
|
||||
validate_multi_column_not_null_constraint :description_versions,
|
||||
:issue_id,
|
||||
:merge_request_id,
|
||||
:epic_id,
|
||||
constraint_name: CONSTRAINT_NAME
|
||||
end
|
||||
|
||||
def down
|
||||
# no-op
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddDescriptionVersionsNamespaceIdForeignKey < Gitlab::Database::Migration[2.3]
|
||||
disable_ddl_transaction!
|
||||
milestone '18.1'
|
||||
|
||||
def up
|
||||
add_concurrent_foreign_key :description_versions, :namespaces, column: :namespace_id, reverse_lock_order: true
|
||||
end
|
||||
|
||||
def down
|
||||
with_lock_retries do
|
||||
remove_foreign_key :description_versions, column: :namespace_id
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
3c906a2d6678e67796db3f3c747c6292918afb0bf50b2b1e870a8662563221cc
|
||||
|
|
@ -0,0 +1 @@
|
|||
0b2704a6ed7771436a1a7162b4b18c3919d289c1ca8e301bf054a86e5079615f
|
||||
|
|
@ -0,0 +1 @@
|
|||
8f46177086b14092eee689a654b21f4e3a6e335a5471319910a54a95cbd52efd
|
||||
|
|
@ -0,0 +1 @@
|
|||
d738c6e86e47f82690f0eff2c5e396ed823cdee50b54459c31169b6be0afb96a
|
||||
|
|
@ -0,0 +1 @@
|
|||
edd0af1ca8b6140920ae6005a640e2df1ca304a7cefd29e6487a98b566a47740
|
||||
|
|
@ -13545,7 +13545,8 @@ CREATE TABLE description_versions (
|
|||
epic_id bigint,
|
||||
description text,
|
||||
deleted_at timestamp with time zone,
|
||||
namespace_id bigint NOT NULL
|
||||
namespace_id bigint NOT NULL,
|
||||
CONSTRAINT check_76c1eb7122 CHECK ((num_nonnulls(epic_id, issue_id, merge_request_id) = 1))
|
||||
);
|
||||
|
||||
CREATE SEQUENCE description_versions_id_seq
|
||||
|
|
@ -29107,9 +29108,6 @@ ALTER TABLE ONLY project_type_ci_runners
|
|||
ALTER TABLE lists
|
||||
ADD CONSTRAINT check_6dadb82d36 CHECK ((num_nonnulls(group_id, project_id) = 1)) NOT VALID;
|
||||
|
||||
ALTER TABLE description_versions
|
||||
ADD CONSTRAINT check_76c1eb7122 CHECK ((num_nonnulls(epic_id, issue_id, merge_request_id) = 1)) NOT VALID;
|
||||
|
||||
ALTER TABLE ONLY group_type_ci_runners
|
||||
ADD CONSTRAINT check_81b90172a6 UNIQUE (id);
|
||||
|
||||
|
|
@ -33139,6 +33137,8 @@ CREATE INDEX idx_dep_proxy_pkgs_settings_enabled_maven_on_project_id ON dependen
|
|||
|
||||
CREATE INDEX idx_deployment_clusters_on_cluster_id_and_kubernetes_namespace ON deployment_clusters USING btree (cluster_id, kubernetes_namespace);
|
||||
|
||||
CREATE INDEX idx_description_versions_on_namespace_id ON description_versions USING btree (namespace_id);
|
||||
|
||||
CREATE INDEX idx_devops_adoption_segments_namespace_end_time ON analytics_devops_adoption_snapshots USING btree (namespace_id, end_time);
|
||||
|
||||
CREATE INDEX idx_devops_adoption_segments_namespace_recorded_at ON analytics_devops_adoption_snapshots USING btree (namespace_id, recorded_at);
|
||||
|
|
@ -43267,6 +43267,9 @@ ALTER TABLE ONLY packages_conan_file_metadata
|
|||
ALTER TABLE ONLY catalog_resource_versions
|
||||
ADD CONSTRAINT fk_b670eae96b FOREIGN KEY (catalog_resource_id) REFERENCES catalog_resources(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY description_versions
|
||||
ADD CONSTRAINT fk_b688e93ee1 FOREIGN KEY (namespace_id) REFERENCES namespaces(id) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE ONLY bulk_import_entities
|
||||
ADD CONSTRAINT fk_b69fa2b2df FOREIGN KEY (bulk_import_id) REFERENCES bulk_imports(id) ON DELETE CASCADE;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
stage: AI-powered
|
||||
group: Custom Models
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
description: Get started with GitLab Duo Self-Hosted.
|
||||
description: Host your own AI gateway and language models.
|
||||
title: GitLab Duo Self-Hosted
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,8 @@ Use the following endpoints to create and manage Maven virtual registries.
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161615) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -75,6 +77,8 @@ Example response:
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161615) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -119,6 +123,8 @@ Example response:
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161615) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -160,6 +166,8 @@ Example response:
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/189070) in GitLab 18.0 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -192,6 +200,8 @@ If successful, returns a [`200 OK`](rest/troubleshooting.md#status-codes) status
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/161615) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -224,6 +234,8 @@ Use the following endpoints to configure and manage upstream Maven registries.
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162019) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -274,6 +286,8 @@ Example response:
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162019) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -331,6 +345,8 @@ Example response:
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162019) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -375,6 +391,8 @@ Example response:
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162019) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -418,6 +436,8 @@ If successful, returns a [`200 OK`](rest/troubleshooting.md#status-codes) status
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/186890) in GitLab 18.0 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -448,6 +468,8 @@ If successful, returns a [`200 OK`](rest/troubleshooting.md#status-codes) status
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162019) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -480,6 +502,8 @@ Use the following endpoints to manage cache entries for a Maven virtual registry
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162614) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -532,6 +556,8 @@ Example response:
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/162614) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -578,6 +604,8 @@ see [Maven package registry](../user/packages/maven_repository/_index.md). Undoc
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/160891) in GitLab 17.3 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -615,6 +643,8 @@ the following response headers:
|
|||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/163641) in GitLab 17.4 [with a flag](../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ Follow these guidelines when you document GitLab Duo features.
|
|||
|
||||
When documenting a GitLab Duo experiment:
|
||||
|
||||
- On the [top-level GitLab Duo page](../../user/gitlab_duo/_index.md#summary-of-gitlab-duo-features):
|
||||
- On the [top-level GitLab Duo page](../../user/gitlab_duo/feature_summary.md):
|
||||
- Add a row to the table.
|
||||
- Add the feature to an area at the top of the page, near other features that are available
|
||||
during a similar stage of the software development lifecycle.
|
||||
|
|
@ -80,7 +80,7 @@ When documenting a GitLab Duo experiment:
|
|||
|
||||
When a GitLab Duo experiment moves to beta:
|
||||
|
||||
- On the [top-level GitLab Duo page](../../user/gitlab_duo/_index.md#summary-of-gitlab-duo-features),
|
||||
- On the [top-level GitLab Duo page](../../user/gitlab_duo/feature_summary.md),
|
||||
update the row in the table.
|
||||
- Make sure you update the history and status values, including any
|
||||
[add-on information](styleguide/availability_details.md#add-ons).
|
||||
|
|
@ -92,7 +92,7 @@ When a GitLab Duo experiment moves to beta:
|
|||
|
||||
When a GitLab Duo feature becomes generally available:
|
||||
|
||||
- On the [top-level GitLab Duo page](../../user/gitlab_duo/_index.md#summary-of-gitlab-duo-features),
|
||||
- On the [top-level GitLab Duo page](../../user/gitlab_duo/feature_summary.md),
|
||||
update the row in the table.
|
||||
- Make sure you update the history and status values, including any
|
||||
[add-on information](styleguide/availability_details.md#add-ons).
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ and gain deeper insights across your projects.
|
|||
Three add-ons are available: GitLab Duo Core, Pro, and Enterprise.
|
||||
|
||||
Each add-on provides access to
|
||||
[a set of GitLab Duo features](../user/gitlab_duo/_index.md#summary-of-gitlab-duo-features).
|
||||
[a set of GitLab Duo features](../user/gitlab_duo/feature_summary.md).
|
||||
|
||||
## GitLab Duo Core
|
||||
|
||||
|
|
|
|||
|
|
@ -65,6 +65,8 @@ GitLab can help you with a vulnerability by using a large language model to:
|
|||
- Help developers and security analysts to understand the vulnerability, how it could be exploited, and how to fix it.
|
||||
- Provide a suggested mitigation.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=MMVFvGrmMzw&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW)
|
||||
|
||||
### Vulnerability Explanation
|
||||
|
||||
Explain a vulnerability with GitLab Duo Vulnerability Explanation. Use the explanation to better
|
||||
|
|
@ -137,6 +139,8 @@ You should always review the proposed change before merging it. When reviewing,
|
|||
- Your application's existing functionality is preserved.
|
||||
- The vulnerability is resolved in accordance with your organization's standards.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=VJmsw_C125E&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW)
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- You must have the GitLab Ultimate subscription tier and GitLab Duo Enterprise.
|
||||
|
|
|
|||
|
|
@ -386,6 +386,9 @@ such as:
|
|||
|
||||
Generate a summary of discussions on an issue.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=IcdxLfTIUgc)
|
||||
<!-- Video published on 2024-03-28 -->
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- You must have permission to view the issue.
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ can check the health of the installation.
|
|||
|
||||
For more information, see:
|
||||
|
||||
- [GitLab Duo features by add-on](../gitlab_duo/_index.md#summary-of-gitlab-duo-features).
|
||||
- [GitLab Duo features by add-on](../gitlab_duo/feature_summary.md).
|
||||
- [How to purchase an add-on](../../subscriptions/subscription-add-ons.md).
|
||||
- [GitLab Duo Self-Hosted](../../administration/gitlab_duo_self_hosted/_index.md).
|
||||
- [Health check details](../gitlab_duo/setup.md#run-a-health-check-for-gitlab-duo).
|
||||
|
|
|
|||
|
|
@ -20,140 +20,10 @@ These features aim to help increase velocity and solve key pain points across th
|
|||
GitLab Duo features are available in [IDE extensions](../../editor_extensions/_index.md) and the GitLab UI.
|
||||
Some features are also available as part of [GitLab Duo Chat](../gitlab_duo_chat_examples.md).
|
||||
|
||||
- [Get started with GitLab Duo](../get_started/getting_started_gitlab_duo.md).
|
||||
- [View a walkthrough of GitLab Duo Enterprise features](https://gitlab.navattic.com/duo-enterprise).
|
||||
{{< walkthrough data="duo-walkthrough" >}}
|
||||
|
||||
## GitLab Duo language models
|
||||
- [View list of all GitLab Duo features](feature_summary.md)
|
||||
- [Set up GitLab Duo on Self-Managed GitLab](setup.md)
|
||||
- [Use your own models with GitLab Duo Self-Hosted](../../administration/gitlab_duo_self_hosted/_index.md)
|
||||
|
||||
The language models that are the source for GitLab Duo depend on where you're using it.
|
||||
|
||||
- On GitLab.com: GitLab hosts the models and connects to them through the cloud-based AI gateway.
|
||||
- On GitLab Self-Managed, two options exist:
|
||||
|
||||
- **GitLab** can [host the models and the cloud-based AI gateway](setup.md).
|
||||
- **Your organization** can [use GitLab Duo Self-Hosted](../../administration/gitlab_duo_self_hosted/_index.md),
|
||||
which means you host the AI gateway and language models. You can use GitLab AI vendor models
|
||||
or the other supported language models.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://youtu.be/TQoO3sFnb28?si=w_gFAYLYIzPEbhEl)
|
||||
<!-- Video published on 2025-02-20 -->
|
||||
|
||||
## Working across the entire software development lifecycle
|
||||
|
||||
To improve your workflow across the entire software development lifecycle, try these features:
|
||||
|
||||
- [GitLab Duo Chat](../gitlab_duo_chat/_index.md): Write and understand code, get up to speed on the status of projects,
|
||||
and learn about GitLab by asking your questions in a chat window.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=ZQBAuf-CTAY)
|
||||
<!-- Video published on 2024-04-18 -->
|
||||
- [GitLab Duo Workflow](../duo_workflow/_index.md): Automate tasks and help increase productivity in your development workflow.
|
||||
- [AI Impact Dashboard](../analytics/ai_impact_analytics.md): Measure the AI effectiveness and impact on SDLC metrics.
|
||||
|
||||
## Planning work
|
||||
|
||||
To improve your workflow while planning work, try these features:
|
||||
|
||||
- [Issue Description Generation](../project/issues/managing_issues.md#populate-an-issue-with-issue-description-generation): Generate a more in-depth issue description based on a short summary.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=-BWBQat7p5M)
|
||||
<!-- Video published on 2024-12-18 -->
|
||||
- [Discussion Summary](../discussions/_index.md#summarize-issue-discussions-with-duo-chat): Summarize lengthy conversations in an issue.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=IcdxLfTIUgc)
|
||||
<!-- Video published on 2024-03-28 -->
|
||||
|
||||
## Authoring code
|
||||
|
||||
To improve your workflow while authoring code, try these features:
|
||||
|
||||
- [Code Suggestions](../project/repository/code_suggestions/_index.md): Generate code and show suggestions as you type.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://youtu.be/ds7SG1wgcVM)
|
||||
- Code Explanation: Have code explained. View docs for explaining code in:
|
||||
|
||||
- [The IDE](../gitlab_duo_chat/examples.md#explain-selected-code).
|
||||
- [A file](../project/repository/code_explain.md).
|
||||
- [A merge request](../project/merge_requests/changes.md#explain-code-in-a-merge-request).
|
||||
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://youtu.be/1izKaLmmaCA?si=O2HDokLLujRro_3O)
|
||||
<!-- Video published on 2023-11-18 -->
|
||||
- [Test Generation](../gitlab_duo_chat/examples.md#write-tests-in-the-ide): Test your code by generating tests.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=zWhwuixUkYU)
|
||||
- [Refactor Code](../gitlab_duo_chat/examples.md#refactor-code-in-the-ide): Improve or refactor the selected code.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://youtu.be/oxziu7_mWVk?si=fS2JUO-8doARS169)
|
||||
- [Fix Code](../gitlab_duo_chat/examples.md#fix-code-in-the-ide): Fix quality problems, like bugs or typos, in the selected code.
|
||||
- [GitLab Duo for the CLI](../../editor_extensions/gitlab_cli/_index.md#gitlab-duo-for-the-cli): Discover or recall `git` commands.
|
||||
|
||||
## Reviewing code
|
||||
|
||||
To improve your workflow while reviewing code in merge requests, try these features:
|
||||
|
||||
- [Merge Request Summary](../project/merge_requests/duo_in_merge_requests.md#generate-a-description-by-summarizing-code-changes): Generate a description based on the code changes.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=CKjkVsfyFd8&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW)
|
||||
- [Code Review](../project/merge_requests/duo_in_merge_requests.md#have-gitlab-duo-review-your-code): Review proposed code changes.
|
||||
- [Code Review Summary](../project/merge_requests/duo_in_merge_requests.md#summarize-a-code-review): Summarize all the comments in a review.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=Bx6Zajyuy9k)
|
||||
- [Merge Commit Message Generation](../project/merge_requests/duo_in_merge_requests.md#generate-a-merge-commit-message): Generate commit messages.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=fUHPNT4uByQ)
|
||||
|
||||
## Testing and deploying code
|
||||
|
||||
To improve your testing and deployment workflow, try these features:
|
||||
|
||||
- [Root Cause Analysis](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis): Research the root cause for a CI/CD job failure by analyzing the logs.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=MLjhVbMjFAY&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW)
|
||||
|
||||
## Securing code
|
||||
|
||||
To improve your security, try these features:
|
||||
|
||||
- [Vulnerability Explanation](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability): Learn more about vulnerabilities, how they can be exploited, and how to fix them.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=MMVFvGrmMzw&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW)
|
||||
- [Vulnerability Resolution](../application_security/vulnerabilities/_index.md#vulnerability-resolution): Generate a merge request that addresses a vulnerability.
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=VJmsw_C125E&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW)
|
||||
|
||||
## Summary of GitLab Duo features
|
||||
|
||||
The following features are generally available on GitLab.com, GitLab Self-Managed, and GitLab Dedicated.
|
||||
|
||||
They require a Premium or Ultimate subscription and one of the available add-ons.
|
||||
|
||||
| Feature | GitLab Duo Core | GitLab Duo Pro | GitLab Duo Enterprise |
|
||||
|---------|----------|---------|----------------|
|
||||
| [Code Suggestions](../project/repository/code_suggestions/_index.md) | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [GitLab Duo Chat](../gitlab_duo_chat/_index.md) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Code Explanation](../gitlab_duo_chat/examples.md#explain-selected-code) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Refactor Code](../gitlab_duo_chat/examples.md#refactor-code-in-the-ide) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Fix Code](../gitlab_duo_chat/examples.md#fix-code-in-the-ide) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Test Generation](../gitlab_duo_chat/examples.md#write-tests-in-the-ide) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [GitLab Duo Chat](../gitlab_duo_chat/_index.md) in GitLab UI | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Code Explanation](../project/repository/code_explain.md) in GitLab UI | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Discussion Summary](../discussions/_index.md#summarize-issue-discussions-with-duo-chat) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [GitLab Duo for the CLI](../../editor_extensions/gitlab_cli/_index.md#gitlab-duo-for-the-cli) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Merge Commit Message Generation](../project/merge_requests/duo_in_merge_requests.md#generate-a-merge-commit-message) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Root Cause Analysis](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Vulnerability Explanation](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Vulnerability Resolution](../application_security/vulnerabilities/_index.md#vulnerability-resolution) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [AI Impact Dashboard](../analytics/ai_impact_analytics.md) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
|
||||
### Features available in GitLab Duo Self-Hosted
|
||||
|
||||
Your organization can use [GitLab Duo Self-Hosted](../../administration/gitlab_duo_self_hosted/_index.md)
|
||||
to self-host the AI gateway and language models if you:
|
||||
|
||||
- Have the GitLab Duo Enterprise add-on.
|
||||
- Are a GitLab Self-Managed customer.
|
||||
|
||||
To check which GitLab Duo features are available for use with GitLab Duo Self-Hosted,
|
||||
and the status of those features, see the
|
||||
[supported GitLab Duo features for GitLab Duo Self-Hosted](../../administration/gitlab_duo_self_hosted/_index.md#supported-gitlab-duo-features).
|
||||
|
||||
### Beta and experimental features
|
||||
|
||||
The following features are not generally available.
|
||||
|
||||
They require a Premium or Ultimate subscription and one of the available add-ons.
|
||||
|
||||
| Feature | GitLab Duo Core | GitLab Duo Pro | GitLab Duo Enterprise | GitLab.com | GitLab Self-Managed | GitLab Dedicated | GitLab Duo Self-Hosted |
|
||||
|---------|----------|---------|----------------|-----------|-------------|-----------|------------------------|
|
||||
| [Code Review Summary](../project/merge_requests/duo_in_merge_requests.md#summarize-a-code-review) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | Experiment | Experiment | {{< icon name="dash-circle" >}} No | Experiment |
|
||||
| [Issue Description Generation](../project/issues/managing_issues.md#populate-an-issue-with-issue-description-generation) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | Experiment | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | N/A |
|
||||
| [Code Review](../project/merge_requests/duo_in_merge_requests.md#have-gitlab-duo-review-your-code) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | Beta | Beta | Beta | N/A |
|
||||
| [Merge Request Summary](../project/merge_requests/duo_in_merge_requests.md#generate-a-description-by-summarizing-code-changes) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | Beta | Beta | {{< icon name="dash-circle" >}} No | Beta |
|
||||
|
||||
[GitLab Duo Workflow](../duo_workflow/_index.md) is in private beta, does not require an add-on, and is not supported for GitLab Duo Self-Hosted.
|
||||
{{< /walkthrough >}}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
stage: AI-powered
|
||||
group: AI Framework
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
description: AI-native features and functionality.
|
||||
title: Summary of GitLab Duo features
|
||||
---
|
||||
|
||||
The following features are generally available on GitLab.com, GitLab Self-Managed, and GitLab Dedicated.
|
||||
|
||||
They require a Premium or Ultimate subscription and one of the available add-ons.
|
||||
|
||||
| Feature | GitLab Duo Core | GitLab Duo Pro | GitLab Duo Enterprise |
|
||||
|---------|----------|---------|----------------|
|
||||
| [Code Suggestions](../project/repository/code_suggestions/_index.md) | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [GitLab Duo Chat](../gitlab_duo_chat/_index.md) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Code Explanation](../gitlab_duo_chat/examples.md#explain-selected-code) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Refactor Code](../gitlab_duo_chat/examples.md#refactor-code-in-the-ide) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Fix Code](../gitlab_duo_chat/examples.md#fix-code-in-the-ide) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Test Generation](../gitlab_duo_chat/examples.md#write-tests-in-the-ide) in IDEs | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [GitLab Duo Chat](../gitlab_duo_chat/_index.md) in GitLab UI | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Code Explanation](../project/repository/code_explain.md) in GitLab UI | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Discussion Summary](../discussions/_index.md#summarize-issue-discussions-with-duo-chat) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [GitLab Duo for the CLI](../../editor_extensions/gitlab_cli/_index.md#gitlab-duo-for-the-cli) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Merge Commit Message Generation](../project/merge_requests/duo_in_merge_requests.md#generate-a-merge-commit-message) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Root Cause Analysis](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Vulnerability Explanation](../application_security/vulnerabilities/_index.md#explaining-a-vulnerability) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [Vulnerability Resolution](../application_security/vulnerabilities/_index.md#vulnerability-resolution) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
| [AI Impact Dashboard](../analytics/ai_impact_analytics.md) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes |
|
||||
|
||||
In addition:
|
||||
|
||||
- All GitLab Duo Core and Pro features include generally available support for
|
||||
[GitLab Duo Self-Hosted](../../administration/gitlab_duo_self_hosted/_index.md).
|
||||
- All GitLab Duo Enterprise-only features include beta support for GitLab Duo Self-Hosted.
|
||||
|
||||
## Beta and experimental features
|
||||
|
||||
The following features are not generally available.
|
||||
|
||||
They require a Premium or Ultimate subscription and one of the available add-ons.
|
||||
|
||||
| Feature | GitLab Duo Core | GitLab Duo Pro | GitLab Duo Enterprise | GitLab.com | GitLab Self-Managed | GitLab Dedicated | GitLab Duo Self-Hosted |
|
||||
|---------|----------|---------|----------------|-----------|-------------|-----------|------------------------|
|
||||
| [Code Review Summary](../project/merge_requests/duo_in_merge_requests.md#summarize-a-code-review) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | Experiment | Experiment | {{< icon name="dash-circle" >}} No | Experiment |
|
||||
| [Issue Description Generation](../project/issues/managing_issues.md#populate-an-issue-with-issue-description-generation) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | Experiment | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | N/A |
|
||||
| [Code Review](../project/merge_requests/duo_in_merge_requests.md#have-gitlab-duo-review-your-code) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | Beta | Beta | Beta | N/A |
|
||||
| [Merge Request Summary](../project/merge_requests/duo_in_merge_requests.md#generate-a-description-by-summarizing-code-changes) | {{< icon name="dash-circle" >}} No | {{< icon name="dash-circle" >}} No | {{< icon name="check-circle-filled" >}} Yes | Beta | Beta | {{< icon name="dash-circle" >}} No | Beta |
|
||||
|
||||
[GitLab Duo Workflow](../duo_workflow/_index.md) is in private beta, does not require an add-on, and is not supported for GitLab Duo Self-Hosted.
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
stage: AI-powered
|
||||
group: AI Framework
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
description: Ensure GitLab Duo is configured and operating correctly.
|
||||
title: Configure GitLab Duo on a GitLab Self-Managed instance
|
||||
gitlab_dedicated: no
|
||||
---
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ contextual, conversational AI. Chat:
|
|||
- Integrates directly in the GitLab UI, Web IDE, VS Code, JetBrains IDEs, and Visual Studio.
|
||||
- Can include information from your repositories and projects to deliver targeted improvements.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=ZQBAuf-CTAY)
|
||||
<!-- Video published on 2024-04-18 -->
|
||||
|
||||
## Supported editor extensions
|
||||
|
||||
You can use GitLab Duo Chat in:
|
||||
|
|
|
|||
|
|
@ -451,8 +451,11 @@ You can include additional instructions to be considered. For example:
|
|||
- Focus on performance, for example `/refactor improving performance`.
|
||||
- Focus on potential vulnerabilities, for example `/refactor avoiding memory leaks and exploits`.
|
||||
|
||||
For more information, see <i class="fa-youtube-play" aria-hidden="true"></i> [Application modernization with GitLab Duo (C++ to Java)](https://youtu.be/FjoAmt5eeXA?si=SLv9Mv8eSUAVwW5Z).
|
||||
For more information, see:
|
||||
|
||||
- <i class="fa-youtube-play" aria-hidden="true"></i> [Application modernization with GitLab Duo (C++ to Java)](https://youtu.be/FjoAmt5eeXA?si=SLv9Mv8eSUAVwW5Z).
|
||||
<!-- Video published on 2025-03-18 -->
|
||||
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://youtu.be/oxziu7_mWVk?si=fS2JUO-8doARS169)
|
||||
|
||||
## Fix code in the IDE
|
||||
|
||||
|
|
@ -526,6 +529,8 @@ You can include additional instructions to be considered. For example:
|
|||
|
||||
For more information, see [Use GitLab Duo Chat in VS Code](_index.md#use-gitlab-duo-chat-in-vs-code).
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=zWhwuixUkYU)
|
||||
|
||||
## Ask about CI/CD
|
||||
|
||||
{{< details >}}
|
||||
|
|
@ -593,6 +598,8 @@ It analyzes the last 100,000 characters of the job log to determine the cause of
|
|||
|
||||
You can access this feature either from the **Pipelines** tab in merge requests or directly from the job log.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch overview](https://www.youtube.com/watch?v=MLjhVbMjFAY&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW)
|
||||
|
||||
Root Cause Analysis does not support:
|
||||
|
||||
- Trigger jobs
|
||||
|
|
|
|||
|
|
@ -68,3 +68,5 @@ You can also access issue analytics from the [Value Streams Dashboard](../../ana
|
|||
|
||||
Enhanced issue analytics display the additional metric `Issues closed`, which represents the total number of resolved issues in your group over a selected period.
|
||||
You can use this metric to improve the overall turn-around time and value delivered to your customers.
|
||||
|
||||

|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 143 KiB |
|
|
@ -9,13 +9,15 @@ title: Virtual registry
|
|||
|
||||
- Tier: Premium, Ultimate
|
||||
- Offering: GitLab.com, GitLab Self-Managed
|
||||
- Status: Experiment
|
||||
- Status: Beta
|
||||
|
||||
{{< /details >}}
|
||||
|
||||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/14137) in GitLab 18.0 [with a flag](../../../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -23,7 +25,7 @@ title: Virtual registry
|
|||
|
||||
The availability of this feature is controlled by a feature flag.
|
||||
For more information, see the history.
|
||||
This feature is available in [experiment](../../../policy/development_stages_support.md#experiment).
|
||||
This feature is available in [beta](../../../policy/development_stages_support.md#beta).
|
||||
Review the documentation carefully before you use this feature.
|
||||
|
||||
{{< /alert >}}
|
||||
|
|
|
|||
|
|
@ -9,13 +9,15 @@ title: Maven virtual registry
|
|||
|
||||
- Tier: Premium, Ultimate
|
||||
- Offering: GitLab.com, GitLab Self-Managed
|
||||
- Status: Experiment
|
||||
- Status: Beta
|
||||
|
||||
{{< /details >}}
|
||||
|
||||
{{< history >}}
|
||||
|
||||
- [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/14137) in GitLab 18.0 [with a flag](../../../../administration/feature_flags.md) named `virtual_registry_maven`. Disabled by default.
|
||||
- Feature flag [renamed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) to `maven_virtual_registry` in GitLab 18.1.
|
||||
- [Changed](https://gitlab.com/gitlab-org/gitlab/-/issues/540276) from experiment to beta in GitLab 18.1.
|
||||
|
||||
{{< /history >}}
|
||||
|
||||
|
|
@ -23,7 +25,7 @@ title: Maven virtual registry
|
|||
|
||||
The availability of this feature is controlled by a feature flag.
|
||||
For more information, see the history.
|
||||
This feature is available in [experiment](../../../../policy/development_stages_support.md#experiment).
|
||||
This feature is available in [beta](../../../../policy/development_stages_support.md#beta).
|
||||
Review the documentation carefully before you use this feature.
|
||||
|
||||
{{< /alert >}}
|
||||
|
|
|
|||
|
|
@ -64,6 +64,9 @@ To edit an issue:
|
|||
|
||||
Generate a detailed description for an issue based on a short summary you provide.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=-BWBQat7p5M)
|
||||
<!-- Video published on 2024-12-18 -->
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- You must belong to at least one group with the [experiment and beta features setting](../../gitlab_duo/turn_on_off.md#turn-on-beta-and-experimental-features) enabled.
|
||||
|
|
|
|||
|
|
@ -267,6 +267,9 @@ If you spend a lot of time trying to understand code that others have created, o
|
|||
you struggle to understand code written in a language you are not familiar with,
|
||||
you can ask GitLab Duo to explain the code to you.
|
||||
|
||||
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://youtu.be/1izKaLmmaCA?si=O2HDokLLujRro_3O)
|
||||
<!-- Video published on 2023-11-18 -->
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- You must belong to at least one group with the
|
||||
|
|
|
|||
|
|
@ -43,6 +43,8 @@ to create a merge request description.
|
|||
|
||||
The description is inserted where your cursor was.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=CKjkVsfyFd8&list=PLFGfElNsQthZGazU1ZdfDpegu0HflunXW)
|
||||
|
||||
Provide feedback on this feature in [issue 443236](https://gitlab.com/gitlab-org/gitlab/-/issues/443236).
|
||||
|
||||
Data usage: The diff of changes between the source branch's head and the target branch is sent to the large language model.
|
||||
|
|
@ -156,6 +158,8 @@ When you've completed your review of a merge request and are ready to [submit yo
|
|||
|
||||
The summary is displayed in the comment box. You can edit and refine the summary prior to submitting your review.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=Bx6Zajyuy9k)
|
||||
|
||||
Provide feedback on this experimental feature in [issue 408991](https://gitlab.com/gitlab-org/gitlab/-/issues/408991).
|
||||
|
||||
Data usage: When you use this feature, the following data is sent to the large language model referenced above:
|
||||
|
|
@ -191,6 +195,8 @@ by using GitLab Duo Merge Commit Message Generation.
|
|||
1. Select **Generate commit message**.
|
||||
1. Review the commit message provided and choose **Insert** to add it to the commit.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://www.youtube.com/watch?v=fUHPNT4uByQ)
|
||||
|
||||
Data usage: When you use this feature, the following data is sent to the large language model:
|
||||
|
||||
- Contents of the file
|
||||
|
|
|
|||
|
|
@ -35,9 +35,10 @@ title: Code Suggestions
|
|||
|
||||
Use GitLab Duo Code Suggestions to write code more efficiently by using generative AI to suggest code while you're developing.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
|
||||
[View a click-through demo](https://gitlab.navattic.com/code-suggestions).
|
||||
<!-- Video published on 2023-12-09 --> <!-- Demo published on 2024-02-01 -->
|
||||
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
|
||||
[View a click-through demo](https://gitlab.navattic.com/code-suggestions).
|
||||
<!-- Video published on 2023-12-09 --> <!-- Demo published on 2024-02-01 -->
|
||||
- <i class="fa fa-youtube-play youtube" aria-hidden="true"></i> [Watch an overview](https://youtu.be/ds7SG1wgcVM)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,8 @@ module Gitlab
|
|||
:start_and_due_date,
|
||||
:time_tracking,
|
||||
:vulnerabilities,
|
||||
[:weight, { editable: true, rollup: false }]
|
||||
[:weight, { editable: true, rollup: false }],
|
||||
:status
|
||||
],
|
||||
incident: [
|
||||
:assignees,
|
||||
|
|
|
|||
|
|
@ -35572,6 +35572,9 @@ msgstr ""
|
|||
msgid "LDAP|Server"
|
||||
msgstr ""
|
||||
|
||||
msgid "LDAP|Start typing"
|
||||
msgstr ""
|
||||
|
||||
msgid "LDAP|Sync method"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -35584,6 +35587,9 @@ msgstr ""
|
|||
msgid "LDAP|User filter"
|
||||
msgstr ""
|
||||
|
||||
msgid "LDAP|View more information on %{linkStart}user filters%{linkEnd}."
|
||||
msgstr ""
|
||||
|
||||
msgid "LDAP|You can manage permission levels for individual group members in the Members tab."
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,293 +1,291 @@
|
|||
{
|
||||
"qa/specs/features/api/10_govern/group_access_token_spec.rb": 32.98999308,
|
||||
"qa/specs/features/api/10_govern/project_access_token_spec.rb": 75.62535221,
|
||||
"qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 97.971406904,
|
||||
"qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 99.394917952,
|
||||
"qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 111.202909403,
|
||||
"qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb": 23.128792633,
|
||||
"qa/specs/features/api/1_manage/import/import_github_repo_spec.rb": 98.601690677,
|
||||
"qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb": 63.884309438,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb": 60.555716827,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb": 185.120150591,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb": 97.451122042,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_project_spec.rb": 101.663654195,
|
||||
"qa/specs/features/api/1_manage/rate_limits_spec.rb": 14.907381728,
|
||||
"qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 25.755076546,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 16.82332341,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 22.433046338,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 39.80516242,
|
||||
"qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 1.38181908,
|
||||
"qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 25.431371545,
|
||||
"qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 22.631262867,
|
||||
"qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 26.793694843000004,
|
||||
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 16.670677201,
|
||||
"qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 25.454150535,
|
||||
"qa/specs/features/api/3_create/repository/storage_size_spec.rb": 28.961005929,
|
||||
"qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 10.547959073,
|
||||
"qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 95.84142065,
|
||||
"qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 26.575834034,
|
||||
"qa/specs/features/api/4_verify/file_variable_spec.rb": 60.79006248,
|
||||
"qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 39.828565691,
|
||||
"qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb": 69.770433031,
|
||||
"qa/specs/features/api/8_monitor/metrics_spec.rb": 5.996862642,
|
||||
"qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 145.832127287,
|
||||
"qa/specs/features/api/9_tenant_scale/users_spec.rb": 3.88771732,
|
||||
"qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb": 18.955245548,
|
||||
"qa/specs/features/browser_ui/10_govern/login/2fa_recovery_spec.rb": 51.379482902,
|
||||
"qa/specs/features/browser_ui/10_govern/login/2fa_ssh_recovery_spec.rb": 63.15838517,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 13.427990734,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb": 94.549567111,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_into_gitlab_via_ldap_spec.rb": 4.26200593,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_into_mattermost_via_gitlab_spec.rb": 30.355360322,
|
||||
"qa/specs/features/browser_ui/10_govern/login/login_via_instance_wide_saml_sso_spec.rb": 16.78395848,
|
||||
"qa/specs/features/browser_ui/10_govern/login/oauth_login_with_github_spec.rb": 41.820836674,
|
||||
"qa/specs/features/browser_ui/10_govern/login/register_spec.rb": 101.892100194,
|
||||
"qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb": 25.906346348,
|
||||
"qa/specs/features/browser_ui/10_govern/user/impersonation_token_spec.rb": 30.138602861,
|
||||
"qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb": 44.138226734999996,
|
||||
"qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 60.04423653,
|
||||
"qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 18.762676849,
|
||||
"qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 13.578009866,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb": 61.994387357,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb": 65.227220864,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb": 46.776170762,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb": 73.78475297,
|
||||
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb": 57.03791635,
|
||||
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb": 181.520241604,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 23.031130269,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 29.780177896,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 30.636613756,
|
||||
"qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb": 16.470446876,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 23.402340109,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 26.608420993,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 226.30203992999998,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 30.203090855,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 40.13231434,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 24.860881753,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 24.575106282,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 33.018544554,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 26.291870234,
|
||||
"qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 17.561810633,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 106.336658382,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 22.587552274,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 28.049283666,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 108.875066367,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 69.419140123,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 25.037219196,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 38.413254353,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 70.598098006,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 59.092698467000005,
|
||||
"qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 24.049024633,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 83.35424972999999,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 65.769218013,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 30.017509364,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 92.452005772,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 46.535589667,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 85.059614424,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 58.678788745,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 38.031947034,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 107.744959716,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 64.079688598,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 60.464588091,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 47.575329799,
|
||||
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 27.119274477,
|
||||
"qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 30.340932638,
|
||||
"qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 24.416460797,
|
||||
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 26.239438601,
|
||||
"qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 37.20657738,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 142.734936736,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 24.264817229,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 27.222468229,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 49.703005927,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 84.31200969,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 77.096792386,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 54.592720064000005,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 43.343972126,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 100.70291134499999,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 57.116473049999996,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 22.332861645,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 21.55505836,
|
||||
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 29.287778902,
|
||||
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 26.294830596,
|
||||
"qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 65.051120837,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 31.803789523,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 51.590373962,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 83.905883157,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 73.04176784399999,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 20.481249541,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_spec.rb": 8.514641421,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 14.67105945,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 28.514565884,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 47.298550792,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 34.434016889,
|
||||
"qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 25.014898858,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 42.752924537,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 84.502238036,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 24.250358427,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 180.07976596700001,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 96.65252819099999,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 86.128659366,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 121.634773435,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 116.303910391,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 55.741715074,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 66.436168654,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 260.885521371,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 319.85414603000004,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb": 73.521802689,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 134.719012043,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 33.577634151,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb": 84.286087112,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 18.525020519,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 54.886224503,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb": 64.229339559,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 112.862791923,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 66.298914071,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 66.049358924,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 65.493875232,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 50.079680864,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 31.110243067,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 23.618801349,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 39.029569115,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 25.616882657,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 17.609245948,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 20.499690898,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb": 45.242119367,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb": 26.076009522,
|
||||
"qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 54.246992046,
|
||||
"qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb": 165.693115559,
|
||||
"qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 345.187678671,
|
||||
"qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 172.648268037,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 67.483790802,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 97.870222592,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 133.504862177,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 382.312482672,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 591.8489436350001,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 285.250109461,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 304.329392175,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 335.093454552,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 285.115592965,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 107.899088585,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 29.988003167,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 187.45400691700002,
|
||||
"qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 15.694988036,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/alert_settings_create_new_alerts_spec.rb": 56.424444699,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/automatically_creates_incident_for_alert_spec.rb": 69.98793122000001,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/create_alert_using_authorization_key_spec.rb": 47.768660694,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 69.965951869,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/recovery_alert_resolves_correct_alert_spec.rb": 29.011678497,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb": 9.344660726,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 65.26559089599999,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb": 27.244025476,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 32.014529209,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb": 20.068110387,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 67.337069478,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 22.587608685,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 53.449546747,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 171.14910748399998,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 35.743874052,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb": 31.223309247,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 27.375015555,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 66.960839159,
|
||||
"qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb": 38.562984764,
|
||||
"qa/specs/features/ee/api/10_govern/instance_audit_event_streaming_spec.rb": 37.026030479,
|
||||
"qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb": 80.57801924500001,
|
||||
"qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 131.481349437,
|
||||
"qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 13.047155732,
|
||||
"qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 62.834426385,
|
||||
"qa/specs/features/ee/api/2_plan/analytics/dora_metrics_spec.rb": 2.3438559850000003,
|
||||
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 82.006404714,
|
||||
"qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 39.562657235,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/advanced_global_advanced_syntax_search_spec.rb": 105.411032861,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/elasticsearch_api_spec.rb": 95.84806871400001,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/commit_index/commit_index_spec.rb": 31.44747142,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/issues_index/issue_index_spec.rb": 72.872250958,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/main_index/blob_index_spec.rb": 40.252409182,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/merge_request_index/merge_request_index_spec.rb": 63.477970837,
|
||||
"qa/specs/features/ee/api/9_tenant_scale/elasticsearch/index_tests/notes_index/note_index_spec.rb": 62.85925672,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb": 133.854524265,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb": 71.378891385,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/dismissed_vulnerabilities_in_security_widget_spec.rb": 106.310033633,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/explain_this_vulnerability_spec.rb": 48.656577734,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb": 15.908063331,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb": 144.069410289,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb": 58.155441685,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb": 115.65698714400001,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb": 122.51110615500002,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb": 123.506448268,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group_pipeline_execution_policy_spec.rb": 244.91917489399998,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb": 167.819808879,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb": 231.473886222,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb": 62.095760528,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb": 158.81351263,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_license_finding_spec.rb": 49.199501503,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb": 210.54865648499998,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb": 81.540982641,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb": 363.572918207,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/user/minimal_access_user_spec.rb": 24.151715831,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/vulnerabilities_jira_integration_spec.rb": 42.562710221,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb": 342.169147882,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb": 19.519817991,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 7.57460835,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb": 184.78561392999998,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/free_namespace_storage_spec.rb": 341.009588447,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/saas_user_caps_spec.rb": 44.723411659,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 23.297850153,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 75.638407947,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/license_scanning_spec.rb": 116.30680739,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 110.920330885,
|
||||
"qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb": 68.967794595,
|
||||
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb": 43.075428703,
|
||||
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/root_cause_analysis_with_duo_chat_spec.rb": 37.931425691,
|
||||
"qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 58.653198608000004,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 211.292243553,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 74.28075828,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 75.671017318,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 22.641035335,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 16.821151717,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 375.506600713,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 63.20070909,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 14.576608489,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 41.373198799,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 17.600620542,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 35.702110881,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 34.127026174,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 30.402700367,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 19.263109267,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 26.399046988,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 44.058644116,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 42.505086799,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 66.01471323000001,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 32.519977572,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 22.535067519,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 31.517568487,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 34.898537993,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 22.289509862,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 45.105684972999995,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 39.05453727,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 82.65206438300001,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 24.677114242,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 106.008473686,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 48.185280618,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/generate_commit_message_spec.rb": 40.390914617,
|
||||
"qa/specs/features/ee/browser_ui/3_create/remote_development/workspace_actions_spec.rb": 656.975314259,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 77.835283702,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 29.858441116,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/duo_chat_explain_code_spec.rb": 28.16854103,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 255.24311795800003,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 43.29283679,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 133.52674356,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 314.069409969,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 49.551448328,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 195.161257407,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 54.098731282,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 54.379182606,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 434.95902557700003,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 259.66672728500004,
|
||||
"qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 106.25856156900001,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 89.697462894,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 110.677573526,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 53.854234828,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 61.396500039,
|
||||
"qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 16.936613385,
|
||||
"qa/specs/features/ee/browser_ui/9_tenant_scale/group/share_group_with_group_spec.rb": 33.98725241
|
||||
"qa/specs/features/api/10_govern/group_access_token_spec.rb": 33.40652677,
|
||||
"qa/specs/features/api/10_govern/project_access_token_spec.rb": 108.14779121100001,
|
||||
"qa/specs/features/api/12_systems/gitaly/automatic_failover_and_recovery_spec.rb": 99.263909494,
|
||||
"qa/specs/features/api/12_systems/gitaly/backend_node_recovery_spec.rb": 102.480642205,
|
||||
"qa/specs/features/api/12_systems/gitaly/distributed_reads_spec.rb": 102.77347513500001,
|
||||
"qa/specs/features/api/12_systems/gitaly/gitaly_mtls_spec.rb": 19.340814466,
|
||||
"qa/specs/features/api/1_manage/import/import_github_repo_spec.rb": 127.489575968,
|
||||
"qa/specs/features/api/1_manage/integrations/webhook_events_spec.rb": 56.808515615,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_group_spec.rb": 59.361528533,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_issue_spec.rb": 215.076974441,
|
||||
"qa/specs/features/api/1_manage/migration/gitlab_migration_pipeline_spec.rb": 91.729914798,
|
||||
"qa/specs/features/api/1_manage/rate_limits_spec.rb": 14.607217966,
|
||||
"qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 23.008684037,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 22.494501055,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 43.636242201,
|
||||
"qa/specs/features/api/3_create/merge_request/push_options_spec.rb": 37.520196219,
|
||||
"qa/specs/features/api/3_create/merge_request/view_merge_requests_spec.rb": 1.082708408,
|
||||
"qa/specs/features/api/3_create/repository/add_list_delete_branches_spec.rb": 17.708858703,
|
||||
"qa/specs/features/api/3_create/repository/commit_to_templated_project_spec.rb": 10.779747315,
|
||||
"qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 11.272503979,
|
||||
"qa/specs/features/api/3_create/repository/files_spec.rb": 9.00272815,
|
||||
"qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 15.180661393,
|
||||
"qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 25.050371408,
|
||||
"qa/specs/features/api/3_create/repository/storage_size_spec.rb": 19.204492761,
|
||||
"qa/specs/features/api/3_create/repository/tag_revision_trigger_prereceive_hook_spec.rb": 11.841812764,
|
||||
"qa/specs/features/api/4_verify/api_variable_inheritance_with_forward_pipeline_variables_spec.rb": 61.1731228,
|
||||
"qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 26.376580723,
|
||||
"qa/specs/features/api/4_verify/file_variable_spec.rb": 68.844644612,
|
||||
"qa/specs/features/api/4_verify/job_downloads_artifacts_spec.rb": 27.161383435,
|
||||
"qa/specs/features/api/5_package/container_registry/saas/container_registry_spec.rb": 69.033341671,
|
||||
"qa/specs/features/api/8_monitor/metrics_spec.rb": 6.335980976,
|
||||
"qa/specs/features/api/9_tenant_scale/user_inherited_access_spec.rb": 131.510213571,
|
||||
"qa/specs/features/api/9_tenant_scale/users_spec.rb": 6.051365423,
|
||||
"qa/specs/features/browser_ui/10_govern/group/group_access_token_spec.rb": 20.474029766,
|
||||
"qa/specs/features/browser_ui/10_govern/login/2fa_recovery_spec.rb": 53.607716173,
|
||||
"qa/specs/features/browser_ui/10_govern/login/2fa_ssh_recovery_spec.rb": 57.850255819,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_in_spec.rb": 13.623114893,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_in_with_2fa_spec.rb": 100.334444961,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_into_gitlab_via_ldap_spec.rb": 4.92612366,
|
||||
"qa/specs/features/browser_ui/10_govern/login/log_into_mattermost_via_gitlab_spec.rb": 30.722237006,
|
||||
"qa/specs/features/browser_ui/10_govern/login/login_via_instance_wide_saml_sso_spec.rb": 20.068269269,
|
||||
"qa/specs/features/browser_ui/10_govern/login/oauth_login_with_github_spec.rb": 42.085418594,
|
||||
"qa/specs/features/browser_ui/10_govern/login/register_spec.rb": 115.60960340700001,
|
||||
"qa/specs/features/browser_ui/10_govern/project/project_access_token_spec.rb": 22.744552996,
|
||||
"qa/specs/features/browser_ui/10_govern/user/impersonation_token_spec.rb": 39.080742241,
|
||||
"qa/specs/features/browser_ui/10_govern/user/user_access_termination_spec.rb": 40.930434999,
|
||||
"qa/specs/features/browser_ui/14_analytics/performance_bar_spec.rb": 41.248273954,
|
||||
"qa/specs/features/browser_ui/14_analytics/service_ping_default_enabled_spec.rb": 23.762679721,
|
||||
"qa/specs/features/browser_ui/14_analytics/service_ping_disabled_spec.rb": 16.107325885,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jenkins/jenkins_build_status_spec.rb": 63.049141584,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_basic_integration_spec.rb": 63.873755599,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/jira/jira_issue_import_spec.rb": 53.065096905,
|
||||
"qa/specs/features/browser_ui/1_manage/integrations/pipeline_status_emails_spec.rb": 88.621169064,
|
||||
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_group_spec.rb": 72.757495199,
|
||||
"qa/specs/features/browser_ui/1_manage/migration/gitlab_migration_user_contribution_reassignment_spec.rb": 177.476700287,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/add_design_content_spec.rb": 22.390309891,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/archive_design_content_spec.rb": 33.211751438,
|
||||
"qa/specs/features/browser_ui/2_plan/design_management/modify_design_content_spec.rb": 25.175048505,
|
||||
"qa/specs/features/browser_ui/2_plan/email/trigger_email_notification_spec.rb": 19.399112122,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 22.48118938,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 26.180878901,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 202.763821406,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 31.199291474,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 42.882703366,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 25.652492251,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 34.942500464,
|
||||
"qa/specs/features/browser_ui/2_plan/issue/real_time_assignee_spec.rb": 31.47515856,
|
||||
"qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 19.343151789,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 106.787337649,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 22.265545915,
|
||||
"qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 30.000384865,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_creation_spec.rb": 114.445210364,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_content_manipulation_spec.rb": 72.235405971,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_directory_management_spec.rb": 22.372347952,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_file_upload_spec.rb": 39.202519551,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_list_spec.rb": 88.058121398,
|
||||
"qa/specs/features/browser_ui/2_plan/project_wiki/project_based_page_deletion_spec.rb": 56.673871897,
|
||||
"qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 25.667597999,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 85.171982466,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 44.176778105,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 34.686354604,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 65.810911428,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 39.69523976,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/merge_request_set_to_auto_merge_spec.rb": 96.135750584,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 91.869611652,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 29.611802805,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 55.520810221,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/batch_suggestion_spec.rb": 73.960590807,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 53.032713696,
|
||||
"qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 53.95135281,
|
||||
"qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 27.930282318,
|
||||
"qa/specs/features/browser_ui/3_create/repository/add_new_branch_rule_spec.rb": 45.270817966,
|
||||
"qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 24.174087797,
|
||||
"qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 24.501091296,
|
||||
"qa/specs/features/browser_ui/3_create/repository/license_detection_spec.rb": 37.788228757,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protected_tags_spec.rb": 156.75783241,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 22.762603095,
|
||||
"qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 23.320743313,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 25.847487444,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 84.458710267,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 78.821934437,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 58.192687617000004,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 35.895744995,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_file_size_spec.rb": 60.211859737,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 49.343938607,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 26.67423749,
|
||||
"qa/specs/features/browser_ui/3_create/repository/push_to_canary_gitaly_spec.rb": 23.857914052,
|
||||
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_create_spec.rb": 21.282368827,
|
||||
"qa/specs/features/browser_ui/3_create/repository/ssh_key_support_delete_spec.rb": 18.902263736,
|
||||
"qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 56.115527203,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 31.974285998,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 55.954054138000004,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 76.00938344400001,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 86.193481991,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 25.41531335,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 16.54897191,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 31.074118649,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 46.240431095999995,
|
||||
"qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 30.257300877,
|
||||
"qa/specs/features/browser_ui/3_create/source_editor/source_editor_toolbar_spec.rb": 30.364181551,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/add_first_file_in_web_ide_spec.rb": 38.433381843,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 101.220843888,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/closing_web_ide_with_unsaved_changes_spec.rb": 37.055114931,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/settings_sync_web_ide_spec.rb": 179.651143572,
|
||||
"qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 150.02571713999998,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/ci_catalog_sorting_spec.rb": 88.257084475,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_glab_spec.rb": 123.628271413,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/release_with_release_cli_spec.rb": 158.557140521,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_components_catalog/run_component_in_project_pipeline_spec.rb": 48.949554375,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/expose_job_artifacts_in_mr_spec.rb": 37.774771155,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/job_artifacts_access_keyword_spec.rb": 266.063759199,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_job_artifacts/unlocking_job_artifacts_across_pipelines_spec.rb": 269.653268932,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_project_artifacts/user_can_bulk_delete_artifacts_spec.rb": 73.291987677,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 133.265900999,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/raw_variables_defined_in_yaml_spec.rb": 61.572497471,
|
||||
"qa/specs/features/browser_ui/4_verify/ci_variable/ui_variable_inheritable_when_forward_pipeline_variables_true_spec.rb": 74.633719222,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 30.915270131,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 49.364241601,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_multiple_projects_spec.rb": 49.394313638,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 75.159637624,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 63.867982759,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_with_manual_jobs_spec.rb": 60.973117906,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 60.126772749,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 41.242408651,
|
||||
"qa/specs/features/browser_ui/4_verify/pipeline/update_ci_file_with_pipeline_editor_spec.rb": 42.089385742,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/deprecated_registration_token_spec.rb": 21.650577048,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/deprecated_unregister_runner_spec.rb": 36.095911812,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_counts_spec.rb": 21.918267332,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/fleet_visibility/group_runner_status_counts_spec.rb": 18.97998052,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/register_group_runner_spec.rb": 26.115506564,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/register_project_runner_spec.rb": 52.527923887,
|
||||
"qa/specs/features/browser_ui/4_verify/runner/unregister_runner_spec.rb": 26.236790015,
|
||||
"qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb": 52.316446719,
|
||||
"qa/specs/features/browser_ui/5_package/container_registry/saas/container_registry_spec.rb": 165.634585609,
|
||||
"qa/specs/features/browser_ui/5_package/container_registry/self_managed/container_registry_spec.rb": 347.338332446,
|
||||
"qa/specs/features/browser_ui/5_package/dependency_proxy/dependency_proxy_spec.rb": 199.50891662499998,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/composer_registry_spec.rb": 67.286344045,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/conan_repository_spec.rb": 109.692268132,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/generic_repository_spec.rb": 63.838511729,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/helm_registry_spec.rb": 322.85689752,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_group_level_spec.rb": 650.299845526,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven/maven_project_level_spec.rb": 296.734672131,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/maven_gradle_repository_spec.rb": 324.63351607,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_group_level_spec.rb": 288.85934595599997,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/npm/npm_instance_level_spec.rb": 276.400771392,
|
||||
"qa/specs/features/browser_ui/5_package/package_registry/pypi_repository_spec.rb": 124.86013221,
|
||||
"qa/specs/features/browser_ui/6_deploy/auto_devops/create_project_with_auto_devops_spec.rb": 568.348871003,
|
||||
"qa/specs/features/browser_ui/6_deploy/deploy_key/add_deploy_key_spec.rb": 25.653972745,
|
||||
"qa/specs/features/browser_ui/6_deploy/deploy_key/clone_using_deploy_key_spec.rb": 160.158991192,
|
||||
"qa/specs/features/browser_ui/6_deploy/deploy_token/add_deploy_token_spec.rb": 13.617455071,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/alert_management_spec.rb": 203.638595592,
|
||||
"qa/specs/features/browser_ui/8_monitor/alert_management/email_notification_for_alert_spec.rb": 85.05421501699999,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/create_group_with_mattermost_team_spec.rb": 11.792938794,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/group_member_access_request_spec.rb": 74.36519395900001,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/group/transfer_project_spec.rb": 21.639426063,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/add_project_member_spec.rb": 32.685666012,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_badge_spec.rb": 29.041984398,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/create_project_spec.rb": 56.481595366,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/dashboard_images_spec.rb": 22.738437165,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/invite_group_to_project_spec.rb": 54.548344267000004,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/project_owner_permissions_spec.rb": 178.041656998,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/project/view_project_activity_spec.rb": 24.761728824,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/follow_user_activity_spec.rb": 26.594523245,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/parent_group_access_termination_spec.rb": 29.703109918,
|
||||
"qa/specs/features/browser_ui/9_tenant_scale/user/user_inherited_access_spec.rb": 35.873381803,
|
||||
"qa/specs/features/ee/api/10_govern/compliance_pipeline_spec.rb": 27.990791839,
|
||||
"qa/specs/features/ee/api/10_govern/instance_audit_event_streaming_spec.rb": 23.876685125999998,
|
||||
"qa/specs/features/ee/api/10_govern/user/minimal_access_user_spec.rb": 83.41368070499999,
|
||||
"qa/specs/features/ee/api/17_foundations/elasticsearch/advanced_global_advanced_syntax_search_spec.rb": 114.08060985,
|
||||
"qa/specs/features/ee/api/17_foundations/elasticsearch/elasticsearch_api_spec.rb": 110.64275206500001,
|
||||
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/blob_index_spec.rb": 42.299344592,
|
||||
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/commit_index_spec.rb": 39.190616521,
|
||||
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/issue_index_spec.rb": 45.731552806,
|
||||
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/merge_request_index_spec.rb": 28.517704861,
|
||||
"qa/specs/features/ee/api/17_foundations/elasticsearch/index_tests/note_index_spec.rb": 36.025010085,
|
||||
"qa/specs/features/ee/api/1_manage/import/import_github_repo_spec.rb": 26.742735677,
|
||||
"qa/specs/features/ee/api/1_manage/integrations/group_webhook_events_spec.rb": 13.725903805,
|
||||
"qa/specs/features/ee/api/1_manage/migration/gitlab_migration_group_spec.rb": 76.185247628,
|
||||
"qa/specs/features/ee/api/2_plan/analytics/dora_metrics_spec.rb": 2.134576299,
|
||||
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 88.307651451,
|
||||
"qa/specs/features/ee/api/3_create/code_suggestions_spec.rb": 62.483465078,
|
||||
"qa/specs/features/ee/api/6_deploy/kubernetes/kubernetes_agent_spec.rb": 333.841964395,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/change_vulnerability_status_spec.rb": 117.605842988,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/create_merge_request_with_secure_spec.rb": 70.493630702,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/dismissed_vulnerabilities_in_security_widget_spec.rb": 78.775272987,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/explain_this_vulnerability_spec.rb": 48.390992685,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/export_vulnerability_report_spec.rb": 25.195373892,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/fix_vulnerability_workflow_spec.rb": 154.707140401,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_event_streaming_spec.rb": 43.394211121,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_audit_logs_1_spec.rb": 132.310534667,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/group_ldap_sync_spec.rb": 129.970168319,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group/restrict_by_ip_address_spec.rb": 130.90665025799998,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/group_pipeline_execution_policy_spec.rb": 274.306130962,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/instance/instance_audit_logs_spec.rb": 130.149224385,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/project/project_audit_logs_spec.rb": 214.633844395,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/project_security_dashboard_spec.rb": 65.29810035,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_execution_policy_vulnerabilities_spec.rb": 127.97672757800001,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_license_finding_spec.rb": 51.5421001,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/scan_result_policy_vulnerabilities_spec.rb": 115.277674252,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/security_policies_spec.rb": 81.00644148,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/security_reports_spec.rb": 361.54343162199996,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/user/minimal_access_user_spec.rb": 24.578217313,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/vulnerabilities_jira_integration_spec.rb": 42.807938893,
|
||||
"qa/specs/features/ee/browser_ui/10_govern/vulnerability_management_spec.rb": 361.155253561,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/license/cloud_activation_spec.rb": 52.245580561,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/license/license_spec.rb": 13.510919953,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/saas_user_limit_experience_spec.rb": 188.378093649,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/free_namespace_storage_spec.rb": 345.016066913,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/saas_user_caps_spec.rb": 51.455543511,
|
||||
"qa/specs/features/ee/browser_ui/11_fulfillment/utilization/user_registration_billing_spec.rb": 18.337433436,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/cvs_dependency_scanning_spec.rb": 100.302462833,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/license_scanning_spec.rb": 125.252427312,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/on_demand_dast_spec.rb": 116.524583274,
|
||||
"qa/specs/features/ee/browser_ui/13_secure/secret_push_protection_spec.rb": 143.955237362,
|
||||
"qa/specs/features/ee/browser_ui/15_growth/free_trial_spec.rb": 67.843876343,
|
||||
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_explain_code_spec.rb": 36.093509303,
|
||||
"qa/specs/features/ee/browser_ui/16_ai_powered/duo_chat/duo_chat_spec.rb": 51.176578692,
|
||||
"qa/specs/features/ee/browser_ui/1_manage/integrations/jira_issues_list_spec.rb": 58.508339867000004,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/contribution_analytics_spec.rb": 180.922854976,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/mr_analytics_spec.rb": 72.150498024,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/analytics/value_stream_analytics_spec.rb": 75.65637634000001,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 23.40066441,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 17.422913947,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 382.51985342,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 53.152013451,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 15.612040113,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/create_group_wiki_page_spec.rb": 43.134573792,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/delete_group_wiki_page_spec.rb": 17.688236191,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/group_wiki/file_upload_group_wiki_page_spec.rb": 36.245175063,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/insights/default_insights_spec.rb": 36.127016912,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 29.981502699,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 20.511514982,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 28.127288041,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 33.431527318,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 38.178550758,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 83.637027736,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 31.767948444,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 24.656618797,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 44.522445772,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 35.332557938,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 30.182850649,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 45.154880479,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 40.772116388,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 74.761764619,
|
||||
"qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 25.870807747,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/approval_rules_spec.rb": 135.927114261,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 45.063333201,
|
||||
"qa/specs/features/ee/browser_ui/3_create/merge_request/generate_commit_message_spec.rb": 31.566704251,
|
||||
"qa/specs/features/ee/browser_ui/3_create/remote_development/workspace_actions_spec.rb": 543.233404997,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 59.357746585,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 36.869256928,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 246.545303253,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/group_file_template_spec.rb": 43.200725758,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 128.98384694,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 211.633649123,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/prevent_forking_outside_group_spec.rb": 41.111944978,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/project_templates_spec.rb": 176.516678502,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 44.548635509,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 74.217703857,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 475.40952402,
|
||||
"qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 262.966270802,
|
||||
"qa/specs/features/ee/browser_ui/3_create/web_ide/code_suggestions_in_web_ide_spec.rb": 110.59269366000001,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/multi-project_pipelines_spec.rb": 44.332298042,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/parent_child_pipelines_dependent_relationship_spec.rb": 94.640597731,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/pipeline_for_merged_result_spec.rb": 64.50677508,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 65.356541838,
|
||||
"qa/specs/features/ee/browser_ui/4_verify/root_cause_analysis_with_duo_chat_spec.rb": 33.753791004,
|
||||
"qa/specs/features/ee/browser_ui/8_monitor/incident_management/incident_quick_action_spec.rb": 22.417525672,
|
||||
"qa/specs/features/ee/browser_ui/9_tenant_scale/share_group_with_group_spec.rb": 21.968808136
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,13 +85,13 @@ namespace :ci do
|
|||
label: tests_from_mapping.nil? || tests_from_mapping.empty? ? 'non-selective' : 'selective',
|
||||
value: tests_from_mapping.nil? || tests_from_mapping.empty? ? 0 : tests_from_mapping.count
|
||||
}
|
||||
Tooling::Events::TrackPipelineEvents.new(
|
||||
event_name: "e2e_tests_selected_for_execution_gitlab_pipeline",
|
||||
properties: properties
|
||||
).send_event
|
||||
Tooling::Events::TrackPipelineEvents.new(logger: logger).send_event(
|
||||
"e2e_tests_selected_for_execution_gitlab_pipeline",
|
||||
**properties
|
||||
)
|
||||
rescue StandardError => e
|
||||
logger.warn("*** Error while creating pipeline with selected specs: #{e.backtrace} ****")
|
||||
logger.info("*** Running full suite ***")
|
||||
logger.warn("*** Error while creating pipeline with selected specs: #{e.backtrace} ***")
|
||||
logger.info("*** Defaulting to running full suite ***")
|
||||
QA::Tools::Ci::PipelineCreator.new([], **creator_args).create
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -16,13 +16,16 @@ function update_tests_metadata() {
|
|||
}
|
||||
|
||||
function retrieve_tests_mapping() {
|
||||
mkdir -p $(dirname "$RSPEC_PACKED_TESTS_MAPPING_PATH")
|
||||
local mapping_archive="${1:-$RSPEC_PACKED_TESTS_MAPPING_PATH}"
|
||||
local mapping_path="${2:-$RSPEC_TESTS_MAPPING_PATH}"
|
||||
|
||||
if [[ ! -f "${RSPEC_PACKED_TESTS_MAPPING_PATH}" ]]; then
|
||||
(curl --fail --location -o "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz" "https://gitlab-org.gitlab.io/gitlab/${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz" && gzip -d "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz") || echo "{}" > "${RSPEC_PACKED_TESTS_MAPPING_PATH}"
|
||||
mkdir -p $(dirname "$mapping_archive")
|
||||
|
||||
if [[ ! -f "${mapping_archive}" ]]; then
|
||||
(curl --fail --location -o "${mapping_archive}.gz" "https://gitlab-org.gitlab.io/gitlab/${mapping_archive}.gz" && gzip -d "${mapping_archive}.gz") || echo "{}" > "${mapping_archive}"
|
||||
fi
|
||||
|
||||
scripts/unpack-test-mapping "${RSPEC_PACKED_TESTS_MAPPING_PATH}" "${RSPEC_TESTS_MAPPING_PATH}"
|
||||
scripts/unpack-test-mapping "${mapping_archive}" "${mapping_path}"
|
||||
}
|
||||
|
||||
function retrieve_frontend_fixtures_mapping() {
|
||||
|
|
|
|||
|
|
@ -211,9 +211,8 @@ RSpec.describe UserSettings::PersonalAccessTokensController, feature_category: :
|
|||
end
|
||||
end
|
||||
|
||||
context 'with virtual_registry_maven feature flag disabled and dependency proxy disabled' do
|
||||
context 'with dependency proxy disabled' do
|
||||
before do
|
||||
stub_feature_flags(virtual_registry_maven: false)
|
||||
stub_config(dependency_proxy: { enabled: false })
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -115,7 +115,6 @@ RSpec.describe 'Database schema',
|
|||
deploy_keys_projects: %w[deploy_key_id],
|
||||
deployments: %w[deployable_id user_id],
|
||||
deployment_merge_requests: %w[project_id],
|
||||
description_versions: %w[namespace_id], # namespace_id will be added as an FK after backfill
|
||||
draft_notes: %w[discussion_id commit_id],
|
||||
epics: %w[updated_by_id last_edited_by_id state_id],
|
||||
events: %w[target_id],
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ describe('Environment Breadcrumb', () => {
|
|||
},
|
||||
];
|
||||
|
||||
const mountComponent = ($route) => {
|
||||
const mountComponent = ($route, props = {}) => {
|
||||
wrapper = mount(EnvironmentBreadcrumb, {
|
||||
mocks: {
|
||||
$route,
|
||||
|
|
@ -32,6 +32,7 @@ describe('Environment Breadcrumb', () => {
|
|||
stubs: {
|
||||
RouterLink: RouterLinkStub,
|
||||
},
|
||||
propsData: props,
|
||||
});
|
||||
};
|
||||
|
||||
|
|
@ -70,4 +71,22 @@ describe('Environment Breadcrumb', () => {
|
|||
expect(lastLink.text()).toContain(routes[1].params.podName);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when staticBreadcrumbs are provided', () => {
|
||||
beforeEach(() => {
|
||||
mountComponent(routes[0], {
|
||||
staticBreadcrumbs: {
|
||||
items: [{ text: 'static', href: '/static' }],
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('contains the static breadcrumbs', () => {
|
||||
const links = wrapper.findAll('a');
|
||||
|
||||
expect(links).toHaveLength(2);
|
||||
expect(links.at(0).text()).toContain('static');
|
||||
expect(links.at(1).text()).toContain(environmentName);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
require_migration!
|
||||
|
||||
RSpec.describe AddStatusWidgetDefinitionToIssues, :migration, feature_category: :team_planning do
|
||||
it_behaves_like 'migration that adds widgets to a work item type'
|
||||
end
|
||||
|
|
@ -64,11 +64,9 @@ RSpec.describe Admin::ImpersonationTokensController, :enable_admin_mode, feature
|
|||
end
|
||||
|
||||
describe '#index', :with_current_organization do
|
||||
let(:virtual_registry_maven_enabled) { true }
|
||||
let(:dependency_proxy_enabled) { true }
|
||||
|
||||
before do
|
||||
stub_feature_flags(virtual_registry_maven: virtual_registry_maven_enabled)
|
||||
stub_config(dependency_proxy: { enabled: dependency_proxy_enabled })
|
||||
|
||||
get admin_user_impersonation_tokens_path(user_id: user.username)
|
||||
|
|
@ -85,8 +83,7 @@ RSpec.describe Admin::ImpersonationTokensController, :enable_admin_mode, feature
|
|||
)
|
||||
end
|
||||
|
||||
context 'with virtual_registry_maven feature flag disabled and dependency proxy disabled' do
|
||||
let(:virtual_registry_maven_enabled) { false }
|
||||
context 'with dependency proxy disabled' do
|
||||
let(:dependency_proxy_enabled) { false }
|
||||
|
||||
it 'does not include the virtual registry scopes' do
|
||||
|
|
|
|||
|
|
@ -108,12 +108,8 @@ RSpec.describe Projects::Settings::AccessTokensController, feature_category: :sy
|
|||
describe '#index' do
|
||||
let_it_be(:resource_access_tokens) { create_list(:personal_access_token, 3, user: access_token_user) }
|
||||
|
||||
let(:virtual_registry_maven_enabled) { true }
|
||||
let(:dependency_proxy_enabled) { true }
|
||||
|
||||
before do
|
||||
stub_feature_flags(virtual_registry_maven: virtual_registry_maven_enabled)
|
||||
stub_config(dependency_proxy: { enabled: dependency_proxy_enabled })
|
||||
stub_config(dependency_proxy: { enabled: true })
|
||||
|
||||
get project_settings_access_tokens_path(resource)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,96 +1,111 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'gitlab/rspec/stub_env'
|
||||
require 'logger'
|
||||
|
||||
require_relative '../../../../../tooling/lib/tooling/events/track_pipeline_events'
|
||||
|
||||
RSpec.describe Tooling::Events::TrackPipelineEvents, feature_category: :tooling do
|
||||
include StubENV
|
||||
|
||||
subject(:send_event) { described_class.new(logger: logger).send_event(event_name, **additional_properties) }
|
||||
|
||||
let(:event_name) { "e2e_tests_selected_for_execution_gitlab_pipeline" }
|
||||
let(:additional_properties) { { label: 'label', property: 'property', value: 10 } }
|
||||
let(:additional_properties) { { label: 'label', value: 10, property: 'property' } }
|
||||
let(:access_token) { 'test-admin-token' }
|
||||
let(:logger) { instance_double(Logger, info: nil, error: nil) }
|
||||
let(:http_client) { instance_double(Net::HTTP, :use_ssl= => true, :request_post => response) }
|
||||
let(:response) { instance_double(Net::HTTPResponse, code: 200, body: '{}') }
|
||||
let(:http_client) { instance_double(Net::HTTP) }
|
||||
let(:http_request) { instance_double(Net::HTTP::Post) }
|
||||
let(:api_path) { "/api/v4/usage_data/track_event" }
|
||||
let(:headers) do
|
||||
{
|
||||
"PRIVATE-TOKEN" => access_token,
|
||||
"Content-Type" => "application/json"
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
stub_env("CI_INTERNAL_EVENTS_TOKEN", access_token)
|
||||
stub_env("CI_API_V4_URL", 'https://gitlab.com/api/v4')
|
||||
allow($stdout).to receive(:puts)
|
||||
stub_env("CI_SERVER_URL", "https://gitlab.com")
|
||||
stub_env("CI_PROJECT_NAMESPACE_ID", "1")
|
||||
stub_env("CI_PROJECT_ID", "2")
|
||||
end
|
||||
|
||||
describe '#send_event' do
|
||||
subject(:send_event) do
|
||||
described_class
|
||||
.new(event_name: event_name, properties: additional_properties).send_event
|
||||
end
|
||||
|
||||
context 'with API request' do
|
||||
let(:expected_request_body) do
|
||||
{
|
||||
event: event_name,
|
||||
send_to_snowplow: true,
|
||||
namespace_id: Tooling::Events::TrackPipelineEvents::NAMESPACE_ID,
|
||||
project_id: Tooling::Events::TrackPipelineEvents::PROJECT_ID,
|
||||
additional_properties: additional_properties
|
||||
}
|
||||
end
|
||||
|
||||
let(:uri_double) do
|
||||
instance_double(URI::HTTPS,
|
||||
host: 'gitlab.com',
|
||||
port: 443, path: 'api/v4/usage_data/track_event')
|
||||
end
|
||||
|
||||
before do
|
||||
allow(URI).to receive(:parse).and_return(uri_double)
|
||||
allow(Net::HTTP).to receive(:new).and_return(http_client)
|
||||
allow(http_client).to receive(:use_ssl=).and_return(true)
|
||||
allow(Net::HTTP::Post).to receive(:new).with(uri_double.path).and_return(http_request)
|
||||
allow(http_request).to receive(:body=)
|
||||
allow(http_request).to receive(:[]=)
|
||||
end
|
||||
|
||||
it "sets up correct http client" do
|
||||
send_event
|
||||
|
||||
expect(Net::HTTP).to have_received(:new).with('gitlab.com', 443)
|
||||
expect(http_client).to have_received(:use_ssl=).with(true)
|
||||
end
|
||||
|
||||
context 'when successful' do
|
||||
before do
|
||||
allow(http_client).to receive(:request).and_return(response)
|
||||
let(:expected_request_body) do
|
||||
{
|
||||
event: event_name,
|
||||
send_to_snowplow: true,
|
||||
namespace_id: 1,
|
||||
project_id: 2,
|
||||
additional_properties: additional_properties
|
||||
}.to_json
|
||||
end
|
||||
|
||||
it 'sends correct event parameters and success message' do
|
||||
send_event
|
||||
expect(http_request).to have_received(:body=).with(expected_request_body.to_json)
|
||||
expect($stdout).to have_received(:puts).with("Successfully sent data for event: #{event_name}")
|
||||
|
||||
expect(http_client).to have_received(:request_post).with(api_path, expected_request_body, headers)
|
||||
expect(logger).to have_received(:info).with("Successfully sent data for event")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when error response' do
|
||||
let(:error_response) do
|
||||
instance_double(Net::HTTPResponse, code: 422,
|
||||
body: '{"error":"Invalid parameters"}')
|
||||
end
|
||||
|
||||
before do
|
||||
allow(http_client).to receive(:request).and_return(error_response)
|
||||
let(:response) do
|
||||
instance_double(Net::HTTPResponse, code: 422, body: '{"error":"Invalid parameters"}')
|
||||
end
|
||||
|
||||
it 'checks for failed error message' do
|
||||
result = send_event
|
||||
expect($stdout).to have_received(:puts)
|
||||
.with("Failed event tracking: 422, body: {\"error\":\"Invalid parameters\"}")
|
||||
expect(result).to eq(error_response)
|
||||
expect(send_event).to eq(response)
|
||||
expect(logger).to have_received(:error).with("Failed event tracking: 422, body: #{response.body}")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when error is raised' do
|
||||
before do
|
||||
allow(http_client).to receive(:request_post).and_raise(StandardError, "some error")
|
||||
end
|
||||
|
||||
it 'logs the error' do
|
||||
send_event
|
||||
|
||||
expect(logger).to have_received(:error).with(
|
||||
"Exception when posting event #{event_name}, error: 'some error'"
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
context 'without logger configured' do
|
||||
let(:logger) { nil }
|
||||
|
||||
it 'logs to stdout' do
|
||||
expect { send_event }.to output(/Successfully sent data for event/).to_stdout
|
||||
end
|
||||
end
|
||||
|
||||
context 'when CI_INTERNAL_EVENTS_TOKEN is not set' do
|
||||
before do
|
||||
stub_env("CI_INTERNAL_EVENTS_TOKEN", nil)
|
||||
allow(http_client).to receive(:request).and_return(response)
|
||||
end
|
||||
|
||||
it 'prints an error message and returns' do
|
||||
expect do
|
||||
send_event
|
||||
end.to output("Error: Cannot send event '#{event_name}'. Missing project access token.\n").to_stderr
|
||||
send_event
|
||||
|
||||
expect(logger).to have_received(:error)
|
||||
.with("Error: Cannot send event '#{event_name}'. Missing project access token.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -11,10 +11,12 @@ RSpec.describe Tooling::Glci::FailureCategories::ReportJobFailure, feature_categ
|
|||
|
||||
let(:job_id) { '12345' }
|
||||
let(:failure_category) { 'test_failures' }
|
||||
let(:track_pipeline_events_instance) { instance_double(Tooling::Events::TrackPipelineEvents) }
|
||||
let(:track_pipeline_events_instance) { instance_double(Tooling::Events::TrackPipelineEvents, send_event: nil) }
|
||||
|
||||
before do
|
||||
stub_env('CI_JOB_ID', nil)
|
||||
|
||||
allow(Tooling::Events::TrackPipelineEvents).to receive(:new).and_return(track_pipeline_events_instance)
|
||||
end
|
||||
|
||||
describe '#initialize' do
|
||||
|
|
@ -42,36 +44,14 @@ RSpec.describe Tooling::Glci::FailureCategories::ReportJobFailure, feature_categ
|
|||
describe '#report' do
|
||||
subject(:reporter) { described_class.new(job_id: job_id, failure_category: failure_category) }
|
||||
|
||||
before do
|
||||
allow(Tooling::Events::TrackPipelineEvents).to receive(:new).and_return(track_pipeline_events_instance)
|
||||
allow(track_pipeline_events_instance).to receive(:send_event)
|
||||
end
|
||||
|
||||
it 'initializes TrackPipelineEvents with correct event name' do
|
||||
it 'sends event with correct attributes' do
|
||||
reporter.report
|
||||
|
||||
expect(Tooling::Events::TrackPipelineEvents).to have_received(:new).with(
|
||||
hash_including(event_name: "glci_job_failed")
|
||||
expect(track_pipeline_events_instance).to have_received(:send_event).with(
|
||||
"glci_job_failed",
|
||||
label: job_id,
|
||||
property: failure_category
|
||||
)
|
||||
end
|
||||
|
||||
it 'passes the correct properties structure to TrackPipelineEvents' do
|
||||
reporter.report
|
||||
|
||||
expect(Tooling::Events::TrackPipelineEvents).to have_received(:new).with(
|
||||
hash_including(
|
||||
properties: {
|
||||
label: job_id,
|
||||
property: failure_category
|
||||
}
|
||||
)
|
||||
)
|
||||
end
|
||||
|
||||
it 'calls send_event on the TrackPipelineEvents instance' do
|
||||
reporter.report
|
||||
|
||||
expect(track_pipeline_events_instance).to have_received(:send_event)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ RSpec.describe Tooling::PredictiveTests, feature_category: :tooling do
|
|||
let(:instance) { described_class.new }
|
||||
let(:matching_tests_initial_content) { 'initial_matching_spec' }
|
||||
let(:fixtures_mapping_content) { '{}' }
|
||||
let(:event_tracker) { instance_double(Tooling::Events::TrackPipelineEvents, send_event: nil) }
|
||||
|
||||
attr_accessor :changed_files, :changed_files_path, :fixtures_mapping,
|
||||
:matching_js_files, :matching_tests, :views_with_partials
|
||||
|
|
@ -62,6 +63,7 @@ RSpec.describe Tooling::PredictiveTests, feature_category: :tooling do
|
|||
File.write(fixtures_mapping.path, fixtures_mapping_content)
|
||||
|
||||
allow(Gitlab).to receive(:configure)
|
||||
allow(Tooling::Events::TrackPipelineEvents).to receive(:new).and_return(event_tracker)
|
||||
end
|
||||
|
||||
describe '#execute' do
|
||||
|
|
@ -136,6 +138,17 @@ RSpec.describe Tooling::PredictiveTests, feature_category: :tooling do
|
|||
expect { subject }.not_to change { File.read(fixtures_mapping.path) }
|
||||
expect { subject }.not_to change { File.read(matching_js_files.path) }
|
||||
end
|
||||
|
||||
it "sends number of tests selected via internal events" do
|
||||
subject
|
||||
|
||||
expect(event_tracker).to have_received(:send_event).with(
|
||||
"glci_predictive_tests_count",
|
||||
label: "test-count",
|
||||
value: File.read(matching_tests.path).lines.length,
|
||||
property: "described_class"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -7,69 +7,100 @@ require 'uri'
|
|||
module Tooling
|
||||
module Events
|
||||
class TrackPipelineEvents
|
||||
API_ENDPOINT = "#{ENV['CI_API_V4_URL']}/usage_data/track_event".freeze
|
||||
NAMESPACE_ID = 9970 # gitlab-org group
|
||||
PROJECT_ID = 278964 # gitlab-org/gitlab project
|
||||
|
||||
# Initializes a new event tracker
|
||||
#
|
||||
# @param [String] event_name The name of the event to track
|
||||
# @param [Hash] properties A hash of properties to include with the event
|
||||
# @option properties [String] :label String Event attribute
|
||||
# @option properties [Integer] :value Numeric Event attribute
|
||||
# @option properties [String] :property Another String attribute
|
||||
# @param [Hash] args Additional arguments to pass to the parent class
|
||||
def initialize(event_name:, properties: {}, **args)
|
||||
@event_name = event_name
|
||||
@properties = properties
|
||||
@args = args
|
||||
@api_token = ENV["CI_INTERNAL_EVENTS_TOKEN"]
|
||||
def initialize(api_token: ENV["CI_INTERNAL_EVENTS_TOKEN"], logger: nil)
|
||||
@api_token = api_token
|
||||
@logger = logger
|
||||
end
|
||||
|
||||
def send_event
|
||||
unless api_token
|
||||
warn "Error: Cannot send event '#{event_name}'. Missing project access token."
|
||||
return
|
||||
end
|
||||
# Send tracking event to usage_data API
|
||||
#
|
||||
# @param event_name [String] the name of the event to track
|
||||
# @param label [String] Event attribute
|
||||
# @param value [Number] Numeric event attribute
|
||||
# @param property [String] Optional event attribute
|
||||
# @return [Net::HTTPResponse]
|
||||
def send_event(event_name, label:, value: nil, property: nil)
|
||||
return log(:error, "Error: Cannot send event '#{event_name}'. Missing project access token.") unless api_token
|
||||
|
||||
uri = URI.parse(API_ENDPOINT)
|
||||
http = Net::HTTP.new(uri.host, uri.port)
|
||||
http.use_ssl = true
|
||||
body = {
|
||||
event: event_name,
|
||||
send_to_snowplow: true,
|
||||
namespace_id: namespace_id,
|
||||
project_id: project_id,
|
||||
additional_properties: {
|
||||
label:,
|
||||
value:,
|
||||
property:
|
||||
}.compact
|
||||
}.to_json
|
||||
|
||||
request = Net::HTTP::Post.new(uri.path)
|
||||
request.body = request_body.to_json
|
||||
headers.each { |key, value| request[key] = value }
|
||||
|
||||
response = http.request(request)
|
||||
log(:info, "Sending data for event: #{event_name}")
|
||||
response = client.request_post("/api/v4/usage_data/track_event", body, headers)
|
||||
|
||||
if response.code.to_i == 200
|
||||
puts "Successfully sent data for event: #{event_name}"
|
||||
log(:info, "Successfully sent data for event")
|
||||
else
|
||||
puts "Failed event tracking: #{response.code}, body: #{response.body}"
|
||||
log(:error, "Failed event tracking: #{response.code}, body: #{response.body}")
|
||||
end
|
||||
|
||||
response
|
||||
rescue StandardError => e
|
||||
log(:error, "Exception when posting event #{event_name}, error: '#{e.message}'")
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :event_name, :properties, :args, :api_token
|
||||
attr_reader :api_token, :logger
|
||||
|
||||
# Print to stdout/stderr or use logger if defined
|
||||
#
|
||||
# @param level [Symbol]
|
||||
# @param message [String]
|
||||
# @return [void]
|
||||
def log(level, message)
|
||||
return logger.public_send(level, message) if logger.respond_to?(level) # rubocop:disable GitlabSecurity/PublicSend -- CI usage only
|
||||
|
||||
%i[warn error].include?(level) ? warn(message) : puts(message)
|
||||
end
|
||||
|
||||
# Http client
|
||||
#
|
||||
# @return [Net::HTTP]
|
||||
def client
|
||||
@client ||= Net::HTTP.new(uri.host, uri.port).tap do |http|
|
||||
http.use_ssl = true
|
||||
end
|
||||
end
|
||||
|
||||
# CI server uri
|
||||
#
|
||||
# @return [Uri]
|
||||
def uri
|
||||
@uri ||= URI.parse(ENV['CI_SERVER_URL'])
|
||||
end
|
||||
|
||||
# Default request headers
|
||||
#
|
||||
# @return [Hash]
|
||||
def headers
|
||||
{
|
||||
@headers ||= {
|
||||
"PRIVATE-TOKEN" => api_token,
|
||||
"Content-Type" => "application/json"
|
||||
}
|
||||
end
|
||||
|
||||
def request_body
|
||||
{
|
||||
event: event_name,
|
||||
send_to_snowplow: true,
|
||||
namespace_id: NAMESPACE_ID,
|
||||
project_id: PROJECT_ID,
|
||||
additional_properties: properties
|
||||
}
|
||||
# Project namespace ID
|
||||
#
|
||||
# @return [Integer]
|
||||
def namespace_id
|
||||
@namespace_id ||= ENV["CI_PROJECT_NAMESPACE_ID"].to_i
|
||||
end
|
||||
|
||||
# Project ID
|
||||
#
|
||||
# @return [Integer]
|
||||
def project_id
|
||||
@project_id ||= ENV["CI_PROJECT_ID"].to_i
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -22,13 +22,11 @@ module Tooling
|
|||
end
|
||||
|
||||
def report
|
||||
Tooling::Events::TrackPipelineEvents.new(
|
||||
event_name: "glci_job_failed",
|
||||
properties: {
|
||||
label: @job_id,
|
||||
property: @failure_category
|
||||
}
|
||||
).send_event
|
||||
Tooling::Events::TrackPipelineEvents.new.send_event(
|
||||
"glci_job_failed",
|
||||
label: @job_id,
|
||||
property: @failure_category
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ require_relative 'mappings/js_to_system_specs_mappings'
|
|||
require_relative 'mappings/partial_to_views_mappings'
|
||||
require_relative 'mappings/view_to_js_mappings'
|
||||
require_relative 'mappings/view_to_system_specs_mappings'
|
||||
require_relative 'events/track_pipeline_events'
|
||||
|
||||
module Tooling
|
||||
class PredictiveTests
|
||||
|
|
@ -30,6 +31,7 @@ module Tooling
|
|||
@rspec_views_including_partials_path = ENV['RSPEC_VIEWS_INCLUDING_PARTIALS_PATH']
|
||||
@frontend_fixtures_mapping_path = ENV['FRONTEND_FIXTURES_MAPPING_PATH']
|
||||
@rspec_matching_js_files_path = ENV['RSPEC_MATCHING_JS_FILES_PATH']
|
||||
@predictive_tests_strategy = ENV['PREDICTIVE_TESTS_STRATEGY'] || 'described_class'
|
||||
end
|
||||
|
||||
def execute
|
||||
|
|
@ -52,11 +54,28 @@ module Tooling
|
|||
frontend_fixtures_mapping_pathname: frontend_fixtures_mapping_path
|
||||
).execute
|
||||
Tooling::Mappings::ViewToJsMappings.new(rspec_changed_files_path, rspec_matching_js_files_path).execute
|
||||
|
||||
record_selected_test_count
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :rspec_changed_files_path, :rspec_matching_tests_path, :rspec_views_including_partials_path,
|
||||
:frontend_fixtures_mapping_path, :rspec_matching_js_files_path
|
||||
attr_reader :rspec_changed_files_path,
|
||||
:rspec_matching_tests_path,
|
||||
:rspec_views_including_partials_path,
|
||||
:frontend_fixtures_mapping_path,
|
||||
:rspec_matching_js_files_path,
|
||||
:predictive_tests_strategy
|
||||
|
||||
def record_selected_test_count
|
||||
test_count = File.read(rspec_matching_tests_path).lines.length
|
||||
|
||||
Tooling::Events::TrackPipelineEvents.new.send_event(
|
||||
"glci_predictive_tests_count",
|
||||
label: "test-count",
|
||||
value: test_count,
|
||||
property: predictive_tests_strategy
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue