From e408c9c78706ce77f88e319fa3c0a27e8d5584f1 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 6 Mar 2024 12:12:50 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/caching.gitlab-ci.yml | 12 -- .gitlab/ci/rules.gitlab-ci.yml | 5 - ...Geo Replicate a new Git repository type.md | 2 - .../Geo Replicate a new blob type.md | 2 - .../alert_management_empty_state.vue | 36 ++-- .../javascripts/integrations/edit/index.js | 4 + .../javascripts/observability/client.js | 22 ++- .../components/date_range_filter.vue | 96 ++++++++++ .../list/components/packages_list_app.vue | 6 +- .../components/checks/constants.js | 1 - .../vue_merge_request_widget/constants.js | 1 - .../detailed_merge_status_enum.rb | 3 - app/helpers/diff_helper.rb | 6 +- app/helpers/integrations_helper.rb | 4 +- .../projects/alert_management_helper.rb | 2 +- app/models/concerns/triggerable_hooks.rb | 3 +- app/models/hooks/project_hook.rb | 3 +- app/models/personal_access_token.rb | 4 + app/models/projects/triggered_hooks.rb | 1 + app/models/user.rb | 8 + .../integrations/project_test_data.rb | 13 ++ app/services/test_hooks/project_service.rb | 2 + .../infrastructure_registry/index.html.haml | 2 +- app/views/projects/milestones/show.html.haml | 17 +- .../infrastructure_registry/index.html.haml | 2 +- app/views/shared/web_hooks/_form.html.haml | 9 +- app/views/users/show.html.haml | 14 +- .../personal_access_tokens/expiring_worker.rb | 65 ++++++- ...h_types.yml => access_tokens_webhooks.yml} | 10 +- .../wip/redis_hll_property_name_tracking.yml | 8 - ...49_add_access_token_events_to_web_hooks.rb | 14 ++ db/schema_migrations/20240226061749 | 1 + db/structure.sql | 1 + doc/api/graphql/reference/index.md | 15 +- doc/api/groups.md | 5 +- doc/api/merge_requests.md | 1 - doc/api/projects.md | 5 +- doc/development/cascading_settings.md | 2 - doc/development/cloud_connector/index.md | 119 +++++++++++- .../avoiding_downtime_in_migrations.md | 12 +- .../database/loose_foreign_keys.md | 4 - .../database/rename_database_tables.md | 2 - doc/development/database_review.md | 2 +- doc/development/migration_style_guide.md | 69 +------ .../project/integrations/webhook_events.md | 75 ++++++++ lib/api/entities/project_hook.rb | 1 + lib/api/project_hooks.rb | 1 + .../data_builder/resource_access_token.rb | 42 +++++ lib/gitlab/database/migration.rb | 14 ++ lib/gitlab/database/migration_helpers/v2.rb | 14 +- .../database/migrations/lock_retry_mixin.rb | 20 +- .../resource_access_token_builder.rb | 24 +++ lib/gitlab/internal_events.rb | 16 -- .../usage_data_counters/hll_redis_counter.rb | 2 +- .../hll_redis_key_overrides.yml | 4 +- locale/gitlab.pot | 82 +++++++- package.json | 2 +- spec/features/milestone_spec.rb | 1 - .../schemas/public_api/v4/project_hook.json | 6 +- .../alert_management_empty_state_spec.js | 25 ++- spec/frontend/observability/client_spec.js | 68 ++++++- .../observability/date_range_filter_spec.js | 174 +++++++++++++++++ .../list/components/packages_list_app_spec.js | 10 + .../components/merge_checks_spec.js | 1 - spec/helpers/diff_helper_spec.rb | 12 -- spec/helpers/integrations_helper_spec.rb | 1 + .../projects/alert_management_helper_spec.rb | 2 +- .../resource_access_token_spec.rb | 53 ++++++ .../database/migration_helpers/v2_spec.rb | 29 ++- spec/lib/gitlab/database/migration_spec.rb | 30 ++- .../migrations/lock_retry_mixin_spec.rb | 60 +++--- .../resource_access_token_builder_spec.rb | 25 +++ .../project/relation_factory_spec.rb | 1 + .../import_export/safe_model_attributes.yml | 1 + spec/lib/gitlab/internal_events_spec.rb | 59 +----- .../aggregated_metric_spec.rb | 15 +- .../instrumentations/redis_hll_metric_spec.rb | 10 - .../hll_redis_counter_spec.rb | 178 +++++------------- .../sensitive_serializable_hash_spec.rb | 2 +- spec/models/project_spec.rb | 8 + spec/models/projects/triggered_hooks_spec.rb | 34 ++-- spec/models/user_spec.rb | 20 ++ spec/requests/api/project_hooks_spec.rb | 1 + .../test_hooks/project_service_spec.rb | 12 ++ .../expiring_worker_spec.rb | 80 ++++++-- workhorse/go.mod | 2 +- workhorse/go.sum | 4 +- yarn.lock | 8 +- 88 files changed, 1317 insertions(+), 527 deletions(-) create mode 100644 app/assets/javascripts/observability/components/date_range_filter.vue rename config/feature_flags/gitlab_com_derisk/{cached_conflicts_with_types.yml => access_tokens_webhooks.yml} (74%) delete mode 100644 config/feature_flags/wip/redis_hll_property_name_tracking.yml create mode 100644 db/migrate/20240226061749_add_access_token_events_to_web_hooks.rb create mode 100644 db/schema_migrations/20240226061749 create mode 100644 lib/gitlab/data_builder/resource_access_token.rb create mode 100644 lib/gitlab/hook_data/resource_access_token_builder.rb create mode 100644 spec/frontend/observability/date_range_filter_spec.js create mode 100644 spec/lib/gitlab/data_builder/resource_access_token_spec.rb create mode 100644 spec/lib/gitlab/hook_data/resource_access_token_builder_spec.rb diff --git a/.gitlab/ci/caching.gitlab-ci.yml b/.gitlab/ci/caching.gitlab-ci.yml index 7fd31b1b433..8b0d1f366d3 100644 --- a/.gitlab/ci/caching.gitlab-ci.yml +++ b/.gitlab/ci/caching.gitlab-ci.yml @@ -41,23 +41,11 @@ cache-workhorse: cache-assets:test: extends: .cache-assets-base -cache-assets:test as-if-foss: - extends: - - cache-assets:test - - .as-if-foss - - .caching:rules:cache-assets-as-if-foss - cache-assets:production: extends: - .cache-assets-base - .production -cache-assets:production as-if-foss: - extends: - - cache-assets:production - - .as-if-foss - - .caching:rules:cache-assets-as-if-foss - packages-cleanup: extends: - .default-retry diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 440113d5471..3a51e040e0f 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -1065,11 +1065,6 @@ when: manual allow_failure: true -.caching:rules:cache-assets-as-if-foss: - rules: - - !reference [".strict-ee-only-rules", rules] - - !reference [".caching:rules:cache-assets", "rules"] - .caching:rules:packages-cleanup: rules: # The new strategy to cache assets as generic packages is experimental and can be disabled by removing the `CACHE_ASSETS_AS_PACKAGE` variable 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 61fbf1aadda..ca034847dfe 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 @@ -145,8 +145,6 @@ The Geo primary site needs to checksum every replicable so secondaries can verif FAILED_VERIFICATION_INDEX_NAME = "index_cool_widget_states_failed_verification" NEEDS_VERIFICATION_INDEX_NAME = "index_cool_widget_states_needs_verification" - enable_lock_retries! - def up create_table :cool_widget_states do |t| t.datetime_with_timezone :verification_started_at 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 cc5b764f7a2..23275d0d5a3 100644 --- a/.gitlab/issue_templates/Geo Replicate a new blob type.md +++ b/.gitlab/issue_templates/Geo Replicate a new blob type.md @@ -148,8 +148,6 @@ The Geo primary site needs to checksum every replicable so secondaries can verif FAILED_VERIFICATION_INDEX_NAME = "index_cool_widget_states_failed_verification" NEEDS_VERIFICATION_INDEX_NAME = "index_cool_widget_states_needs_verification" - enable_lock_retries! - def up create_table :cool_widget_states do |t| t.datetime_with_timezone :verification_started_at diff --git a/app/assets/javascripts/alert_management/components/alert_management_empty_state.vue b/app/assets/javascripts/alert_management/components/alert_management_empty_state.vue index da9f300c941..c928130e795 100644 --- a/app/assets/javascripts/alert_management/components/alert_management_empty_state.vue +++ b/app/assets/javascripts/alert_management/components/alert_management_empty_state.vue @@ -33,25 +33,19 @@ export default { }; diff --git a/app/assets/javascripts/integrations/edit/index.js b/app/assets/javascripts/integrations/edit/index.js index 44d489ef5df..34cc0127e24 100644 --- a/app/assets/javascripts/integrations/edit/index.js +++ b/app/assets/javascripts/integrations/edit/index.js @@ -19,6 +19,7 @@ function parseDatasetToProps(data) { const { id, type, + projectId, commentDetail, projectKey, learnMorePath, @@ -36,6 +37,7 @@ function parseDatasetToProps(data) { jiraIssueTransitionAutomatic, jiraIssueTransitionId, artifactRegistryPath, + personalAccessTokensPath, redirectTo, upgradeSlackUrl, ...booleanAttributes @@ -69,6 +71,7 @@ function parseDatasetToProps(data) { testPath, resetPath, formPath, + personalAccessTokensPath, triggerFieldsProps: { initialTriggerCommit: commitEvents, initialTriggerMergeRequest: mergeRequestEvents, @@ -96,6 +99,7 @@ function parseDatasetToProps(data) { inheritFromId: parseInt(inheritFromId, 10), integrationLevel, id: parseInt(id, 10), + projectId: parseInt(projectId, 10), redirectTo, shouldUpgradeSlack, upgradeSlackUrl, diff --git a/app/assets/javascripts/observability/client.js b/app/assets/javascripts/observability/client.js index 10613a48ea5..c87a1bec0be 100644 --- a/app/assets/javascripts/observability/client.js +++ b/app/assets/javascripts/observability/client.js @@ -225,7 +225,10 @@ function tracingFilterObjToQueryParams(filterObj) { * * @returns Array : A list of traces */ -async function fetchTraces(tracingUrl, { filters = {}, pageToken, pageSize, sortBy } = {}) { +async function fetchTraces( + tracingUrl, + { filters = {}, pageToken, pageSize, sortBy, abortController } = {}, +) { const params = tracingFilterObjToQueryParams(filters); if (pageToken) { params.append('page_token', pageToken); @@ -242,6 +245,7 @@ async function fetchTraces(tracingUrl, { filters = {}, pageToken, pageSize, sort const { data } = await axios.get(tracingUrl, { withCredentials: true, params, + signal: abortController?.signal, }); if (!Array.isArray(data.traces)) { throw new Error('traces are missing/invalid in the response'); // eslint-disable-line @gitlab/require-i18n-strings @@ -252,13 +256,14 @@ async function fetchTraces(tracingUrl, { filters = {}, pageToken, pageSize, sort } } -async function fetchTracesAnalytics(tracingAnalyticsUrl, { filters = {} } = {}) { +async function fetchTracesAnalytics(tracingAnalyticsUrl, { filters = {}, abortController } = {}) { const params = tracingFilterObjToQueryParams(filters); try { const { data } = await axios.get(tracingAnalyticsUrl, { withCredentials: true, params, + signal: abortController?.signal, }); return data.results ?? []; } catch (e) { @@ -354,7 +359,7 @@ function addMetricsAttributeFilterToQueryParams(dimensionFilter, params) { }); } -function addMetricsDateRangeFilterToQueryParams(dateRangeFilter, params) { +function addDateRangeFilterToQueryParams(dateRangeFilter, params) { if (!dateRangeFilter || !params) return; const { value, endDate, startDate } = dateRangeFilter; @@ -401,7 +406,7 @@ async function fetchMetric(searchUrl, name, type, options = {}) { } if (dateRange) { - addMetricsDateRangeFilterToQueryParams(dateRange, params); + addDateRangeFilterToQueryParams(dateRange, params); } if (groupBy) { @@ -446,16 +451,21 @@ async function fetchMetricSearchMetadata(searchMetadataUrl, name, type) { } } -export async function fetchLogs(logsSearchUrl, { pageToken, pageSize } = {}) { +export async function fetchLogs(logsSearchUrl, { pageToken, pageSize, filters = {} } = {}) { try { const params = new URLSearchParams(); + + const { dateRange } = filters; + if (dateRange) { + addDateRangeFilterToQueryParams(dateRange, params); + } + if (pageToken) { params.append('page_token', pageToken); } if (pageSize) { params.append('page_size', pageSize); } - const { data } = await axios.get(logsSearchUrl, { withCredentials: true, params, diff --git a/app/assets/javascripts/observability/components/date_range_filter.vue b/app/assets/javascripts/observability/components/date_range_filter.vue new file mode 100644 index 00000000000..043d03f965a --- /dev/null +++ b/app/assets/javascripts/observability/components/date_range_filter.vue @@ -0,0 +1,96 @@ + + + diff --git a/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list_app.vue b/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list_app.vue index 08072908c4d..9e246ef00d8 100644 --- a/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list_app.vue +++ b/app/assets/javascripts/packages_and_registries/infrastructure_registry/list/components/packages_list_app.vue @@ -97,7 +97,11 @@ export default {