summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-03-07 06:07:55 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-03-07 06:07:55 +0000
commited922e61f47716d82396490b0a19d794c997b9c5 (patch)
tree3606ac994c5ddb414194292b38bd234f9e519d12
parentd0db90848503511d758f29c16a93a1e2b1c3da47 (diff)
downloadgitlab-ce-ed922e61f47716d82396490b0a19d794c997b9c5.tar.gz
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--.gitlab/ci/rails.gitlab-ci.yml12
-rw-r--r--.gitlab/issue_templates/Geo Replicate a new Git repository type.md84
-rw-r--r--.gitlab/issue_templates/Geo Replicate a new blob type.md74
-rw-r--r--GITLAB_SHELL_VERSION2
-rw-r--r--app/controllers/concerns/product_analytics_tracking.rb5
-rw-r--r--app/helpers/projects_helper.rb8
-rw-r--r--app/views/projects/buttons/_clone.html.haml8
-rw-r--r--app/views/shared/_mobile_clone_panel.html.haml4
-rw-r--r--config/events/1676085590_Admin__AuditLogsController_visit_instance_compliance_audit_events.yml26
-rw-r--r--config/events/1676085625_Admin__CredentialsController_visit_compliance_credential_inventory.yml26
-rw-r--r--config/events/1676085737_Groups__AuditEventsController_visit_group_compliance_audit_events.yml26
-rw-r--r--config/events/1676085856_API__AuditEvents_admin_audit_event_request.yml26
-rw-r--r--config/events/1676085891_EE__API__Groups_group_audit_event_request.yml26
-rw-r--r--config/events/1676085919_EE__API__Projects_project_audit_event_request.yml26
-rw-r--r--config/events/202109151015_notes__create_service_execute.yml2
-rw-r--r--config/events/20211215022206_default_review_app_open_review_app.yml2
-rw-r--r--config/feature_flags/development/artifacts_management_page.yml2
-rw-r--r--config/feature_flags/development/counter_attribute_db_lease_for_update.yml2
-rw-r--r--config/feature_flags/development/mr_show_reports_immediately.yml2
-rw-r--r--config/feature_flags/development/project_statistics_bulk_increment.yml2
-rw-r--r--config/feature_flags/development/s3_multithreaded_uploads.yml2
-rw-r--r--config/feature_flags/ops/ci_build_dependencies_artifacts_logger.yml2
-rw-r--r--config/feature_flags/ops/projects_build_artifacts_size_refresh.yml2
-rw-r--r--config/feature_flags/ops/projects_build_artifacts_size_refresh_high.yml2
-rw-r--r--config/feature_flags/ops/projects_build_artifacts_size_refresh_medium.yml2
-rw-r--r--config/feature_flags/ops/split_log_bulk_increment_counter.yml2
-rw-r--r--config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml2
-rw-r--r--config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml2
-rw-r--r--config/metrics/counts_7d/20210216182134_i_testing_test_case_parsed_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210409100451_users_expanding_testing_code_quality_report_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210409100628_users_expanding_testing_accessibility_report_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20210413205507_i_testing_summary_widget_total_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20221101190913_i_testing_coverage_report_uploaded_weekly.yml2
-rw-r--r--config/metrics/counts_7d/20230112174745_i_testing_active_user_weekly.yml2
-rw-r--r--lib/api/unleash.rb4
-rw-r--r--lib/gitlab/database/partitioning.rb3
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/pipeline/locked_artifacts_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb2
-rw-r--r--qa/qa/specs/features/browser_ui/4_verify/testing/view_code_coverage_spec.rb2
-rw-r--r--spec/features/dashboard/projects_spec.rb19
-rw-r--r--spec/helpers/projects_helper_spec.rb20
-rw-r--r--spec/lib/gitlab/database/partitioning_spec.rb11
-rw-r--r--spec/requests/api/unleash_spec.rb8
-rw-r--r--workhorse/go.mod2
-rw-r--r--workhorse/go.sum4
51 files changed, 337 insertions, 145 deletions
diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml
index ee55239fb4c..ba42bbc9507 100644
--- a/.gitlab/ci/rails.gitlab-ci.yml
+++ b/.gitlab/ci/rails.gitlab-ci.yml
@@ -108,13 +108,13 @@ rspec background_migration pg12 single-db:
rspec migration pg12 single-db-ci-connection:
extends:
- rspec migration pg12
- - .single-db-rspec
+ - .single-db-ci-connection-rspec
- .rails:rules:single-db-ci-connection
rspec background_migration pg12 single-db-ci-connection:
extends:
- rspec background_migration pg12
- - .single-db-rspec
+ - .single-db-ci-connection-rspec
- .rails:rules:single-db-ci-connection
rspec migration pg12 praefect:
@@ -443,13 +443,13 @@ rspec background_migration pg12-as-if-foss single-db:
rspec migration pg12-as-if-foss single-db-ci-connection:
extends:
- rspec migration pg12-as-if-foss
- - .single-db-rspec
+ - .single-db-ci-connection-rspec
- .rails:rules:single-db-ci-connection
rspec background_migration pg12-as-if-foss single-db-ci-connection:
extends:
- rspec background_migration pg12-as-if-foss
- - .single-db-rspec
+ - .single-db-ci-connection-rspec
- .rails:rules:single-db-ci-connection
rspec unit pg12-as-if-foss:
@@ -547,13 +547,13 @@ rspec-ee background_migration pg12 single-db:
rspec-ee migration pg12 single-db-ci-connection:
extends:
- rspec-ee migration pg12
- - .single-db-rspec
+ - .single-db-ci-connection-rspec
- .rails:rules:single-db-ci-connection
rspec-ee background_migration pg12 single-db-ci-connection:
extends:
- rspec-ee background_migration pg12
- - .single-db-rspec
+ - .single-db-ci-connection-rspec
- .rails:rules:single-db-ci-connection
rspec-ee migration pg12 praefect:
diff --git a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md
index 5ccfe048ff5..c33e5f8eb68 100644
--- a/.gitlab/issue_templates/Geo Replicate a new Git repository type.md
+++ b/.gitlab/issue_templates/Geo Replicate a new Git repository type.md
@@ -100,7 +100,7 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org
- [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md).
-- [ ] Add the new table to the [database dictionary](database_dictionary.md) defined in [`ee/db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/db/docs):
+- [ ] Add the new table to the [database dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/database/database_dictionary.md) defined in [`ee/db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/db/docs):
```yaml
table_name: cool_widget_registry
@@ -179,17 +179,20 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
- [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md).
-- [ ] Add the new table to the [database dictionary](database_dictionary.md) defined in [`db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/db/docs):
+- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method)
+
+- [ ] Add the new table to the [database dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/database/database_dictionary.md) defined in [`db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/db/docs):
```yaml
+ ---
table_name: cool_widget_states
- description: Description example
- introduced_by_url: Merge request link
- milestone: Milestone example
+ description: Separate table for cool widget verification states
+ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX
+ milestone: 'XX.Y'
feature_categories:
- - Feature category example
+ - geo_replication
classes:
- - Class example
+ - Geo::CoolWidgetState
gitlab_schema: gitlab_main
```
@@ -201,20 +204,6 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
- [ ] Be sure to commit the relevant changes in `db/structure.sql` and the file under `db/schema_migrations`
-- [ ] Add an entry for the state table in `db/docs/cool_widget_states.yml`
-
- ```yaml
- ---
- table_name: cool_widget_states
- classes:
- - Geo::CoolWidgetState
- feature_categories:
- - geo_replication
- description: Separate table for cool widget verification states
- introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX
- milestone: 'XX.Y'
- ```
-
That's all of the required database changes.
### Implement Geo support of Cool Widgets behind a feature flag
@@ -250,17 +239,26 @@ That's all of the required database changes.
after_save :save_verification_details
- scope :with_verification_state, ->(state) { joins(:cool_widget_state).where(cool_widget_states: { verification_state: verification_state_value(state) }) }
- scope :checksummed, -> { joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil } ) }
- scope :not_checksummed, -> { joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil } ) }
-
- scope :available_verifiables, -> { joins(:cool_widget_state) }
-
# Override the `all` default if not all records can be replicated. For an
# example of an existing Model that needs to do this, see
# `EE::MergeRequestDiff`.
# scope :available_replicables, -> { all }
+ scope :available_verifiables, -> { joins(:cool_widget_state) }
+
+ scope :checksummed, -> {
+ joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil })
+ }
+
+ scope :not_checksummed, -> {
+ joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil })
+ }
+
+ scope :with_verification_state, ->(state) {
+ joins(:cool_widget_state)
+ .where(cool_widget_states: { verification_state: verification_state_value(state) })
+ }
+
def verification_state_object
cool_widget_state
end
@@ -271,7 +269,8 @@ That's all of the required database changes.
...
# @param primary_key_in [Range, CoolWidget] arg to pass to primary_key_in scope
- # @return [ActiveRecord::Relation<CoolWidget>] everything that should be synced to this node, restricted by primary key
+ # @return [ActiveRecord::Relation<CoolWidget>] everything that should be synced
+ # to this node, restricted by primary key
def replicables_for_current_secondary(primary_key_in)
# This issue template does not help you write this method.
#
@@ -279,7 +278,8 @@ That's all of the required database changes.
# we want to know which records to replicate. This is not easy to automate
# because for example:
#
- # * The "selective sync" feature allows admins to choose which namespaces # to replicate, per secondary site. Most Models are scoped to a
+ # * The "selective sync" feature allows admins to choose which namespaces
+ # to replicate, per secondary site. Most Models are scoped to a
# namespace, but the nature of the relationship to a namespace varies
# between Models.
# * The "selective sync" feature allows admins to choose which shards to
@@ -318,8 +318,8 @@ That's all of the required database changes.
```ruby
include_examples 'a replicable model with a separate table for verification state' do
- let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is included in `available_verifiables`
- let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `available_verifiables`
+ let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is in `Geo::ReplicableModel.verifiables` scope
+ let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `Geo::ReplicableModel.verifiables` scope
end
```
@@ -337,10 +337,6 @@ That's all of the required database changes.
::CoolWidget
end
- def repository
- model_record.repository
- end
-
def self.git_access_class
::Gitlab::GitAccessCoolWidget
end
@@ -367,6 +363,10 @@ That's all of the required database changes.
# (see `RepositoryReplicatorStrategy#before_housekeeping`)
false
end
+
+ def repository
+ model_record.repository
+ end
end
end
```
@@ -416,7 +416,7 @@ That's all of the required database changes.
require 'spec_helper'
- RSpec.describe Geo::CoolWidgetReplicator do
+ RSpec.describe Geo::CoolWidgetReplicator, feature_category: :geo_replication do
let(:model_record) { build(:cool_widget) }
include_examples 'a repository replicator'
@@ -490,7 +490,7 @@ That's all of the required database changes.
require 'spec_helper'
- RSpec.describe Geo::CoolWidgetRegistry, :geo, type: :model do
+ RSpec.describe Geo::CoolWidgetRegistry, :geo, type: :model, feature_category: :geo_replication do
let_it_be(:registry) { create(:geo_cool_widget_registry) }
specify 'factory is valid' do
@@ -567,7 +567,7 @@ That's all of the required database changes.
end
```
-- [ ] Add `[:cool_widget, :remote_store]` and `[:geo_cool_widget_state, any]` to `skipped` in `spec/models/factories_spec.rb`
+- [ ] Add `[:geo_cool_widget_state, any]` to `skipped` in `spec/models/factories_spec.rb`
#### Step 2. Implement metrics gathering
@@ -602,7 +602,7 @@ Metrics are gathered by `Geo::MetricsUpdateWorker`, persisted in `GeoNodeStatus`
| `geo_cool_widgets_verification_failed` | Gauge | XX.Y | Number of Cool Widgets that failed verification on secondary | `url` |
```
-Cool Widget replication and verification metrics should now be available in the API, the `Admin > Geo > Nodes` view, and Prometheus.
+Cool Widget replication and verification metrics should now be available in the API, the `Admin > Geo > Sites` view, and Prometheus.
#### Step 3. Implement the GraphQL API
@@ -643,7 +643,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir
require 'spec_helper'
- RSpec.describe Resolvers::Geo::CoolWidgetRegistriesResolver do
+ RSpec.describe Resolvers::Geo::CoolWidgetRegistriesResolver, feature_category: :geo_replication do
it_behaves_like 'a Geo registries resolver', :geo_cool_widget_registry
end
```
@@ -667,7 +667,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir
require 'spec_helper'
- RSpec.describe Geo::CoolWidgetRegistryFinder do
+ RSpec.describe Geo::CoolWidgetRegistryFinder, feature_category: :geo_replication do
it_behaves_like 'a framework registry finder', :geo_cool_widget_registry
end
```
@@ -701,7 +701,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir
require 'spec_helper'
- RSpec.describe GitlabSchema.types['CoolWidgetRegistry'] do
+ RSpec.describe GitlabSchema.types['CoolWidgetRegistry'], feature_category: :geo_replication do
it_behaves_like 'a Geo registry type'
it 'has the expected fields (other than those included in RegistryType)' do
diff --git a/.gitlab/issue_templates/Geo Replicate a new blob type.md b/.gitlab/issue_templates/Geo Replicate a new blob type.md
index ae4dfdd839b..0c5dbaebacf 100644
--- a/.gitlab/issue_templates/Geo Replicate a new blob type.md
+++ b/.gitlab/issue_templates/Geo Replicate a new blob type.md
@@ -100,7 +100,7 @@ Geo secondary sites have a [Geo tracking database](https://gitlab.com/gitlab-org
- [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md).
-- [ ] Add the new table to the [database dictionary](database_dictionary.md) defined in [`ee/db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/db/docs):
+- [ ] Add the new table to the [database dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/database/database_dictionary.md) defined in [`ee/db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/ee/db/docs):
```yaml
table_name: cool_widget_registry
@@ -185,17 +185,20 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
- [ ] If deviating from the above example, then be sure to order columns according to [our guidelines](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/ordering_table_columns.md).
-- [ ] Add the new table to the database dictionary defined in [`db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/db/docs):
+- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method)
+
+- [ ] Add the new table to the [database dictionary](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/database/database_dictionary.md) defined in [`db/docs/`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/db/docs):
```yaml
+ ---
table_name: cool_widget_states
- description: Description example
- introduced_by_url: Merge request link
- milestone: Milestone example
+ description: Separate table for cool widget verification states
+ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX
+ milestone: 'XX.Y'
feature_categories:
- - Feature category example
+ - geo_replication
classes:
- - Class example
+ - Geo::CoolWidgetState
gitlab_schema: gitlab_main
```
@@ -205,24 +208,8 @@ The Geo primary site needs to checksum every replicable so secondaries can verif
bin/rake db:migrate
```
-- [ ] If `cool_widgets` is a high-traffic table, follow [the database documentation to use `with_lock_retries`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/migration_style_guide.md#when-to-use-the-helper-method)
-
- [ ] Be sure to commit the relevant changes in `db/structure.sql` and the file under `db/schema_migrations`
-- [ ] Add an entry for the state table in `db/docs/cool_widget_states.yml`
-
- ```yaml
- ---
- table_name: cool_widget_states
- classes:
- - Geo::CoolWidgetState
- feature_categories:
- - geo_replication
- description: Separate table for cool widget verification states
- introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/XXXXX
- milestone: 'XX.Y'
- ```
-
That's all of the required database changes.
### Implement Geo support of Cool Widgets behind a feature flag
@@ -258,17 +245,26 @@ That's all of the required database changes.
after_save :save_verification_details
- scope :with_verification_state, ->(state) { joins(:cool_widget_state).where(cool_widget_states: { verification_state: verification_state_value(state) }) }
- scope :checksummed, -> { joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil } ) }
- scope :not_checksummed, -> { joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil } ) }
-
- scope :available_verifiables, -> { joins(:cool_widget_state) }
-
# Override the `all` default if not all records can be replicated. For an
# example of an existing Model that needs to do this, see
# `EE::MergeRequestDiff`.
# scope :available_replicables, -> { all }
+ scope :available_verifiables, -> { joins(:cool_widget_state) }
+
+ scope :checksummed, -> {
+ joins(:cool_widget_state).where.not(cool_widget_states: { verification_checksum: nil })
+ }
+
+ scope :not_checksummed, -> {
+ joins(:cool_widget_state).where(cool_widget_states: { verification_checksum: nil })
+ }
+
+ scope :with_verification_state, ->(state) {
+ joins(:cool_widget_state)
+ .where(cool_widget_states: { verification_state: verification_state_value(state) })
+ }
+
def verification_state_object
cool_widget_state
end
@@ -279,7 +275,8 @@ That's all of the required database changes.
...
# @param primary_key_in [Range, CoolWidget] arg to pass to primary_key_in scope
- # @return [ActiveRecord::Relation<CoolWidget>] everything that should be synced to this node, restricted by primary key
+ # @return [ActiveRecord::Relation<CoolWidget>] everything that should be synced
+ # to this node, restricted by primary key
def replicables_for_current_secondary(primary_key_in)
# This issue template does not help you write this method.
#
@@ -321,8 +318,8 @@ That's all of the required database changes.
```ruby
include_examples 'a replicable model with a separate table for verification state' do
- let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is included in `available_verifiables`
- let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `available_verifiables`
+ let(:verifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is in `Geo::ReplicableModel.verifiables` scope
+ let(:unverifiable_model_record) { build(:cool_widget) } # add extra params if needed to make sure the record is NOT included in `Geo::ReplicableModel.verifiables` scope
end
```
@@ -352,7 +349,6 @@ That's all of the required database changes.
# (see `VerifiableReplicator.verification_enabled?`)
true
end
-
end
end
```
@@ -380,7 +376,7 @@ That's all of the required database changes.
require 'spec_helper'
- RSpec.describe Geo::CoolWidgetReplicator do
+ RSpec.describe Geo::CoolWidgetReplicator, feature_category: :geo_replication do
let(:model_record) { build(:cool_widget) }
include_examples 'a blob replicator'
@@ -454,7 +450,7 @@ That's all of the required database changes.
require 'spec_helper'
- RSpec.describe Geo::CoolWidgetRegistry, :geo, type: :model do
+ RSpec.describe Geo::CoolWidgetRegistry, :geo, type: :model, feature_category: :geo_replication do
let_it_be(:registry) { create(:geo_cool_widget_registry) }
specify 'factory is valid' do
@@ -574,7 +570,7 @@ Metrics are gathered by `Geo::MetricsUpdateWorker`, persisted in `GeoNodeStatus`
| `geo_cool_widgets_verification_failed` | Gauge | XX.Y | Number of Cool Widgets that failed verification on secondary | `url` |
```
- Cool Widget replication and verification metrics should now be available in the API, the `Admin > Geo > Nodes` view, and Prometheus.
+ Cool Widget replication and verification metrics should now be available in the API, the `Admin > Geo > Sites` view, and Prometheus.
#### Step 3. Implement the GraphQL API
@@ -615,7 +611,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir
require 'spec_helper'
- RSpec.describe Resolvers::Geo::CoolWidgetRegistriesResolver do
+ RSpec.describe Resolvers::Geo::CoolWidgetRegistriesResolver, feature_category: :geo_replication do
it_behaves_like 'a Geo registries resolver', :geo_cool_widget_registry
end
```
@@ -639,7 +635,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir
require 'spec_helper'
- RSpec.describe Geo::CoolWidgetRegistryFinder do
+ RSpec.describe Geo::CoolWidgetRegistryFinder, feature_category: :geo_replication do
it_behaves_like 'a framework registry finder', :geo_cool_widget_registry
end
```
@@ -673,7 +669,7 @@ The GraphQL API is used by `Admin > Geo > Replication Details` views, and is dir
require 'spec_helper'
- RSpec.describe GitlabSchema.types['CoolWidgetRegistry'] do
+ RSpec.describe GitlabSchema.types['CoolWidgetRegistry'], feature_category: :geo_replication do
it_behaves_like 'a Geo registry type'
it 'has the expected fields (other than those included in RegistryType)' do
diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION
index 62df50f1eef..c2324e8e468 100644
--- a/GITLAB_SHELL_VERSION
+++ b/GITLAB_SHELL_VERSION
@@ -1 +1 @@
-14.17.0
+14.18.0
diff --git a/app/controllers/concerns/product_analytics_tracking.rb b/app/controllers/concerns/product_analytics_tracking.rb
index ec687533cc2..6a286a1ca26 100644
--- a/app/controllers/concerns/product_analytics_tracking.rb
+++ b/app/controllers/concerns/product_analytics_tracking.rb
@@ -91,7 +91,10 @@ module ProductAnalyticsTracking
events_to_ff = {
g_edit_by_sfe: :_phase4,
- g_compliance_dashboard: :_phase4
+ g_compliance_dashboard: :_phase4,
+ g_compliance_audit_events: :_phase4,
+ i_compliance_audit_events: :_phase4,
+ i_compliance_credential_inventory: :_phase4
}
Feature.enabled?("route_hll_to_snowplow#{events_to_ff[event.to_sym]}", tracking_namespace_source)
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index e312a458399..74e32e00bbf 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -502,6 +502,14 @@ module ProjectsHelper
false
end
+ def http_clone_url_to_repo(project)
+ project.http_url_to_repo
+ end
+
+ def ssh_clone_url_to_repo(project)
+ project.ssh_url_to_repo
+ end
+
private
def localized_access_names
diff --git a/app/views/projects/buttons/_clone.html.haml b/app/views/projects/buttons/_clone.html.haml
index a8a911adb7d..ab026d9c6ac 100644
--- a/app/views/projects/buttons/_clone.html.haml
+++ b/app/views/projects/buttons/_clone.html.haml
@@ -13,7 +13,7 @@
%label.label-bold
= _('Clone with SSH')
.input-group.btn-group
- = text_field_tag :ssh_project_clone, project.ssh_url_to_repo, class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') }, data: { qa_selector: 'ssh_clone_url_content' }
+ = text_field_tag :ssh_project_clone, ssh_clone_url_to_repo(project), class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') }, data: { qa_selector: 'ssh_clone_url_content' }
.input-group-append
= clipboard_button(target: '#ssh_project_clone', title: _("Copy URL"), class: "input-group-text gl-button btn btn-icon btn-default")
= render_if_exists 'projects/buttons/geo'
@@ -22,7 +22,7 @@
%label.label-bold
= _('Clone with %{http_label}') % { http_label: gitlab_config.protocol.upcase }
.input-group.btn-group
- = text_field_tag :http_project_clone, project.http_url_to_repo, class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') }, data: { qa_selector: 'http_clone_url_content' }
+ = text_field_tag :http_project_clone, http_clone_url_to_repo(project), class: "js-select-on-focus form-control", readonly: true, aria: { label: _('Repository clone URL') }, data: { qa_selector: 'http_clone_url_content' }
.input-group-append
= clipboard_button(target: '#http_project_clone', title: _("Copy URL"), class: "input-group-text gl-button btn btn-icon btn-default")
= render_if_exists 'projects/buttons/geo'
@@ -32,12 +32,12 @@
%label.label-bold{ class: 'gl-px-4!' }
= _('Open in your IDE')
- if ssh_enabled?
- - escaped_ssh_url_to_repo = CGI.escape(project.ssh_url_to_repo)
+ - escaped_ssh_url_to_repo = CGI.escape(ssh_clone_url_to_repo(project))
%a.dropdown-item.open-with-link{ href: 'vscode://vscode.git/clone?url=' + escaped_ssh_url_to_repo }
.gl-dropdown-item-text-wrapper
= _('Visual Studio Code (SSH)')
- if http_enabled?
- - escaped_http_url_to_repo = CGI.escape(project.http_url_to_repo)
+ - escaped_http_url_to_repo = CGI.escape(http_clone_url_to_repo(project))
%a.dropdown-item.open-with-link{ href: 'vscode://vscode.git/clone?url=' + escaped_http_url_to_repo }
.gl-dropdown-item-text-wrapper
= _('Visual Studio Code (HTTPS)')
diff --git a/app/views/shared/_mobile_clone_panel.html.haml b/app/views/shared/_mobile_clone_panel.html.haml
index 8b7ef838d2b..aa3043b8fd6 100644
--- a/app/views/shared/_mobile_clone_panel.html.haml
+++ b/app/views/shared/_mobile_clone_panel.html.haml
@@ -9,8 +9,8 @@
%ul.dropdown-menu.dropdown-menu-selectable.dropdown-menu-right.clone-options-dropdown{ data: { dropdown: true } }
- if ssh_enabled?
%li
- = dropdown_item_with_description(ssh_copy_label, project.ssh_url_to_repo, href: project.ssh_url_to_repo, data: { clone_type: 'ssh' }, default: true)
+ = dropdown_item_with_description(ssh_copy_label, ssh_clone_url_to_repo(project), href: ssh_clone_url_to_repo(project), data: { clone_type: 'ssh' }, default: true)
- if http_enabled?
%li
- = dropdown_item_with_description(http_copy_label, project.http_url_to_repo, href: project.http_url_to_repo, data: { clone_type: 'http' })
+ = dropdown_item_with_description(http_copy_label, http_clone_url_to_repo(project), href: http_clone_url_to_repo(project), data: { clone_type: 'http' })
= render_if_exists 'shared/mobile_kerberos_clone'
diff --git a/config/events/1676085590_Admin__AuditLogsController_visit_instance_compliance_audit_events.yml b/config/events/1676085590_Admin__AuditLogsController_visit_instance_compliance_audit_events.yml
new file mode 100644
index 00000000000..28c80a4cbc7
--- /dev/null
+++ b/config/events/1676085590_Admin__AuditLogsController_visit_instance_compliance_audit_events.yml
@@ -0,0 +1,26 @@
+---
+description: Mirrored `i_compliance_audit_events` Redis HLL metric as a Snowplow event. Emitted when audit logs page is visited in Admin area.
+category: Admin::AuditLogsController
+action: visit_instance_compliance_audit_events
+label_description: Mirrored Service Ping metric key path
+property_description: Mirrored Service Ping Redis HLL event name
+value_description:
+extra_properties:
+identifiers:
+#- project
+- user
+#- namespace
+product_section: dev
+product_stage: manage
+product_group: compliance
+product_category: compliance_management
+milestone: "15.9"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107120
+distributions:
+#- ce
+- ee
+tiers:
+#- free
+- premium
+- ultimate
+
diff --git a/config/events/1676085625_Admin__CredentialsController_visit_compliance_credential_inventory.yml b/config/events/1676085625_Admin__CredentialsController_visit_compliance_credential_inventory.yml
new file mode 100644
index 00000000000..ce1000556a7
--- /dev/null
+++ b/config/events/1676085625_Admin__CredentialsController_visit_compliance_credential_inventory.yml
@@ -0,0 +1,26 @@
+---
+description: Mirrored `i_compliance_credential_inventory` Redis HLL metric as a Snowplow event. Emitted when credentials page is visited in Admin area.
+category: Admin::CredentialsController
+action: visit_compliance_credential_inventory
+label_description: Mirrored Service Ping metric key path
+property_description: Mirrored Service Ping Redis HLL event name
+value_description:
+extra_properties:
+identifiers:
+#- project
+- user
+#- namespace
+product_section: dev
+product_stage: manage
+product_group: compliance
+product_category: compliance_management
+milestone: "15.9"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107120
+distributions:
+#- ce
+- ee
+tiers:
+#- free
+- premium
+- ultimate
+
diff --git a/config/events/1676085737_Groups__AuditEventsController_visit_group_compliance_audit_events.yml b/config/events/1676085737_Groups__AuditEventsController_visit_group_compliance_audit_events.yml
new file mode 100644
index 00000000000..c2b8dd03ac2
--- /dev/null
+++ b/config/events/1676085737_Groups__AuditEventsController_visit_group_compliance_audit_events.yml
@@ -0,0 +1,26 @@
+---
+description: Mirrored `g_compliance_audit_events` Redis HLL metric as a Snowplow event. Emitted when group audit events page is visited.
+category: Groups::AuditEventsController
+action: visit_group_compliance_audit_events
+label_description: Mirrored Service Ping metric key path
+property_description: Mirrored Service Ping Redis HLL event name
+value_description:
+extra_properties:
+identifiers:
+#- project
+- user
+- namespace
+product_section: dev
+product_stage: manage
+product_group: compliance
+product_category: compliance_management
+milestone: "15.9"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107120
+distributions:
+#- ce
+- ee
+tiers:
+#- free
+- premium
+- ultimate
+
diff --git a/config/events/1676085856_API__AuditEvents_admin_audit_event_request.yml b/config/events/1676085856_API__AuditEvents_admin_audit_event_request.yml
new file mode 100644
index 00000000000..4a0db5f83a8
--- /dev/null
+++ b/config/events/1676085856_API__AuditEvents_admin_audit_event_request.yml
@@ -0,0 +1,26 @@
+---
+description: Mirrored `a_compliance_audit_events_api` Redis HLL metric as a Snowplow event. Emitted when Instance Audit Events REST API endpoint is called.
+category: API::AuditEvents
+action: admin_audit_event_request
+label_description: Mirrored Service Ping metric key path
+property_description: Mirrored Service Ping Redis HLL event name
+value_description:
+extra_properties:
+identifiers:
+#- project
+- user
+#- namespace
+product_section: dev
+product_stage: manage
+product_group: compliance
+product_category: compliance_management
+milestone: "15.9"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107120
+distributions:
+#- ce
+- ee
+tiers:
+#- free
+- premium
+- ultimate
+
diff --git a/config/events/1676085891_EE__API__Groups_group_audit_event_request.yml b/config/events/1676085891_EE__API__Groups_group_audit_event_request.yml
new file mode 100644
index 00000000000..cbc12d58ed1
--- /dev/null
+++ b/config/events/1676085891_EE__API__Groups_group_audit_event_request.yml
@@ -0,0 +1,26 @@
+---
+description: Mirrored `a_compliance_audit_events_api` Redis HLL metric as a Snowplow event. Emitted when Group Audit Events REST API endpoint is called.
+category: EE::API::Groups
+action: group_audit_event_request
+label_description: Mirrored Service Ping metric key path
+property_description: Mirrored Service Ping Redis HLL event name
+value_description:
+extra_properties:
+identifiers:
+#- project
+- user
+- namespace
+product_section: dev
+product_stage: manage
+product_group: compliance
+product_category: compliance_management
+milestone: "15.9"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107120
+distributions:
+#- ce
+- ee
+tiers:
+#- free
+- premium
+- ultimate
+
diff --git a/config/events/1676085919_EE__API__Projects_project_audit_event_request.yml b/config/events/1676085919_EE__API__Projects_project_audit_event_request.yml
new file mode 100644
index 00000000000..8b895871275
--- /dev/null
+++ b/config/events/1676085919_EE__API__Projects_project_audit_event_request.yml
@@ -0,0 +1,26 @@
+---
+description: Mirrored `a_compliance_audit_events_api` Redis HLL metric as a Snowplow event. Emitted when Project Audit Events REST API endpoint is called.
+category: EE::API::Projects
+action: project_audit_event_request
+label_description: Mirrored Service Ping metric key path
+property_description: Mirrored Service Ping Redis HLL event name
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: dev
+product_stage: manage
+product_group: compliance
+product_category: compliance_management
+milestone: "15.9"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107120
+distributions:
+#- ce
+- ee
+tiers:
+#- free
+- premium
+- ultimate
+
diff --git a/config/events/202109151015_notes__create_service_execute.yml b/config/events/202109151015_notes__create_service_execute.yml
index 12da6da02f0..5ca57011bb9 100644
--- a/config/events/202109151015_notes__create_service_execute.yml
+++ b/config/events/202109151015_notes__create_service_execute.yml
@@ -8,7 +8,7 @@ extra_properties:
identifiers:
product_section: ops
product_stage: verify
-product_group: group::pipeline insights
+product_group: group::pipeline execution
product_category:
milestone: "12.5"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18890
diff --git a/config/events/20211215022206_default_review_app_open_review_app.yml b/config/events/20211215022206_default_review_app_open_review_app.yml
index c77b904bc01..67e7e9be15d 100644
--- a/config/events/20211215022206_default_review_app_open_review_app.yml
+++ b/config/events/20211215022206_default_review_app_open_review_app.yml
@@ -8,7 +8,7 @@ extra_properties:
identifiers:
product_section: ops
product_stage: verify
-product_group: group::pipeline insights
+product_group: group::pipeline execution
product_category:
milestone: "12.6"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/18141
diff --git a/config/feature_flags/development/artifacts_management_page.yml b/config/feature_flags/development/artifacts_management_page.yml
index 94ef885f4b9..078e18a703f 100644
--- a/config/feature_flags/development/artifacts_management_page.yml
+++ b/config/feature_flags/development/artifacts_management_page.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/16654
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/254938
milestone: '12.4'
type: development
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: false
diff --git a/config/feature_flags/development/counter_attribute_db_lease_for_update.yml b/config/feature_flags/development/counter_attribute_db_lease_for_update.yml
index 7c30bb3e913..8a991dd7aea 100644
--- a/config/feature_flags/development/counter_attribute_db_lease_for_update.yml
+++ b/config/feature_flags/development/counter_attribute_db_lease_for_update.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97912
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/374596
milestone: '15.5'
type: development
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: false
diff --git a/config/feature_flags/development/mr_show_reports_immediately.yml b/config/feature_flags/development/mr_show_reports_immediately.yml
index 23ac381a521..08cc49bcfd3 100644
--- a/config/feature_flags/development/mr_show_reports_immediately.yml
+++ b/config/feature_flags/development/mr_show_reports_immediately.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/76612
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367027
milestone: '15.2'
type: development
-group: group::pipeline insights
+group: group::pipeline execution
default_enabled: false
diff --git a/config/feature_flags/development/project_statistics_bulk_increment.yml b/config/feature_flags/development/project_statistics_bulk_increment.yml
index 6e8b9083a4d..2fa2b6d2611 100644
--- a/config/feature_flags/development/project_statistics_bulk_increment.yml
+++ b/config/feature_flags/development/project_statistics_bulk_increment.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/103879
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/385845
milestone: '15.7'
type: development
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: false
diff --git a/config/feature_flags/development/s3_multithreaded_uploads.yml b/config/feature_flags/development/s3_multithreaded_uploads.yml
index 6c3ecac4143..f2019f53275 100644
--- a/config/feature_flags/development/s3_multithreaded_uploads.yml
+++ b/config/feature_flags/development/s3_multithreaded_uploads.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/50922
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/296772
milestone: '13.8'
type: development
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: true
diff --git a/config/feature_flags/ops/ci_build_dependencies_artifacts_logger.yml b/config/feature_flags/ops/ci_build_dependencies_artifacts_logger.yml
index 533900efdac..1e4e5ac3438 100644
--- a/config/feature_flags/ops/ci_build_dependencies_artifacts_logger.yml
+++ b/config/feature_flags/ops/ci_build_dependencies_artifacts_logger.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93179
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369441
milestone: '15.3'
type: ops
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: false
diff --git a/config/feature_flags/ops/projects_build_artifacts_size_refresh.yml b/config/feature_flags/ops/projects_build_artifacts_size_refresh.yml
index 8b54a0e3ff5..e3b27dfe8ea 100644
--- a/config/feature_flags/ops/projects_build_artifacts_size_refresh.yml
+++ b/config/feature_flags/ops/projects_build_artifacts_size_refresh.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84701
rollout_issue_url:
milestone: '15.1'
type: ops
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: true
diff --git a/config/feature_flags/ops/projects_build_artifacts_size_refresh_high.yml b/config/feature_flags/ops/projects_build_artifacts_size_refresh_high.yml
index d16ee72ab71..5289bacae8e 100644
--- a/config/feature_flags/ops/projects_build_artifacts_size_refresh_high.yml
+++ b/config/feature_flags/ops/projects_build_artifacts_size_refresh_high.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84701
rollout_issue_url:
milestone: '15.8'
type: ops
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: false
diff --git a/config/feature_flags/ops/projects_build_artifacts_size_refresh_medium.yml b/config/feature_flags/ops/projects_build_artifacts_size_refresh_medium.yml
index 73bfd16ec94..0c38b67a9cc 100644
--- a/config/feature_flags/ops/projects_build_artifacts_size_refresh_medium.yml
+++ b/config/feature_flags/ops/projects_build_artifacts_size_refresh_medium.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84701
rollout_issue_url:
milestone: '15.8'
type: ops
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: false
diff --git a/config/feature_flags/ops/split_log_bulk_increment_counter.yml b/config/feature_flags/ops/split_log_bulk_increment_counter.yml
index ba8c3a7d22e..efc3f77b77b 100644
--- a/config/feature_flags/ops/split_log_bulk_increment_counter.yml
+++ b/config/feature_flags/ops/split_log_bulk_increment_counter.yml
@@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/111147
rollout_issue_url:
milestone: '15.9'
type: ops
-group: group::pipeline insights
+group: group::pipeline security
default_enabled: false
diff --git a/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml b/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml
index 12b9e922a1c..2bcd22eb7fc 100644
--- a/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml
+++ b/config/metrics/counts_28d/20210216182136_i_testing_test_case_parsed_monthly.yml
@@ -5,7 +5,7 @@ description: Internal Tracking to count number of unit tests parsed for planning
future code testing features. Data available [here](https://app.periscopedata.com/app/gitlab/788674/Verify:Testing-Group-Metrics?widget=10454394&udv=0)
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: code_testing
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml b/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml
index 65b9764cf10..498569c95aa 100644
--- a/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml
+++ b/config/metrics/counts_28d/20210409100451_users_expanding_testing_code_quality_report_monthly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.testing.users_expanding_testing_code_quality_report
description: Count of expanding the code quality widget
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: code_quality
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml b/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml
index 601fc6fdab3..d800cd2f3e9 100644
--- a/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml
+++ b/config/metrics/counts_28d/20210409100628_users_expanding_testing_accessibility_report_monthly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.testing.users_expanding_testing_accessibility_repor
description: Count of expanding the accessibility report widget
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: accessibility_testing
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml b/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml
index 49cab313fc8..ed25f2c18a8 100644
--- a/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml
+++ b/config/metrics/counts_28d/20210413205507_i_testing_summary_widget_total_monthly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.testing.i_testing_summary_widget_total_monthly
description: Unique users that expand the test summary merge request widget by month
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: testing
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml b/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml
index 341d3810318..cd124735153 100644
--- a/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml
+++ b/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml
@@ -3,7 +3,7 @@ key_path: redis_hll_counters.testing.i_testing_test_report_uploaded_monthly
description: "MAU of junit test reports uploaded by customers per pipeline"
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: testing
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml b/config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml
index ef51a24bc1e..a3d47aa4c49 100644
--- a/config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml
+++ b/config/metrics/counts_28d/20221101190915_i_testing_coverage_report_uploaded_monthly.yml
@@ -3,7 +3,7 @@ key_path: redis_hll_counters.testing.i_testing_coverage_report_uploaded_monthly
description: "MAU of coverage test reports uploaded by customers per pipeline"
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: testing
value_type: number
status: active
diff --git a/config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml b/config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml
index 8f73011a6ed..97a74e44f65 100644
--- a/config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml
+++ b/config/metrics/counts_28d/20230112174745_i_testing_active_user_monthly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.testing.i_testing_active_user_monthly
description: Count of monthly active users for pipeline insights features
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: testing
value_type: number
status: active
diff --git a/config/metrics/counts_7d/20210216182134_i_testing_test_case_parsed_weekly.yml b/config/metrics/counts_7d/20210216182134_i_testing_test_case_parsed_weekly.yml
index 49d882f893b..d7c2bf1ad31 100644
--- a/config/metrics/counts_7d/20210216182134_i_testing_test_case_parsed_weekly.yml
+++ b/config/metrics/counts_7d/20210216182134_i_testing_test_case_parsed_weekly.yml
@@ -5,7 +5,7 @@ description: Internal Tracking to count number of unit tests parsed for planning
future code testing features. Data available [here](https://app.periscopedata.com/app/gitlab/788674/Verify:Testing-Group-Metrics?widget=10454394&udv=0)
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: code_testing
value_type: number
status: active
diff --git a/config/metrics/counts_7d/20210409100451_users_expanding_testing_code_quality_report_weekly.yml b/config/metrics/counts_7d/20210409100451_users_expanding_testing_code_quality_report_weekly.yml
index a8686e59e13..f3e90cb077b 100644
--- a/config/metrics/counts_7d/20210409100451_users_expanding_testing_code_quality_report_weekly.yml
+++ b/config/metrics/counts_7d/20210409100451_users_expanding_testing_code_quality_report_weekly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.testing.users_expanding_testing_code_quality_report
description: Count of expanding the code quality widget
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: code_quality
value_type: number
status: active
diff --git a/config/metrics/counts_7d/20210409100628_users_expanding_testing_accessibility_report_weekly.yml b/config/metrics/counts_7d/20210409100628_users_expanding_testing_accessibility_report_weekly.yml
index bbad1715f98..096f2f0c7f6 100644
--- a/config/metrics/counts_7d/20210409100628_users_expanding_testing_accessibility_report_weekly.yml
+++ b/config/metrics/counts_7d/20210409100628_users_expanding_testing_accessibility_report_weekly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.testing.users_expanding_testing_accessibility_repor
description: Count of expanding the accessibility report widget
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: accessibility_testing
value_type: number
status: active
diff --git a/config/metrics/counts_7d/20210413205507_i_testing_summary_widget_total_weekly.yml b/config/metrics/counts_7d/20210413205507_i_testing_summary_widget_total_weekly.yml
index f9c34ab4fe9..015fd1e99b0 100644
--- a/config/metrics/counts_7d/20210413205507_i_testing_summary_widget_total_weekly.yml
+++ b/config/metrics/counts_7d/20210413205507_i_testing_summary_widget_total_weekly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.testing.i_testing_summary_widget_total_weekly
description: Unique users that expand the test summary merge request widget by week
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: testing
value_type: number
status: active
diff --git a/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml b/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml
index 814a50554c1..650f85f765b 100644
--- a/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml
+++ b/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml
@@ -3,7 +3,7 @@ key_path: redis_hll_counters.testing.i_testing_test_report_uploaded_weekly
description: "MAU of junit test reports uploaded by customers per pipeline"
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: testing
value_type: number
status: active
diff --git a/config/metrics/counts_7d/20221101190913_i_testing_coverage_report_uploaded_weekly.yml b/config/metrics/counts_7d/20221101190913_i_testing_coverage_report_uploaded_weekly.yml
index be6ba98c10c..86fefb257f6 100644
--- a/config/metrics/counts_7d/20221101190913_i_testing_coverage_report_uploaded_weekly.yml
+++ b/config/metrics/counts_7d/20221101190913_i_testing_coverage_report_uploaded_weekly.yml
@@ -3,7 +3,7 @@ key_path: redis_hll_counters.testing.i_testing_coverage_report_uploaded_weekly
description: "MAU of coverage test reports uploaded by customers per pipeline"
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: testing
value_type: number
status: active
diff --git a/config/metrics/counts_7d/20230112174745_i_testing_active_user_weekly.yml b/config/metrics/counts_7d/20230112174745_i_testing_active_user_weekly.yml
index d1c553601e6..38e6e0469f4 100644
--- a/config/metrics/counts_7d/20230112174745_i_testing_active_user_weekly.yml
+++ b/config/metrics/counts_7d/20230112174745_i_testing_active_user_weekly.yml
@@ -4,7 +4,7 @@ key_path: redis_hll_counters.testing.i_testing_active_user_weekly
description: Count of weekly active users for pipeline insights features
product_section: ops
product_stage: verify
-product_group: pipeline_insights
+product_group: pipeline_execution
product_category: testing
value_type: number
status: active
diff --git a/lib/api/unleash.rb b/lib/api/unleash.rb
index b2133dc743a..ae84c6c7010 100644
--- a/lib/api/unleash.rb
+++ b/lib/api/unleash.rb
@@ -33,13 +33,11 @@ module API
present_feature_flags
end
- # We decrease the urgency of this endpoint until the maxmemory issue of redis-cache has been resolved.
- # See https://gitlab.com/gitlab-org/gitlab/-/issues/365575#note_1033611872 for more information.
desc 'Get a list of features' do
is_array true
tags unleash_tags
end
- get 'client/features', urgency: :low do
+ get 'client/features', urgency: :medium do
present_feature_flags
end
diff --git a/lib/gitlab/database/partitioning.rb b/lib/gitlab/database/partitioning.rb
index 6314aff9914..4a9e002a1a2 100644
--- a/lib/gitlab/database/partitioning.rb
+++ b/lib/gitlab/database/partitioning.rb
@@ -37,8 +37,9 @@ module Gitlab
models_to_sync.each do |model|
next if model < ::Gitlab::Database::SharedModel && !(model < TableWithoutModel)
+ model_connection_name = model.connection_db_config.name
Gitlab::Database::EachDatabase.each_database_connection do |connection, connection_name|
- if connection_name != model.connection_db_config.name
+ if connection_name != model_connection_name
PartitionManager.new(model, connection: connection).sync_partitions
end
end
diff --git a/qa/qa/specs/features/browser_ui/4_verify/pipeline/locked_artifacts_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/pipeline/locked_artifacts_spec.rb
index 588d22275df..7c5cde6274b 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/pipeline/locked_artifacts_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/pipeline/locked_artifacts_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Verify', :runner, :requires_admin, product_group: :pipeline_insights do
+ RSpec.describe 'Verify', :runner, :requires_admin, product_group: :pipeline_security do
describe 'Artifacts' do
context 'when locked' do
let(:file_name) { 'artifact.txt' }
diff --git a/qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb
index d4fee70fbf3..e7ab515c672 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/testing/endpoint_coverage_spec.rb
@@ -9,7 +9,7 @@ module QA
# pipeline created (Sidekiq read/write) ->
# runner picks up pipeline (API read/write) ->
# User views pipeline succeeds (Web read)
- RSpec.describe 'Verify', :runner, product_group: :pipeline_insights do
+ RSpec.describe 'Verify', :runner, product_group: :pipeline_security do
context 'Endpoint Coverage' do
let!(:project) do
Resource::Project.fabricate_via_api! do |project|
diff --git a/qa/qa/specs/features/browser_ui/4_verify/testing/view_code_coverage_spec.rb b/qa/qa/specs/features/browser_ui/4_verify/testing/view_code_coverage_spec.rb
index b45ccfa5433..ee60483d4de 100644
--- a/qa/qa/specs/features/browser_ui/4_verify/testing/view_code_coverage_spec.rb
+++ b/qa/qa/specs/features/browser_ui/4_verify/testing/view_code_coverage_spec.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
module QA
- RSpec.describe 'Verify', :runner, product_group: :pipeline_insights do
+ RSpec.describe 'Verify', :runner, product_group: :pipeline_execution do
describe 'Code coverage statistics' do
let(:executor) { "qa-runner-#{Time.now.to_i}" }
let(:runner) do
diff --git a/spec/features/dashboard/projects_spec.rb b/spec/features/dashboard/projects_spec.rb
index 779fbb48ddb..bb48a9ab95c 100644
--- a/spec/features/dashboard/projects_spec.rb
+++ b/spec/features/dashboard/projects_spec.rb
@@ -4,7 +4,7 @@ require 'spec_helper'
RSpec.describe 'Dashboard Projects', feature_category: :projects do
let_it_be(:user) { create(:user) }
- let_it_be(:project, reload: true) { create(:project, :repository) }
+ let_it_be(:project, reload: true) { create(:project, :repository, creator: build(:user)) } # ensure creator != owner to avoid N+1 false-positive
let_it_be(:project2) { create(:project, :public) }
before do
@@ -239,7 +239,7 @@ RSpec.describe 'Dashboard Projects', feature_category: :projects do
create(:ci_pipeline, :with_job, status: :success, project: project, ref: project.default_branch, sha: project.commit.sha)
visit dashboard_projects_path
- control_count = ActiveRecord::QueryRecorder.new { visit dashboard_projects_path }.count
+ control = ActiveRecord::QueryRecorder.new { visit dashboard_projects_path }
new_project = create(:project, :repository, name: 'new project')
create(:ci_pipeline, :with_job, status: :success, project: new_project, ref: new_project.commit.sha)
@@ -247,15 +247,12 @@ RSpec.describe 'Dashboard Projects', feature_category: :projects do
ActiveRecord::QueryRecorder.new { visit dashboard_projects_path }.count
- # There are seven known N+1 queries: https://gitlab.com/gitlab-org/gitlab/-/issues/214037
- # 1. Project#open_issues_count
- # 2. Project#open_merge_requests_count
- # 3. Project#forks_count
- # 4. ProjectsHelper#load_pipeline_status
- # 5. RendersMemberAccess#preload_max_member_access_for_collection
- # 6. User#max_member_access_for_project_ids
- # 7. Ci::CommitWithPipeline#last_pipeline
+ # There are a few known N+1 queries: https://gitlab.com/gitlab-org/gitlab/-/issues/214037
+ # - Project#open_merge_requests_count
+ # - User#max_member_access_for_project_ids
+ # - ProjectsHelper#load_pipeline_status / Ci::CommitWithPipeline#last_pipeline
+ # - Ci::Pipeline#detailed_status
- expect { visit dashboard_projects_path }.not_to exceed_query_limit(control_count + 7)
+ expect { visit dashboard_projects_path }.not_to exceed_query_limit(control).with_threshold(0)
end
end
diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb
index 3c8a692b0b3..978fbddcfe5 100644
--- a/spec/helpers/projects_helper_spec.rb
+++ b/spec/helpers/projects_helper_spec.rb
@@ -1384,4 +1384,24 @@ RSpec.describe ProjectsHelper, feature_category: :source_code_management do
expect(helper.remote_mirror_setting_enabled?).to be_falsy
end
end
+
+ describe '#http_clone_url_to_repo' do
+ before do
+ allow(project).to receive(:http_url_to_repo).and_return('http_url_to_repo')
+ end
+
+ subject { helper.http_clone_url_to_repo(project) }
+
+ it { expect(subject).to eq('http_url_to_repo') }
+ end
+
+ describe '#ssh_clone_url_to_repo' do
+ before do
+ allow(project).to receive(:ssh_url_to_repo).and_return('ssh_url_to_repo')
+ end
+
+ subject { helper.ssh_clone_url_to_repo(project) }
+
+ it { expect(subject).to eq('ssh_url_to_repo') }
+ end
end
diff --git a/spec/lib/gitlab/database/partitioning_spec.rb b/spec/lib/gitlab/database/partitioning_spec.rb
index ae74ee60a4b..4c0fde46b2f 100644
--- a/spec/lib/gitlab/database/partitioning_spec.rb
+++ b/spec/lib/gitlab/database/partitioning_spec.rb
@@ -67,14 +67,19 @@ RSpec.describe Gitlab::Database::Partitioning do
let(:ci_connection) { Ci::ApplicationRecord.connection }
let(:table_names) { %w[partitioning_test1 partitioning_test2] }
let(:models) do
- table_names.map do |table_name|
+ [
Class.new(ApplicationRecord) do
include PartitionedTable
- self.table_name = table_name
+ self.table_name = 'partitioning_test1'
partitioned_by :created_at, strategy: :monthly
+ end,
+ Class.new(Gitlab::Database::Partitioning::TableWithoutModel).tap do |klass|
+ klass.table_name = 'partitioning_test2'
+ klass.partitioned_by(:created_at, strategy: :monthly)
+ klass.limit_connection_names = %i[main]
end
- end
+ ]
end
before do
diff --git a/spec/requests/api/unleash_spec.rb b/spec/requests/api/unleash_spec.rb
index 5daf7cd7b75..75b26b98228 100644
--- a/spec/requests/api/unleash_spec.rb
+++ b/spec/requests/api/unleash_spec.rb
@@ -88,6 +88,14 @@ RSpec.describe API::Unleash, feature_category: :feature_flags do
end
end
+ describe 'GET /feature_flags/unleash/:project_id/client/features', :use_clean_rails_redis_caching do
+ specify do
+ get api("/feature_flags/unleash/#{project_id}/client/features"), params: params, headers: headers
+
+ is_expected.to have_request_urgency(:medium)
+ end
+ end
+
%w(/feature_flags/unleash/:project_id/features /feature_flags/unleash/:project_id/client/features).each do |features_endpoint|
describe "GET #{features_endpoint}", :use_clean_rails_redis_caching do
let(:features_url) { features_endpoint.sub(':project_id', project_id.to_s) }
diff --git a/workhorse/go.mod b/workhorse/go.mod
index a4d9a17e64c..645f155af73 100644
--- a/workhorse/go.mod
+++ b/workhorse/go.mod
@@ -7,7 +7,7 @@ require (
github.com/BurntSushi/toml v1.2.1
github.com/FZambia/sentinel v1.1.1
github.com/alecthomas/chroma/v2 v2.5.0
- github.com/aws/aws-sdk-go v1.44.209
+ github.com/aws/aws-sdk-go v1.44.210
github.com/disintegration/imaging v1.6.2
github.com/getsentry/raven-go v0.2.0
github.com/golang-jwt/jwt/v4 v4.5.0
diff --git a/workhorse/go.sum b/workhorse/go.sum
index bb3d4dad400..ccb713d3468 100644
--- a/workhorse/go.sum
+++ b/workhorse/go.sum
@@ -544,8 +544,8 @@ github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4
github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/aws/aws-sdk-go v1.44.128/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/aws/aws-sdk-go v1.44.151/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
-github.com/aws/aws-sdk-go v1.44.209 h1:wZuiaA4eaqYZmoZXqGgNHqVD7y7kUGFvACDGBgowTps=
-github.com/aws/aws-sdk-go v1.44.209/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
+github.com/aws/aws-sdk-go v1.44.210 h1:/cqRMHSSgzLEKILIDGwhaX2hiIpyRurw7MRy6aaSufg=
+github.com/aws/aws-sdk-go v1.44.210/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
github.com/aws/aws-sdk-go-v2 v1.17.1 h1:02c72fDJr87N8RAC2s3Qu0YuvMRZKNZJ9F+lAehCazk=
github.com/aws/aws-sdk-go-v2 v1.17.1/go.mod h1:JLnGeGONAyi2lWXI1p0PCIOIy333JMVK1U7Hf0aRFLw=