diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-07 06:07:55 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-07 06:07:55 +0000 |
commit | ed922e61f47716d82396490b0a19d794c997b9c5 (patch) | |
tree | 3606ac994c5ddb414194292b38bd234f9e519d12 | |
parent | d0db90848503511d758f29c16a93a1e2b1c3da47 (diff) | |
download | gitlab-ce-ed922e61f47716d82396490b0a19d794c997b9c5.tar.gz |
Add latest changes from gitlab-org/gitlab@master
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= |