From f34b26bb882947bcc1126de19fa55eb8763af32e Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 23 Feb 2023 03:12:37 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- Gemfile | 2 +- Gemfile.checksum | 2 +- Gemfile.lock | 6 +- .../components/details/package_versions_list.vue | 40 +++++ .../components/details/version_row.vue | 20 +++ .../components/list/package_list_row.vue | 5 +- .../package_registry/constants.js | 5 + .../javascripts/saved_replies/components/form.vue | 182 +++++++++++++++++++++ .../javascripts/saved_replies/pages/index.vue | 6 + .../queries/create_saved_reply.mutation.graphql | 10 ++ app/controllers/concerns/registrations_tracking.rb | 2 + .../cycle_analytics/issue_count_resolver.rb | 86 ++++++++++ .../analytics/cycle_analytics/flow_metrics.rb | 22 +++ .../types/analytics/cycle_analytics/metric_type.rb | 39 +++++ app/graphql/types/project_type.rb | 8 + app/services/system_notes/commit_service.rb | 56 ++++++- danger/stable_branch_patch/Dangerfile | 2 +- ...ex_on_postgres_async_foreign_key_validations.rb | 19 +++ db/schema_migrations/20230220112930 | 1 + db/structure.sql | 4 +- doc/api/graphql/reference/index.md | 61 +++++++ .../incident_timeline_events.md | 6 +- .../policies/img/association_diagram.png | Bin 6624 -> 19149 bytes .../policies/img/policy_rule_mode_v14_9.png | Bin 34025 -> 0 bytes .../policies/img/policy_rule_mode_v15_9.png | Bin 0 -> 37866 bytes .../policies/img/policy_yaml_mode_v14_9.png | Bin 27424 -> 0 bytes .../policies/img/policy_yaml_mode_v15_9.png | Bin 0 -> 29904 bytes .../img/scan_execution_policy_rule_mode_v15_5.png | Bin 23688 -> 0 bytes .../img/scan_execution_policy_rule_mode_v15_9.png | Bin 0 -> 27667 bytes doc/user/application_security/policies/index.md | 8 +- .../policies/scan-execution-policies.md | 2 +- doc/user/group/compliance_frameworks.md | 10 +- doc/user/group/import/index.md | 52 +++--- .../async_foreign_keys/migration_helpers.rb | 4 +- .../postgres_async_foreign_key_validation.rb | 2 +- locale/gitlab.pot | 18 ++ .../profiles/user_creates_saved_reply_spec.rb | 29 ++++ spec/frontend/fixtures/saved_replies.rb | 28 ++++ .../details/package_versions_list_spec.js | 80 ++++++++- .../components/details/version_row_spec.js | 28 +++- .../components/list/package_list_row_spec.js | 3 +- .../frontend/saved_replies/components/form_spec.js | 116 +++++++++++++ .../postgres_async_foreign_key_validation_spec.rb | 2 +- .../api/graphql/project/flow_metrics_spec.rb | 19 +++ spec/services/system_notes/commit_service_spec.rb | 82 +++++++++- .../cycle_analytics/flow_metrics_examples.rb | 124 ++++++++++++++ 46 files changed, 1123 insertions(+), 68 deletions(-) create mode 100644 app/assets/javascripts/saved_replies/components/form.vue create mode 100644 app/assets/javascripts/saved_replies/queries/create_saved_reply.mutation.graphql create mode 100644 app/graphql/resolvers/analytics/cycle_analytics/issue_count_resolver.rb create mode 100644 app/graphql/types/analytics/cycle_analytics/flow_metrics.rb create mode 100644 app/graphql/types/analytics/cycle_analytics/metric_type.rb create mode 100644 db/post_migrate/20230220112930_replace_uniq_index_on_postgres_async_foreign_key_validations.rb create mode 100644 db/schema_migrations/20230220112930 delete mode 100644 doc/user/application_security/policies/img/policy_rule_mode_v14_9.png create mode 100644 doc/user/application_security/policies/img/policy_rule_mode_v15_9.png delete mode 100644 doc/user/application_security/policies/img/policy_yaml_mode_v14_9.png create mode 100644 doc/user/application_security/policies/img/policy_yaml_mode_v15_9.png delete mode 100644 doc/user/application_security/policies/img/scan_execution_policy_rule_mode_v15_5.png create mode 100644 doc/user/application_security/policies/img/scan_execution_policy_rule_mode_v15_9.png create mode 100644 spec/features/profiles/user_creates_saved_reply_spec.rb create mode 100644 spec/frontend/saved_replies/components/form_spec.js create mode 100644 spec/requests/api/graphql/project/flow_metrics_spec.rb create mode 100644 spec/support/shared_examples/analytics/cycle_analytics/flow_metrics_examples.rb diff --git a/Gemfile b/Gemfile index 48d61eae910..a38c9361be7 100644 --- a/Gemfile +++ b/Gemfile @@ -373,7 +373,7 @@ gem 'prometheus-client-mmap', '~> 0.17', require: 'prometheus/client' gem 'warning', '~> 1.3.0' group :development do - gem 'lefthook', '~> 1.2.9', require: false + gem 'lefthook', '~> 1.3.0', require: false gem 'rubocop' gem 'solargraph', '~> 0.47.2', require: false diff --git a/Gemfile.checksum b/Gemfile.checksum index 2dbcae42f0f..24ae815ae2e 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -314,7 +314,7 @@ {"name":"kramdown","version":"2.3.2","platform":"ruby","checksum":"cb4530c2e9d16481591df2c9336723683c354e5416a5dd3e447fa48215a6a71c"}, {"name":"kramdown-parser-gfm","version":"1.1.0","platform":"ruby","checksum":"fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729"}, {"name":"launchy","version":"2.5.0","platform":"ruby","checksum":"954243c4255920982ce682f89a42e76372dba94770bf09c23a523e204bdebef5"}, -{"name":"lefthook","version":"1.2.9","platform":"ruby","checksum":"1fd4a768e08fc624e756597fc628b3c7991267325974a7a5cc169595b425701d"}, +{"name":"lefthook","version":"1.3.0","platform":"ruby","checksum":"46460ceb0084d1a60c7aa2872c90fd9a97d92c32063b41ac88303e1d1a382b43"}, {"name":"letter_opener","version":"1.7.0","platform":"ruby","checksum":"095bc0d58e006e5b43ea7d219e64ecf2de8d1f7d9dafc432040a845cf59b4725"}, {"name":"letter_opener_web","version":"2.0.0","platform":"ruby","checksum":"33860ad41e1785d75456500e8ca8bba8ed71ee6eaf08a98d06bbab67c5577b6f"}, {"name":"libyajl2","version":"1.2.0","platform":"ruby","checksum":"1117cd1e48db013b626e36269bbf1cef210538ca6d2e62d3fa3db9ded005b258"}, diff --git a/Gemfile.lock b/Gemfile.lock index a3d6dc31fb6..3b0ee82c3c3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -845,7 +845,7 @@ GEM kramdown (~> 2.0) launchy (2.5.0) addressable (~> 2.7) - lefthook (1.2.9) + lefthook (1.3.0) letter_opener (1.7.0) launchy (~> 2.2) letter_opener_web (2.0.0) @@ -1738,7 +1738,7 @@ DEPENDENCIES knapsack (~> 1.21.1) kramdown (~> 2.3.1) kubeclient (~> 4.9.3)! - lefthook (~> 1.2.9) + lefthook (~> 1.3.0) letter_opener_web (~> 2.0.0) license_finder (~> 7.0) licensee (~> 9.15) @@ -1893,4 +1893,4 @@ DEPENDENCIES yajl-ruby (~> 1.4.3) BUNDLED WITH - 2.4.6 + 2.4.7 diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/details/package_versions_list.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/details/package_versions_list.vue index d982df4f984..a06b2cadd6e 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/details/package_versions_list.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/details/package_versions_list.vue @@ -4,16 +4,22 @@ import VersionRow from '~/packages_and_registries/package_registry/components/de import PackagesListLoader from '~/packages_and_registries/shared/components/packages_list_loader.vue'; import RegistryList from '~/packages_and_registries/shared/components/registry_list.vue'; import DeleteModal from '~/packages_and_registries/package_registry/components/delete_modal.vue'; +import DeletePackageModal from '~/packages_and_registries/shared/components/delete_package_modal.vue'; import { + CANCEL_DELETE_PACKAGE_VERSION_TRACKING_ACTION, CANCEL_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION, + DELETE_PACKAGE_VERSION_TRACKING_ACTION, DELETE_PACKAGE_VERSIONS_TRACKING_ACTION, + REQUEST_DELETE_PACKAGE_VERSION_TRACKING_ACTION, REQUEST_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION, } from '~/packages_and_registries/package_registry/constants'; import Tracking from '~/tracking'; +import { packageTypeToTrackCategory } from '~/packages_and_registries/package_registry/utils'; export default { components: { DeleteModal, + DeletePackageModal, VersionRow, PackagesListLoader, RegistryList, @@ -42,6 +48,7 @@ export default { }, data() { return { + itemToBeDeleted: null, itemsToBeDeleted: [], }; }, @@ -52,8 +59,25 @@ export default { isListEmpty() { return this.versions.length === 0; }, + tracking() { + const category = this.itemToBeDeleted + ? packageTypeToTrackCategory(this.itemToBeDeleted.packageType) + : undefined; + return { + category, + }; + }, }, methods: { + deleteItemConfirmation() { + this.$emit('delete', [this.itemToBeDeleted]); + this.track(DELETE_PACKAGE_VERSION_TRACKING_ACTION); + this.itemToBeDeleted = null; + }, + deleteItemCanceled() { + this.track(CANCEL_DELETE_PACKAGE_VERSION_TRACKING_ACTION); + this.itemToBeDeleted = null; + }, deleteItemsCanceled() { this.track(CANCEL_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); this.itemsToBeDeleted = []; @@ -63,7 +87,16 @@ export default { this.track(DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); this.itemsToBeDeleted = []; }, + setItemToBeDeleted(item) { + this.itemToBeDeleted = { ...item }; + this.track(REQUEST_DELETE_PACKAGE_VERSION_TRACKING_ACTION); + }, setItemsToBeDeleted(items) { + if (items.length === 1) { + const [item] = items; + this.setItemToBeDeleted(item); + return; + } this.itemsToBeDeleted = items; this.track(REQUEST_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION); this.$refs.deletePackagesModal.show(); @@ -96,11 +129,18 @@ export default { :first="canDestroy && first" :package-entity="item" :selected="isSelected(item)" + @delete="setItemToBeDeleted(item)" @select="selectItem(item)" /> + + import { + GlDropdown, + GlDropdownItem, GlFormCheckbox, GlIcon, GlLink, @@ -13,6 +15,7 @@ import PublishMethod from '~/packages_and_registries/shared/components/publish_m import ListItem from '~/vue_shared/components/registry/list_item.vue'; import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue'; import { + DELETE_PACKAGE_TEXT, ERRORED_PACKAGE_TEXT, ERROR_PUBLISHING, PACKAGE_ERROR_STATUS, @@ -22,6 +25,8 @@ import { export default { name: 'PackageVersionRow', components: { + GlDropdown, + GlDropdownItem, GlFormCheckbox, GlIcon, GlLink, @@ -58,6 +63,7 @@ export default { }, }, i18n: { + deletePackage: DELETE_PACKAGE_TEXT, erroredPackageText: ERRORED_PACKAGE_TEXT, errorPublishing: ERROR_PUBLISHING, warningText: WARNING_TEXT, @@ -121,5 +127,19 @@ export default { + + diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue index 16f21bfe61d..c5354b7e7df 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/list/package_list_row.vue @@ -8,9 +8,10 @@ import { GlTooltipDirective, GlTruncate, } from '@gitlab/ui'; -import { s__, __ } from '~/locale'; +import { __ } from '~/locale'; import ListItem from '~/vue_shared/components/registry/list_item.vue'; import { + DELETE_PACKAGE_TEXT, ERRORED_PACKAGE_TEXT, ERROR_PUBLISHING, PACKAGE_ERROR_STATUS, @@ -91,7 +92,7 @@ export default { i18n: { erroredPackageText: ERRORED_PACKAGE_TEXT, createdAt: __('Created %{timestamp}'), - deletePackage: s__('PackageRegistry|Delete package'), + deletePackage: DELETE_PACKAGE_TEXT, errorPublishing: ERROR_PUBLISHING, warning: WARNING_TEXT, moreActions: __('More actions'), diff --git a/app/assets/javascripts/packages_and_registries/package_registry/constants.js b/app/assets/javascripts/packages_and_registries/package_registry/constants.js index d979ae5c08c..b8875b5dc18 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/constants.js +++ b/app/assets/javascripts/packages_and_registries/package_registry/constants.js @@ -119,6 +119,10 @@ export const DELETE_PACKAGE_VERSIONS_TRACKING_ACTION = 'delete_package_versions' export const REQUEST_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION = 'request_delete_package_versions'; export const CANCEL_DELETE_PACKAGE_VERSIONS_TRACKING_ACTION = 'cancel_delete_package_versions'; +export const DELETE_PACKAGE_VERSION_TRACKING_ACTION = 'delete_package_version'; +export const REQUEST_DELETE_PACKAGE_VERSION_TRACKING_ACTION = 'request_delete_package_version'; +export const CANCEL_DELETE_PACKAGE_VERSION_TRACKING_ACTION = 'cancel_delete_package_version'; + export const DELETE_PACKAGES_ERROR_MESSAGE = s__( 'PackageRegistry|Something went wrong while deleting packages.', ); @@ -127,6 +131,7 @@ export const DELETE_PACKAGES_SUCCESS_MESSAGE = s__('PackageRegistry|Packages del export const DELETE_PACKAGES_MODAL_TITLE = s__('PackageRegistry|Delete packages'); export const DELETE_PACKAGE_MODAL_PRIMARY_ACTION = s__('PackageRegistry|Permanently delete'); +export const DELETE_PACKAGE_TEXT = s__('PackageRegistry|Delete package'); export const DELETE_PACKAGE_SUCCESS_MESSAGE = s__('PackageRegistry|Package deleted successfully'); export const DELETE_PACKAGE_ERROR_MESSAGE = s__( 'PackageRegistry|Something went wrong while deleting the package.', diff --git a/app/assets/javascripts/saved_replies/components/form.vue b/app/assets/javascripts/saved_replies/components/form.vue new file mode 100644 index 00000000000..932e7dcfa1f --- /dev/null +++ b/app/assets/javascripts/saved_replies/components/form.vue @@ -0,0 +1,182 @@ + + + diff --git a/app/assets/javascripts/saved_replies/pages/index.vue b/app/assets/javascripts/saved_replies/pages/index.vue index 38f51dbc365..f5994c50e59 100644 --- a/app/assets/javascripts/saved_replies/pages/index.vue +++ b/app/assets/javascripts/saved_replies/pages/index.vue @@ -1,8 +1,10 @@