Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2024-10-18 12:16:02 +00:00
parent ce8149ab30
commit bde92d8989
58 changed files with 454 additions and 437 deletions

View File

@ -1632,6 +1632,13 @@ ee/lib/gitlab/llm/chain/agents/single_action_executor.rb
ee/lib/gitlab/llm/chain/streamed_zero_shot_answer.rb
ee/lib/gitlab/llm/completions/chat.rb
[Code Suggestions] @code-creation-team/backend-engineers
ee/lib/api/code_suggestions.rb
ee/lib/code_suggestions/
ee/lib/ai/context/dependencies/
ee/app/services/ai/repository_xray/
ee/app/workers/ai/repository_xray/
# Fulfillment::Utilization
^[Usage Quotas] @gitlab-org/fulfillment/utilization/fe
/**/javascripts/usage_quotas/

View File

@ -3,186 +3,73 @@
Gitlab/DocumentationLinks/Link:
Details: grace period
Exclude:
- '**/*.haml' # Excluding HAML files so as to not conflict with the DocumentationLinks HAML linter
- '**/*.haml'
- 'app/controllers/concerns/enforces_two_factor_authentication.rb'
- 'app/controllers/import/github_controller.rb'
- 'app/controllers/jira_connect/app_descriptor_controller.rb'
- 'app/controllers/jwt_controller.rb'
- 'app/controllers/metrics_controller.rb'
- 'app/controllers/repositories/git_http_client_controller.rb'
- 'app/helpers/ci/jobs_helper.rb'
- 'app/helpers/ci/pipeline_editor_helper.rb'
- 'app/helpers/clusters_helper.rb'
- 'app/helpers/container_registry/container_registry_helper.rb'
- 'app/helpers/environments_helper.rb'
- 'app/helpers/feature_flags_helper.rb'
- 'app/helpers/ide_helper.rb'
- 'app/helpers/import_helper.rb'
- 'app/helpers/integrations_helper.rb'
- 'app/helpers/invite_members_helper.rb'
- 'app/helpers/issuables_helper.rb'
- 'app/helpers/issues_helper.rb'
- 'app/helpers/merge_requests_helper.rb'
- 'app/helpers/mirror_helper.rb'
- 'app/helpers/notes_helper.rb'
- 'app/helpers/operations_helper.rb'
- 'app/helpers/packages_helper.rb'
- 'app/helpers/preferences_helper.rb'
- 'app/helpers/projects/security/configuration_helper.rb'
- 'app/helpers/projects_helper.rb'
- 'app/helpers/releases_helper.rb'
- 'app/helpers/search_helper.rb'
- 'app/helpers/visibility_level_helper.rb'
- 'app/helpers/wiki_helper.rb'
- 'app/mailers/emails/identity_verification.rb'
- 'app/models/concerns/ci/has_completion_reason.rb'
- 'app/models/integration.rb'
- 'app/models/integrations/apple_app_store.rb'
- 'app/models/integrations/beyond_identity.rb'
- 'app/models/integrations/google_play.rb'
- 'app/models/integrations/irker.rb'
- 'app/models/integrations/jira.rb'
- 'app/models/integrations/jira_cloud_app.rb'
- 'app/models/integrations/phorge.rb'
- 'app/models/integrations/zentao.rb'
- 'app/models/key.rb'
- 'app/models/user.rb'
- 'app/presenters/clusters/cluster_presenter.rb'
- 'app/presenters/commit_status_presenter.rb'
- 'app/presenters/dev_ops_report/metric_presenter.rb'
- 'app/presenters/group_clusterable_presenter.rb'
- 'app/presenters/instance_clusterable_presenter.rb'
- 'app/presenters/key_presenter.rb'
- 'app/presenters/project_clusterable_presenter.rb'
- 'app/presenters/projects/security/configuration_presenter.rb'
- 'app/serializers/issue_entity.rb'
- 'app/serializers/merge_request_noteable_entity.rb'
- 'app/serializers/merge_request_widget_entity.rb'
- 'app/services/jira/requests/base.rb'
- 'app/services/merge_requests/refresh_service.rb'
- 'app/services/projects/update_service.rb'
- 'ee/app/components/namespaces/combined_storage_users/base_alert_component.rb'
- 'ee/app/components/namespaces/free_user_cap/enforcement_alert_component.rb'
- 'ee/app/components/namespaces/storage/limit_alert_component.rb'
- 'ee/app/components/namespaces/storage/pre_enforcement_alert_component.rb'
- 'ee/app/components/namespaces/storage/repository_limit_alert_component.rb'
- 'ee/app/controllers/concerns/gitlab_subscriptions/trials/duo_common.rb'
- 'ee/app/controllers/gitlab_subscriptions/trials_controller.rb'
- 'ee/app/helpers/billing_plans_helper.rb'
- 'ee/app/helpers/dependencies_helper.rb'
- 'ee/app/helpers/ee/container_registry/container_registry_helper.rb'
- 'ee/app/helpers/ee/form_helper.rb'
- 'ee/app/helpers/ee/groups/settings_helper.rb'
- 'ee/app/helpers/ee/groups_helper.rb'
- 'ee/app/helpers/ee/import_helper.rb'
- 'ee/app/helpers/ee/projects_helper.rb'
- 'ee/app/helpers/ee/security_orchestration_helper.rb'
- 'ee/app/helpers/epics_helper.rb'
- 'ee/app/helpers/groups/add_ons/discover_duo_pro_helper.rb'
- 'ee/app/helpers/groups/discovers_helper.rb'
- 'ee/app/helpers/member_roles_helper.rb'
- 'ee/app/helpers/namespaces/free_user_cap_helper.rb'
- 'ee/app/helpers/projects/learn_gitlab_helper.rb'
- 'ee/app/helpers/projects/security/api_fuzzing_configuration_helper.rb'
- 'ee/app/helpers/projects/security/sast_configuration_helper.rb'
- 'ee/app/helpers/security_helper.rb'
- 'ee/app/helpers/vulnerabilities_helper.rb'
- 'ee/app/models/ee/member.rb'
- 'ee/app/models/integrations/git_guardian.rb'
- 'ee/app/models/integrations/github.rb'
- 'ee/app/presenters/ee/merge_request_presenter.rb'
- 'ee/app/serializers/epic_entity.rb'
- 'ee/app/services/ee/auth/container_registry_authentication_service.rb'
- 'ee/app/services/incident_management/create_incident_sla_exceeded_label_service.rb'
- 'ee/app/presenters/gitlab_subscriptions/trials/duo_enterprise_status_widget_presenter.rb'
- 'ee/app/services/merge_requests/update_blocks_service.rb'
- 'ee/app/services/merge_trains/refresh_merge_request_service.rb'
- 'ee/app/services/search/rake_task_executor_service.rb'
- 'ee/app/services/security/security_orchestration_policies/project_create_service.rb'
- 'ee/lib/api/managed_licenses.rb'
- 'ee/lib/api/member_roles.rb'
- 'ee/lib/ee/gitlab/namespace_storage_size_error_message.rb'
- 'ee/lib/gitlab/analytics/cycle_analytics/summary/change_failure_rate.rb'
- 'ee/lib/gitlab/analytics/cycle_analytics/summary/group/deployment_frequency.rb'
- 'ee/lib/gitlab/analytics/cycle_analytics/summary/lead_time.rb'
- 'ee/lib/gitlab/analytics/cycle_analytics/summary/lead_time_for_changes.rb'
- 'ee/lib/gitlab/analytics/cycle_analytics/summary/time_to_merge.rb'
- 'ee/lib/gitlab/analytics/cycle_analytics/summary/time_to_restore_service.rb'
- 'ee/lib/gitlab/checks/secrets_check.rb'
- 'ee/lib/gitlab/expiring_subscription_message.rb'
- 'ee/lib/gitlab/llm/chain/tools/tool.rb'
- 'ee/lib/gitlab/llm/embeddings/utils/base_content_parser.rb'
- 'ee/lib/gitlab/root_excess_size_error_message.rb'
- 'ee/lib/security/scan_result_policies/policy_violation_comment.rb'
- 'ee/lib/system_check/geo/current_node_check.rb'
- 'ee/spec/components/namespaces/free_user_cap/enforcement_alert_component_spec.rb'
- 'ee/spec/components/namespaces/free_user_cap/non_owner_enforcement_alert_component_spec.rb'
- 'ee/spec/components/namespaces/storage/pre_enforcement_alert_component_spec.rb'
- 'ee/spec/features/admin/admin_show_new_user_signups_cap_alert_spec.rb'
- 'ee/spec/features/groups/group_overview_spec.rb'
- 'ee/spec/features/merge_request/user_edits_multiple_reviewers_mr_spec.rb'
- 'ee/spec/features/projects/show_project_spec.rb'
- 'ee/spec/features/search/elastic/project_search_spec.rb'
- 'ee/spec/features/search/zoekt/search_spec.rb'
- 'ee/spec/features/security/project/discover_spec.rb'
- 'ee/spec/helpers/container_registry/container_registry_helper_spec.rb'
- 'ee/spec/helpers/ee/projects/security/api_fuzzing_configuration_helper_spec.rb'
- 'ee/spec/helpers/ee/projects/security/sast_configuration_helper_spec.rb'
- 'ee/spec/helpers/epics_helper_spec.rb'
- 'ee/spec/helpers/member_roles_helper_spec.rb'
- 'ee/spec/helpers/projects/learn_gitlab_helper_spec.rb'
- 'ee/spec/helpers/projects_helper_spec.rb'
- 'ee/spec/helpers/security_helper_spec.rb'
- 'ee/spec/lib/ee/gitlab/namespace_storage_size_error_message_spec.rb'
- 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/change_failure_rate_spec.rb'
- 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/lead_time_for_changes_spec.rb'
- 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/lead_time_spec.rb'
- 'ee/spec/lib/gitlab/analytics/cycle_analytics/summary/time_to_restore_service_spec.rb'
- 'ee/spec/lib/gitlab/llm/embeddings/utils/base_content_parser_spec.rb'
- 'ee/spec/mailers/emails/enterprise_users_spec.rb'
- 'ee/spec/requests/api/internal/base_spec.rb'
- 'ee/spec/presenters/gitlab_subscriptions/trials/duo_enterprise_status_widget_presenter_spec.rb'
- 'ee/spec/requests/api/member_roles_spec.rb'
- 'ee/spec/requests/callout_spec.rb'
- 'ee/spec/services/ee/auth/container_registry_authentication_service_spec.rb'
- 'ee/spec/support/shared_contexts/secrets_check_shared_contexts.rb'
- 'ee/spec/views/admin/application_settings/_ee_package_registry.html.haml_spec.rb'
- 'ee/spec/views/groups/add_ons/discover_duo_pro/show.html.haml_spec.rb'
- 'ee/spec/views/groups/settings/analytics/_analytics_dashboards.html.haml_spec.rb'
- 'ee/spec/views/projects/settings/analytics/_custom_dashboard_projects.html.haml_spec.rb'
- 'ee/spec/views/user_settings/profiles/show.html.haml_spec.rb'
- 'lib/backup/tasks/database.rb'
- 'lib/gitlab/checks/global_file_size_check.rb'
- 'lib/gitlab/cycle_analytics/summary/deployment_frequency.rb'
- 'lib/gitlab/graphql/deprecations.rb'
- 'lib/gitlab/middleware/go.rb'
- 'lib/gitlab/security/features.rb'
- 'lib/gitlab/usage_data_counters/hll_redis_counter.rb'
- 'lib/slack/block_kit/app_home_opened.rb'
- 'lib/system_check/helpers.rb'
- 'lib/users/internal.rb'
- 'lib/web_ide/extensions_marketplace.rb'
- 'spec/controllers/import/github_controller_spec.rb'
- 'spec/features/admin/admin_sees_background_migrations_spec.rb'
- 'spec/features/dashboard/snippets_spec.rb'
- 'spec/features/groups/container_registry_spec.rb'
- 'spec/features/help_dropdown_spec.rb'
- 'spec/features/issues/service_desk_spec.rb'
- 'spec/features/projects/container_registry_spec.rb'
- 'spec/features/projects/settings/branch_rules_callout_spec.rb'
- 'spec/features/projects/settings/registry_settings_spec.rb'
- 'spec/graphql/resolvers/projects/jira_projects_resolver_spec.rb'
- 'spec/helpers/ci/pipeline_editor_helper_spec.rb'
- 'spec/helpers/clusters_helper_spec.rb'
- 'spec/helpers/container_registry/container_registry_helper_spec.rb'
- 'spec/helpers/ide_helper_spec.rb'
- 'spec/helpers/invite_members_helper_spec.rb'
- 'spec/helpers/issues_helper_spec.rb'
- 'spec/helpers/operations_helper_spec.rb'
- 'spec/helpers/projects/security/configuration_helper_spec.rb'
- 'spec/lib/gitlab/security/scan_configuration_spec.rb'
- 'spec/mailers/emails/pages_domains_spec.rb'
- 'spec/mailers/emails/profile_spec.rb'
- 'spec/presenters/clusters/cluster_presenter_spec.rb'
- 'spec/presenters/commit_status_presenter_spec.rb'
- 'spec/presenters/projects/security/configuration_presenter_spec.rb'
- 'spec/requests/api/import_github_spec.rb'
- 'spec/support/shared_examples/services/jira/requests/base_shared_examples.rb'
- 'spec/views/user_settings/profiles/show.html.haml_spec.rb'

View File

@ -29,6 +29,14 @@ export function initForm() {
initTypePopover();
initTypeSelect();
mountMilestoneDropdown();
if (gon.features.workItemsViewPreference) {
import(/* webpackChunkName: 'work_items_feedback' */ '~/work_items_feedback')
.then(({ initWorkItemsFeedback }) => {
initWorkItemsFeedback();
})
.catch({});
}
}
export function initShow() {

View File

@ -8,3 +8,11 @@ mountJiraIssuesListApp();
addShortcutsExtension(ShortcutsNavigation);
initWorkItemsRoot();
if (gon.features.workItemsViewPreference) {
import(/* webpackChunkName: 'work_items_feedback' */ '~/work_items_feedback')
.then(({ initWorkItemsFeedback }) => {
initWorkItemsFeedback();
})
.catch({});
}

View File

@ -1,8 +1,18 @@
import { initForm } from 'ee_else_ce/issues';
import { mountMarkdownEditor } from 'ee_else_ce/vue_shared/components/markdown/mount_markdown_editor';
import IssuableTemplateSelectors from '~/issuable/issuable_template_selectors';
import { initWorkItemsRoot } from '~/work_items';
initForm();
initWorkItemsRoot();
// eslint-disable-next-line no-new
new IssuableTemplateSelectors({ warnTemplateOverride: true, editor: mountMarkdownEditor() });
if (gon.features.workItemsViewPreference) {
import(/* webpackChunkName: 'work_items_feedback' */ '~/work_items_feedback')
.then(({ initWorkItemsFeedback }) => {
initWorkItemsFeedback();
})
.catch({});
}

View File

@ -165,7 +165,14 @@ export default {
return;
}
if (this.workItemTypes?.length === 1) {
this.selectedWorkItemTypeId = this.workItemTypes[0]?.id;
const workItemType = this.workItemTypes[0];
await setNewWorkItemCache(
this.fullPath,
workItemType?.widgetDefinitions,
workItemType.name,
workItemType.id,
);
this.selectedWorkItemTypeId = workItemType?.id;
} else {
this.workItemTypes.forEach(async (workItemType) => {
await setNewWorkItemCache(

View File

@ -33,7 +33,7 @@ module Packages
private
def terraform_module_package_type
return if package&.terraform_module?
return if legacy_package&.terraform_module?
errors.add(:base, _('Package type must be Terraform Module'))
end

View File

@ -11,13 +11,18 @@ module Packages
def execute
metadata = ::Packages::TerraformModule::Metadatum.new(
package: package,
project: package.project,
fields: metadata_hash,
updated_at: Time.current,
created_at: Time.current
)
if Feature.enabled?(:terraform_extract_terraform_package_model, Feature.current_request)
metadata.package = package
else
metadata.legacy_package = package
end
if metadata.valid?
::Packages::TerraformModule::Metadatum.upsert(metadata.attributes, returning: false)

View File

@ -1,10 +1,20 @@
- add_page_specific_style 'page_bundles/merge_request'
- add_page_specific_style 'page_bundles/labels'
- add_to_breadcrumbs _("Issues"), project_issues_path(@project)
- breadcrumb_title _("New")
- add_page_specific_style 'page_bundles/issuable_list'
- add_page_specific_style 'page_bundles/issues_list'
- add_page_specific_style 'page_bundles/issues_show'
- add_work_items_stylesheet
- add_page_specific_style 'page_bundles/design_management'
- page_title _("New Issue")
- if Feature.disabled?(:work_items_view_preference, current_user) || !current_user&.user_preference&.use_work_items_view
- add_to_breadcrumbs _("Issues"), project_issues_path(@project)
- breadcrumb_title _("New")
- if Feature.enabled?(:work_items_view_preference, current_user) && current_user&.user_preference&.use_work_items_view
#js-work-items{ data: work_items_show_data(@project, current_user) }
- else
.page-title-holder
%h1.page-title.gl-text-size-h-display= _("New Issue")
= render "form"
.page-title-holder
%h1.page-title.gl-text-size-h-display= _("New Issue")
= render "form"

View File

@ -0,0 +1,9 @@
---
name: check_oversized_blobs_without_blob_stitcher
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/438245
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/169154
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/499148
milestone: '17.6'
group: group::source code
type: gitlab_com_derisk
default_enabled: false

View File

@ -5,5 +5,4 @@ feature_category: package_registry
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165813
milestone: '17.5'
queued_migration_version: 20240911115256
finalize_after: '2024-10-17'
finalized_by: # version of the migration that finalized this BBM
finalized_by: 20241016074421

View File

@ -10,4 +10,5 @@ milestone: '15.11'
gitlab_schema: gitlab_main_cell
allow_cross_foreign_keys:
- gitlab_main_clusterwide
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/461787
sharding_key:
project_id: projects

View File

@ -0,0 +1,23 @@
# frozen_string_literal: true
class FinalizeDeleteStalePackagesNpmMetadataCaches < Gitlab::Database::Migration[2.2]
disable_ddl_transaction!
restrict_gitlab_migration gitlab_schema: :gitlab_main
milestone '17.6'
MIGRATION = 'DeleteStalePackagesNpmMetadataCaches'
def up
ensure_batched_background_migration_is_finished(
job_class_name: MIGRATION,
table_name: :packages_npm_metadata_caches,
column_name: :id,
job_arguments: [],
finalize: true
)
end
def down
# no-op
end
end

View File

@ -0,0 +1,14 @@
# frozen_string_literal: true
class AddNotNullConstraintToPackagesNpmMetadataCachesProjectId < Gitlab::Database::Migration[2.2]
disable_ddl_transaction!
milestone '17.6'
def up
add_not_null_constraint :packages_npm_metadata_caches, :project_id
end
def down
remove_not_null_constraint :packages_npm_metadata_caches, :project_id
end
end

View File

@ -0,0 +1,18 @@
# frozen_string_literal: true
class AddIndexSecurityPoliciesOnConfigAndPolicyIndex < Gitlab::Database::Migration[2.2]
milestone '17.6'
disable_ddl_transaction!
INDEX_NAME = :idx_security_policies_config_id_policy_index
TABLE_NAME = :security_policies
def up
add_concurrent_index(TABLE_NAME, %i[security_orchestration_policy_configuration_id policy_index], name: INDEX_NAME)
end
def down
remove_concurrent_index_by_name(TABLE_NAME, INDEX_NAME)
end
end

View File

@ -0,0 +1,18 @@
# frozen_string_literal: true
class AddIndexApprovalPolicyRulesOnSecurityPolicyAndId < Gitlab::Database::Migration[2.2]
milestone '17.6'
disable_ddl_transaction!
INDEX_NAME = :idx_approval_policy_rules_security_policy_id_id
TABLE_NAME = :approval_policy_rules
def up
add_concurrent_index(TABLE_NAME, %i[security_policy_id id], name: INDEX_NAME)
end
def down
remove_concurrent_index_by_name(TABLE_NAME, INDEX_NAME)
end
end

View File

@ -0,0 +1,17 @@
# frozen_string_literal: true
class ScheduleIndexApprovalProjectRulesOnConfigAndApprovalPolicyRule < Gitlab::Database::Migration[2.2]
milestone '17.6'
INDEX_NAME = :idx_approval_project_rules_on_config_id_and_policy_rule_id
TABLE_NAME = :approval_project_rules
COLUMNS = %i[security_orchestration_policy_configuration_id approval_policy_rule_id]
def up
prepare_async_index(TABLE_NAME, COLUMNS, name: INDEX_NAME)
end
def down
unprepare_async_index(TABLE_NAME, COLUMNS, name: INDEX_NAME)
end
end

View File

@ -0,0 +1,17 @@
# frozen_string_literal: true
class ScheduleIndexApprovalMergeRequestRulesOnConfigAndApprovalPolicyRule < Gitlab::Database::Migration[2.2]
milestone '17.6'
INDEX_NAME = :idx_approval_mr_rules_on_config_id_and_policy_rule_id
TABLE_NAME = :approval_merge_request_rules
COLUMNS = %i[security_orchestration_policy_configuration_id approval_policy_rule_id]
def up
prepare_async_index(TABLE_NAME, COLUMNS, name: INDEX_NAME)
end
def down
unprepare_async_index(TABLE_NAME, COLUMNS, name: INDEX_NAME)
end
end

View File

@ -0,0 +1 @@
ab0a54da0c2cbc47e71ff15468b2b8e109f78ac30708977e1d5dd18d52fe83b9

View File

@ -0,0 +1 @@
53d4490d7386b4b343a82287dbac06f82613291324c845c8f67332654ded2f47

View File

@ -0,0 +1 @@
77dba8b651fc22b46900a26e5611eaa89b9d992401849bf55f3f8dcc099d924c

View File

@ -0,0 +1 @@
65f5715b00eda4eaf82aa9a78bd6d573304ea50edaba41dfba12b2de894dfcc2

View File

@ -0,0 +1 @@
c9173cbcc8ef7a0b1a8f59f13d1534a46cf789e19ec691fc0d18fe5e9265dbde

View File

@ -0,0 +1 @@
7ca114e608db8ddf0a81a45bab509a03ef5224eb5dc793dc3170e219917bdd3e

View File

@ -15723,6 +15723,7 @@ CREATE TABLE packages_npm_metadata_caches (
object_storage_key text NOT NULL,
status smallint DEFAULT 0 NOT NULL,
CONSTRAINT check_57aa07a4b2 CHECK ((char_length(file) <= 255)),
CONSTRAINT check_734454a615 CHECK ((project_id IS NOT NULL)),
CONSTRAINT check_f97c15aa60 CHECK ((char_length(object_storage_key) <= 255))
);
@ -27426,6 +27427,8 @@ CREATE INDEX idx_approval_merge_request_rules_on_scan_result_policy_id ON approv
CREATE INDEX idx_approval_mr_rules_on_config_id_and_id_and_updated_at ON approval_merge_request_rules USING btree (security_orchestration_policy_configuration_id, id, updated_at);
CREATE INDEX idx_approval_policy_rules_security_policy_id_id ON approval_policy_rules USING btree (security_policy_id, id);
CREATE INDEX idx_approval_project_rules_on_configuration_id_and_id ON approval_project_rules USING btree (security_orchestration_policy_configuration_id, id);
CREATE INDEX idx_approval_project_rules_on_scan_result_policy_id ON approval_project_rules USING btree (scan_result_policy_id);
@ -27686,6 +27689,8 @@ CREATE INDEX idx_scan_result_policies_on_configuration_id_id_updated_at ON scan_
CREATE INDEX idx_scan_result_policy_violations_on_policy_id_and_id ON scan_result_policy_violations USING btree (scan_result_policy_id, id);
CREATE INDEX idx_security_policies_config_id_policy_index ON security_policies USING btree (security_orchestration_policy_configuration_id, policy_index);
CREATE UNIQUE INDEX idx_security_scans_on_build_and_scan_type ON security_scans USING btree (build_id, scan_type);
CREATE INDEX idx_security_scans_on_scan_type ON security_scans USING btree (scan_type);

View File

@ -55,11 +55,11 @@ The following models are under evaluation, and support is limited:
| CodeLlama | [Code-Llama 13b](https://huggingface.co/meta-llama/CodeLlama-13b-Instruct-hf) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
| DeepSeekCoder | [DeepSeek Coder 33b Instruct](https://huggingface.co/deepseek-ai/deepseek-coder-33b-instruct) | **{check-circle}** Yes | **{check-circle}** Yes | **{dotted-circle}** No |
| DeepSeekCoder | [DeepSeek Coder 33b Base](https://huggingface.co/deepseek-ai/deepseek-coder-33b-base) | **{check-circle}** Yes | **{dotted-circle}** No | **{dotted-circle}** No |
| GPT | [GPT-3.5-Turbo](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-35) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-4](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-4 Turbo](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-4o](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-4o-mini](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo) | **{dotted-circle}** No | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-3.5-Turbo](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-35) | **{check-circle}** Yes | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-4](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4) | **{check-circle}** Yes | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-4 Turbo](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4) | **{check-circle}** Yes | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-4o](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo) | **{check-circle}** Yes | **{check-circle}** Yes | **{dotted-circle}** No |
| GPT | [GPT-4o-mini](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo) | **{check-circle}** Yes | **{check-circle}** Yes | **{dotted-circle}** No |
<!-- vale gitlab_base.Spelling = YES -->

View File

@ -36478,7 +36478,7 @@ LLMs supported by the self-hosted model features.
| <a id="aiacceptedselfhostedmodelscodellama"></a>`CODELLAMA` | Code-Llama Instruct: Suitable for code suggestions. |
| <a id="aiacceptedselfhostedmodelscodestral"></a>`CODESTRAL` | Codestral: Suitable for code suggestions. |
| <a id="aiacceptedselfhostedmodelsdeepseekcoder"></a>`DEEPSEEKCODER` | Deepseek Coder base or instruct. |
| <a id="aiacceptedselfhostedmodelsgpt"></a>`GPT` | GPT: Suitable for code generation. |
| <a id="aiacceptedselfhostedmodelsgpt"></a>`GPT` | GPT: Suitable for code suggestions. |
| <a id="aiacceptedselfhostedmodelsllama3"></a>`LLAMA3` | LLaMA 3: Suitable for code suggestions and duo chat. |
| <a id="aiacceptedselfhostedmodelsmistral"></a>`MISTRAL` | Mistral: Suitable for code suggestions and duo chat. |

View File

@ -109,7 +109,7 @@ features is limited by our linters, so, use regular Markdown and follow the rule
linked style guide. You can't use Kramdown-specific markup (for example, `{:.class}`).
For a complete Kramdown reference, see the
[GitLab Markdown Guide](https://handbook.gitlab.com/handbook/markdown-guide/).
[GitLab Markdown Guide](https://handbook.gitlab.com/docs/markdown-guide/).
The Markdown format is tested by using [markdownlint](../testing/markdownlint.md) and [Vale](../testing/vale.md).

View File

@ -436,7 +436,7 @@ For example:
- Your instance must be able to synchronize your subscription data with GitLab.
## cloud native
## cloud-native
When you're talking about using a Kubernetes cluster to host GitLab, you're talking about a **cloud-native version of GitLab**.
This version is different than the larger, more monolithic **Linux package** that is used to deploy GitLab.

View File

@ -12,7 +12,7 @@ description: Learn how to contribute to GitLab Documentation.
used by the `docs-lint` test.
Our [Documentation Style Guide](../styleguide/index.md#markdown) and
[Markdown Guide](https://handbook.gitlab.com/handbook/markdown-guide/) elaborate on which choices must
[Markdown Guide](https://handbook.gitlab.com/docs/markdown-guide/) elaborate on which choices must
be made when selecting Markdown syntax for GitLab documentation. This tool helps catch deviations
from those guidelines.

View File

@ -120,4 +120,4 @@ GitLab team members must follow the guidelines documented in the [internal handb
- [Technical writing assignments](https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments)
- The [Style Guide](styleguide/index.md)
- The [Word list](styleguide/word_list.md)
- The [Markdown Guide](https://handbook.gitlab.com/handbook/markdown-guide/)
- The [Markdown Guide](https://handbook.gitlab.com/docs/markdown-guide/)

View File

@ -1,13 +0,0 @@
---
redirect_to: '../topics/git/add_files.md'
remove_date: '2024-09-26'
---
<!-- markdownlint-disable -->
This document was moved to [another location](../topics/git/add_files.md).
<!-- This redirect file can be deleted after <2024-09-26>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
redirect_to: 'clone.md'
remove_date: '2024-09-25'
---
<!-- markdownlint-disable -->
This document was moved to [another location](clone.md).
<!-- This redirect file can be deleted after <2024-09-25>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
redirect_to: '../application_security/dependency_list/index.md'
remove_date: '2024-09-28'
---
<!-- markdownlint-disable -->
This document was moved to [another location](../application_security/dependency_list/index.md).
<!-- This redirect file can be deleted after <2024-09-28->. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
redirect_to: 'repository/files/git_attributes.md'
remove_date: '2024-09-27'
---
<!-- markdownlint-disable -->
This document was moved to [another location](repository/files/git_attributes.md).
<!-- This redirect file can be deleted after <2024-09-27>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
redirect_to: 'repository/files/highlighting.md'
remove_date: '2024-09-27'
---
<!-- markdownlint-disable -->
This document was moved to [another location](repository/files/highlighting.md).
<!-- This redirect file can be deleted after <2024-09-27>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
redirect_to: 'auto_merge.md'
remove_date: '2024-10-02'
---
<!-- markdownlint-disable -->
This document was moved to [another location](auto_merge.md).
<!-- This redirect file can be deleted after <2024-10-02>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
redirect_to: '../../topics/git/commit.md'
remove_date: '2024-09-26'
---
<!-- markdownlint-disable -->
This document was moved to [another location](../../topics/git/commit.md).
<!-- This redirect file can be deleted after <2024-09-26>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,12 +0,0 @@
---
stage: Create
group: Remote Development
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
remove_date: '2024-10-08'
redirect_to: 'index.md'
---
# Tutorial: Connect a remote machine to the Web IDE (removed)
This feature was [removed](https://gitlab.com/gitlab-org/gitlab/-/issues/444551) in GitLab 17.2.
Use [remote development](index.md) instead.

View File

@ -1,13 +0,0 @@
---
redirect_to: 'files/csv.md'
remove_date: '2024-09-27'
---
<!-- markdownlint-disable -->
This document was moved to [another location](files/csv.md).
<!-- This redirect file can be deleted after <2024-09-27>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
redirect_to: 'files/git_blame.md'
remove_date: '2024-09-27'
---
<!-- markdownlint-disable -->
This document was moved to [another location](files/git_blame.md).
<!-- This redirect file can be deleted after <2024-09-27>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -1,13 +0,0 @@
---
redirect_to: 'files/git_history.md'
remove_date: '2024-09-27'
---
<!-- markdownlint-disable -->
This document was moved to [another location](files/git_history.md).
<!-- This redirect file can be deleted after <2024-09-27>. -->
<!-- Redirects that point to other docs in the same project expire in three months. -->
<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. -->
<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html -->

View File

@ -15,6 +15,10 @@ module Keeps
milestones[current_milestone_index + milestones_ago].version
end
def upcoming_milestones
milestones.select { |milestone| Date.parse(milestone.date).future? }.reverse
end
private
def current_milestone

View File

@ -13,6 +13,9 @@ module Gitlab
def find(timeout: nil)
if ignore_alternate_directories?
return oversized_blobs(timeout: timeout) if Feature.enabled?(
:check_oversized_blobs_without_blob_stitcher, project)
blobs = repository.list_all_blobs(bytes_limit: 0, dynamic_timeout: timeout,
ignore_alternate_object_directories: true).to_a
@ -29,6 +32,12 @@ module Gitlab
attr_reader :project, :repository, :changes, :file_size_limit_megabytes
def oversized_blobs(timeout: nil)
oversized_blobs = repository.list_oversized_blobs(bytes_limit: 0, dynamic_timeout: timeout,
ignore_alternate_object_directories: true, file_size_limit_megabytes: file_size_limit_megabytes).to_a
filter_existing(oversized_blobs)
end
def filter_existing(blobs)
gitaly_repo = repository.gitaly_repository.dup.tap { |repo| repo.git_object_directory = "" }

View File

@ -47,7 +47,7 @@ module Gitlab
attr_reader :storage, :gl_repository, :gl_project_path, :container
delegate :list_all_blobs, :list_blobs, to: :gitaly_blob_client
delegate :list_oversized_blobs, :list_all_blobs, :list_blobs, to: :gitaly_blob_client
# This remote name has to be stable for all types of repositories that
# can join an object pool. If it's structure ever changes, a migration

View File

@ -23,31 +23,16 @@ module Gitlab
end
def list_all_blobs(limit: nil, bytes_limit: 0, dynamic_timeout: nil, ignore_alternate_object_directories: false)
repository = @gitaly_repo
if ignore_alternate_object_directories
repository = @gitaly_repo.dup.tap do |g_repo|
g_repo.git_alternate_object_directories = Google::Protobuf::RepeatedField.new(:string)
end
end
request = Gitaly::ListAllBlobsRequest.new(
repository: repository,
limit: limit,
bytes_limit: bytes_limit
)
timeout =
if dynamic_timeout
[dynamic_timeout, GitalyClient.medium_timeout].min
else
GitalyClient.medium_timeout
end
response = Gitlab::GitalyClient.call(repository.storage_name, :blob_service, :list_all_blobs, request, timeout: timeout)
response = list_all_blobs_response(limit: limit, bytes_limit: bytes_limit, dynamic_timeout: dynamic_timeout, ignore_alternate_object_directories: ignore_alternate_object_directories)
GitalyClient::BlobsStitcher.new(GitalyClient::ListBlobsAdapter.new(response))
end
def list_oversized_blobs(file_size_limit_megabytes: 100, limit: nil, bytes_limit: 0, dynamic_timeout: nil, ignore_alternate_object_directories: false)
response = list_all_blobs_response(limit: limit, bytes_limit: bytes_limit, dynamic_timeout: dynamic_timeout, ignore_alternate_object_directories: ignore_alternate_object_directories)
file_size_limit_bytes = ::Gitlab::Utils.try_megabytes_to_bytes(file_size_limit_megabytes)
BlobsStitcher.new(GitalyClient::ListBlobsAdapter.new(response), filter_function: ->(blob) { blob.size&.> file_size_limit_bytes })
end
def list_blobs(revisions, limit: 0, bytes_limit: 0, with_paths: false, dynamic_timeout: nil)
request = Gitaly::ListBlobsRequest.new(
repository: @gitaly_repo,
@ -158,6 +143,31 @@ module Gitlab
private
def list_all_blobs_response(limit: nil, bytes_limit: 0, dynamic_timeout: nil, ignore_alternate_object_directories: false)
repository = @gitaly_repo
if ignore_alternate_object_directories
repository = @gitaly_repo.dup.tap do |g_repo|
g_repo.git_alternate_object_directories = Google::Protobuf::RepeatedField.new(:string)
end
end
request = Gitaly::ListAllBlobsRequest.new(
repository: repository,
limit: limit,
bytes_limit: bytes_limit
)
timeout =
if dynamic_timeout
[dynamic_timeout, GitalyClient.medium_timeout].min
else
GitalyClient.medium_timeout
end
Gitlab::GitalyClient.call(repository.storage_name, :blob_service, :list_all_blobs, request, timeout: timeout)
end
def create_new_lfs_pointers_request(revisions, limit, not_in)
# If the check happens for a change which is using a quarantine
# environment for incoming objects, then we can avoid doing the

View File

@ -5,8 +5,9 @@ module Gitlab
class BlobsStitcher
include Enumerable
def initialize(rpc_response)
def initialize(rpc_response, filter_function: nil)
@rpc_response = rpc_response
@filter_function = filter_function
end
def each
@ -15,6 +16,10 @@ module Gitlab
@rpc_response.each do |msg|
if msg.oid.blank? && msg.data.blank?
next
# rubocop: disable Lint/DuplicateBranch -- No duplication, filter can be supplied
elsif removed_by_filter(msg)
# rubocop: enable Lint/DuplicateBranch
next
elsif msg.oid.present?
yield new_blob(current_blob_data) if current_blob_data
@ -30,6 +35,12 @@ module Gitlab
private
def removed_by_filter(msg)
return unless @filter_function
!@filter_function.call(msg)
end
def new_blob(blob_data)
data = blob_data[:data_parts].join

View File

@ -124,4 +124,17 @@ RSpec.describe Keeps::Helpers::Milestones, feature_category: :tooling do
it { is_expected.to eq(true) }
end
end
describe '#upcoming_milestone', time_travel_to: '2024-04-17' do
subject(:upcoming_milestones) { described_class.new.upcoming_milestones }
it 'returns milestones in the future' do
expected_milestones = [
described_class::Milestone.new(version: '16.11', date: '2024-04-18'),
described_class::Milestone.new(version: '17.0', date: '2024-05-16')
]
expect(upcoming_milestones).to contain_exactly(*expected_milestones)
end
end
end

View File

@ -48,25 +48,37 @@ RSpec.describe Gitlab::Checks::FileSizeCheck::HookEnvironmentAwareAnyOversizedBl
context 'when the file is over the limit' do
let(:file_size_limit) { 0 }
context 'when the blob does not exist in the repo' do
before do
allow(repository.gitaly_commit_client).to receive(:object_existence_map).and_return(Hash.new { false })
shared_examples 'filters the blobs' do
context 'when the blob does not exist in the repo' do
before do
allow(repository.gitaly_commit_client).to receive(:object_existence_map).and_return(Hash.new { false })
end
it 'returns an array with the blobs that are over the limit' do
expect(subject.size).to eq(1)
expect(subject.first).to be_kind_of(Gitlab::Git::Blob)
end
end
it 'returns an array with the blobs that are over the limit' do
expect(subject.size).to eq(1)
expect(subject.first).to be_kind_of(Gitlab::Git::Blob)
context 'when the blob exists in the repo' do
before do
allow(repository.gitaly_commit_client).to receive(:object_existence_map).and_return(Hash.new { true })
end
it 'filters out the blobs in the repo' do
expect(subject).to eq([])
end
end
end
context 'when the blob exists in the repo' do
it_behaves_like 'filters the blobs'
context 'when check_oversized_blobs_without_blob_stitcher feature flag is disabled' do
before do
allow(repository.gitaly_commit_client).to receive(:object_existence_map).and_return(Hash.new { true })
stub_feature_flags(check_oversized_blobs_without_blob_stitcher: false)
end
it 'filters out the blobs in the repo' do
expect(subject).to eq([])
end
it_behaves_like 'filters the blobs'
end
end
end

View File

@ -228,4 +228,34 @@ RSpec.describe Gitlab::GitalyClient::BlobService do
subject
end
end
describe '#list_oversized_blobs' do
subject { client.list_oversized_blobs(**expected_params.merge(file_size_limit_megabytes: 100)) }
let(:expected_params) { { limit: 0, bytes_limit: 0 } }
before do
::Gitlab::GitalyClient.clear_stubs!
end
it 'sends a list all blobs message' do
expect_next_instance_of(Gitaly::BlobService::Stub) do |service|
expect(service).to receive(:list_all_blobs)
.with(gitaly_request_with_params(expected_params), kind_of(Hash)).and_return(
[
Gitaly::ListBlobsResponse.new(
blobs: [
Gitaly::ListBlobsResponse::Blob.new(oid: '678909', size: 114857600, data: "0x01"),
Gitaly::ListBlobsResponse::Blob.new(oid: '678910', size: 2, data: "0x02"),
Gitaly::ListBlobsResponse::Blob.new(size: 114857600, data: ""),
Gitaly::ListBlobsResponse::Blob.new(oid: '678910', data: "0x03")
])
])
end
blobs = subject.to_a
expect(blobs.size).to eq(1)
expect(blobs.first.id).to eq('678909')
end
end
end

View File

@ -3,15 +3,17 @@
require 'spec_helper'
RSpec.describe Gitlab::GitalyClient::BlobsStitcher do
let(:messages) do
[
OpenStruct.new(oid: 'abcdef1', path: 'path/to/file', size: 1642, revision: 'f00ba7', mode: 0100644, data: "first-line\n"),
OpenStruct.new(oid: '', data: 'second-line'),
OpenStruct.new(oid: '', data: '', revision: 'f00ba7', path: 'path/to/non-existent/file'),
OpenStruct.new(oid: 'abcdef2', path: 'path/to/another-file', size: 2461, revision: 'f00ba8', mode: 0100644, data: "GIF87a\x90\x01".b)
]
end
describe 'enumeration' do
it 'combines segregated blob messages together' do
messages = [
OpenStruct.new(oid: 'abcdef1', path: 'path/to/file', size: 1642, revision: 'f00ba7', mode: 0100644, data: "first-line\n"),
OpenStruct.new(oid: '', data: 'second-line'),
OpenStruct.new(oid: '', data: '', revision: 'f00ba7', path: 'path/to/non-existent/file'),
OpenStruct.new(oid: 'abcdef2', path: 'path/to/another-file', size: 2461, revision: 'f00ba8', mode: 0100644, data: "GIF87a\x90\x01".b)
]
blobs = described_class.new(messages).to_a
expect(blobs.size).to be(2)
@ -35,4 +37,16 @@ RSpec.describe Gitlab::GitalyClient::BlobsStitcher do
expect(blobs[1].binary_in_repo?).to be true
end
end
describe 'when filter function given' do
context 'when filter is for blobs over 1000 bytes' do
it 'filters blobs over 1000 bytes' do
filter_function = ->(blob) { blob.size&.> 2000 }
blobs = described_class.new(messages, filter_function: filter_function).to_a
expect(blobs.size).to be(1)
expect(blobs[0].id).to eq('abcdef2')
end
end
end
end

View File

@ -4,6 +4,8 @@ require 'spec_helper'
require_relative '../../../scripts/internal_events/server'
RSpec.describe Server, feature_category: :service_ping do
include WaitHelpers
let(:server) { described_class.new }
let(:port) { Gitlab::Tracking::Destinations::SnowplowMicro.new.uri.port }
let(:events) { server.events }
@ -24,7 +26,7 @@ RSpec.describe Server, feature_category: :service_ping do
# rubocop:enable RSpec/ExpectOutput
describe 'GET /i -> trigger a single event provided through query params (backend)' do
subject(:response) { with_retry { Net::HTTP.get_response url_for("/i?#{query_params}") } }
subject(:response) { await { Net::HTTP.get_response url_for("/i?#{query_params}") } }
context 'with an internal event' do
let(:query_params) { internal_event_fixture('snowplow_events/internal_event_query_params') }
@ -77,7 +79,7 @@ RSpec.describe Server, feature_category: :service_ping do
end
describe 'POST /com.snowplowanalytics.snowplow/tp2 -> trigger events provided through request body (frontend)' do
subject(:response) { with_retry { Net::HTTP.post url_for('/com.snowplowanalytics.snowplow/tp2'), body } }
subject(:response) { await { Net::HTTP.post url_for('/com.snowplowanalytics.snowplow/tp2'), body } }
context 'when triggered on-click' do
let(:body) { internal_event_fixture('snowplow_events/internal_event_on_click.json') }
@ -178,7 +180,7 @@ RSpec.describe Server, feature_category: :service_ping do
describe 'OPTIONS /com.snowplowanalytics.snowplow/tp2' do
subject(:response) do
with_retry { Net::HTTP.new('localhost', port).options('/com.snowplowanalytics.snowplow/tp2') }
await { Net::HTTP.new('localhost', port).options('/com.snowplowanalytics.snowplow/tp2') }
end
it 'applies the correct headers' do
@ -190,7 +192,7 @@ RSpec.describe Server, feature_category: :service_ping do
end
describe 'GET /micro/good -> list tracked structured events' do
subject(:response) { with_retry { Net::HTTP.get_response url_for("/micro/good") } }
subject(:response) { await { Net::HTTP.get_response url_for("/micro/good") } }
it 'successfully returns tracked events' do
expect(response.code).to eq('200')
@ -201,7 +203,7 @@ RSpec.describe Server, feature_category: :service_ping do
let(:query_params) { internal_event_fixture('snowplow_events/non_internal_event_without_context') }
before do
with_retry { Net::HTTP.get url_for("/i?#{query_params}") }
await { Net::HTTP.get url_for("/i?#{query_params}") }
end
it 'successfully returns tracked events' do
@ -224,14 +226,12 @@ RSpec.describe Server, feature_category: :service_ping do
private
def with_retry(retried: false)
yield
rescue Errno::ECONNREFUSED, Errno::EADDRNOTAVAIL
return if retried
retried = true
retry
def await
wait_for('server response to be available', max_wait_time: 2.seconds) do
yield
rescue Errno::ECONNREFUSED, Errno::EADDRNOTAVAIL
nil
end
end
def url_for(path)

View File

@ -17,19 +17,51 @@ RSpec.describe Packages::TerraformModule::Metadata::CreateService, feature_categ
expect { execute }.to change { Packages::TerraformModule::Metadatum.count }.by(1)
expect(package.terraform_module_metadatum.fields).to eq(metadata_hash)
end
context 'when terraform_extract_terraform_package_model is disabled' do
let_it_be(:package) { create(:terraform_module_package_legacy) }
before do
stub_feature_flags(terraform_extract_terraform_package_model: false)
end
it 'creates a new metadata' do
expect { execute }.to change { Packages::TerraformModule::Metadatum.count }.by(1)
expect(package.terraform_module_metadatum.fields).to eq(metadata_hash)
end
end
end
context 'with existing metadata' do
before do
create(:terraform_module_metadatum, package: package)
context 'when terraform_extract_terraform_package_model is enabled' do
before do
create(:terraform_module_metadatum, package: package)
end
it 'updates the existing metadata' do
expect(package.terraform_module_metadatum.fields).not_to eq(metadata_hash)
expect { execute }.not_to change { Packages::TerraformModule::Metadatum.count }
expect(execute).to be_success
expect(package.terraform_module_metadatum.fields).to eq(metadata_hash)
end
end
it 'updates the existing metadata' do
expect(package.terraform_module_metadatum.fields).not_to eq(metadata_hash)
context 'when terraform_extract_terraform_package_model is disabled' do
let_it_be(:package) { create(:terraform_module_package_legacy) }
expect { execute }.not_to change { Packages::TerraformModule::Metadatum.count }
expect(execute).to be_success
expect(package.terraform_module_metadatum.fields).to eq(metadata_hash)
before do
create(:terraform_module_metadatum, legacy_package: package)
stub_feature_flags(terraform_extract_terraform_package_model: false)
end
it 'updates the existing metadata' do
expect(package.terraform_module_metadatum.fields).not_to eq(metadata_hash)
expect { execute }.not_to change { Packages::TerraformModule::Metadatum.count }
expect(execute).to be_success
expect(package.terraform_module_metadatum.fields).to eq(metadata_hash)
end
end
end
@ -46,6 +78,25 @@ RSpec.describe Packages::TerraformModule::Metadata::CreateService, feature_categ
expect { execute }.not_to change { Packages::TerraformModule::Metadatum.count }
expect(execute).to be_error
end
context 'when terraform_extract_terraform_package_model is disabled' do
let_it_be(:package) { create(:terraform_module_package_legacy) }
before do
stub_feature_flags(terraform_extract_terraform_package_model: false)
end
it 'does not create a new metadata and tracks the exception' do
expect(Gitlab::ErrorTracking).to receive(:track_exception).with(
instance_of(ActiveRecord::RecordInvalid),
class: described_class.name,
package_id: package.id
)
expect { execute }.not_to change { Packages::TerraformModule::Metadatum.count }
expect(execute).to be_error
end
end
end
end
end

View File

@ -8,7 +8,7 @@ module WaitHelpers
wait_until = Time.now + max_wait_time.seconds
loop do
result = yield
break if result
break result if result
page.refresh if reload

View File

@ -935,26 +935,6 @@
- './ee/spec/lib/ee/sidebars/projects/menus/repository_menu_spec.rb'
- './ee/spec/lib/ee/sidebars/projects/menus/security_compliance_menu_spec.rb'
- './ee/spec/lib/ee/sidebars/projects/panel_spec.rb'
- './ee/spec/lib/elastic/latest/commit_config_spec.rb'
- './ee/spec/lib/elastic/latest/custom_language_analyzers_spec.rb'
- './ee/spec/lib/elastic/latest/git_class_proxy_spec.rb'
- './ee/spec/lib/elastic/latest/git_instance_proxy_spec.rb'
- './ee/spec/lib/elastic/latest/issue_config_spec.rb'
- './ee/spec/lib/elastic/latest/merge_request_config_spec.rb'
- './ee/spec/lib/elastic/latest/note_config_spec.rb'
- './ee/spec/lib/elastic/latest/project_instance_proxy_spec.rb'
- './ee/spec/lib/elastic/latest/routing_spec.rb'
- './ee/spec/lib/elastic/latest/snippet_instance_proxy_spec.rb'
- './ee/spec/lib/elastic/migration_spec.rb'
- './ee/spec/lib/elastic/multi_version_class_proxy_spec.rb'
- './ee/spec/lib/elastic/multi_version_instance_proxy_spec.rb'
- './ee/spec/lib/gem_extensions/elasticsearch/model/adapter/active_record/records_spec.rb'
- './ee/spec/lib/gem_extensions/elasticsearch/model/indexing/instance_methods_spec.rb'
- './ee/spec/lib/gitlab/alert_management/alert_payload_field_extractor_spec.rb'
- './ee/spec/lib/gitlab/analytics/cycle_analytics/aggregated/data_for_duration_chart_spec.rb'
- './ee/spec/lib/gitlab/analytics/cycle_analytics/data_collector_spec.rb'
- './ee/spec/lib/gitlab/analytics/cycle_analytics/data_for_duration_chart_spec.rb'
- './ee/spec/lib/gitlab/analytics/cycle_analytics/distinct_stage_loader_spec.rb'
- './ee/spec/lib/gitlab/analytics/cycle_analytics/request_params_spec.rb'
- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_closed_spec.rb'
- './ee/spec/lib/gitlab/analytics/cycle_analytics/stage_events/issue_first_added_to_board_spec.rb'
@ -1091,11 +1071,7 @@
- './ee/spec/lib/gitlab/cycle_analytics/stage_summary_spec.rb'
- './ee/spec/lib/gitlab/data_builder/vulnerability_spec.rb'
- './ee/spec/lib/gitlab/elastic/bulk_indexer_spec.rb'
- './ee/spec/lib/gitlab/elastic/client_spec.rb'
- './ee/spec/lib/gitlab/elastic/document_reference_spec.rb'
- './ee/spec/lib/gitlab/elastic/elasticsearch_enabled_cache_spec.rb'
- './ee/spec/lib/gitlab/elastic/group_search_results_spec.rb'
- './ee/spec/lib/gitlab/elastic/indexer_spec.rb'
- './ee/spec/lib/gitlab/elastic/project_search_results_spec.rb'
- './ee/spec/lib/gitlab/elastic/search_results_spec.rb'
- './ee/spec/lib/gitlab/elastic/snippet_search_results_spec.rb'
@ -1332,35 +1308,9 @@
- './ee/spec/models/concerns/ee/noteable_spec.rb'
- './ee/spec/models/concerns/ee/participable_spec.rb'
- './ee/spec/models/concerns/ee/project_security_scanners_information_spec.rb'
- './ee/spec/models/concerns/elastic/application_versioned_search_spec.rb'
- './ee/spec/models/concerns/elastic/milestone_spec.rb'
- './ee/spec/models/concerns/elastic/note_spec.rb'
- './ee/spec/models/concerns/elastic/project_spec.rb'
- './ee/spec/models/concerns/elastic/projects_search_spec.rb'
- './ee/spec/models/concerns/elastic/project_wiki_spec.rb'
- './ee/spec/models/concerns/elastic/repository_spec.rb'
- './ee/spec/models/concerns/elastic/snippet_spec.rb'
- './ee/spec/models/concerns/epic_tree_sorting_spec.rb'
- './ee/spec/models/concerns/geo/eventable_spec.rb'
- './ee/spec/models/concerns/geo/has_replicator_spec.rb'
- './ee/spec/models/concerns/geo/replicable_model_spec.rb'
- './ee/spec/models/concerns/geo/verifiable_model_spec.rb'
- './ee/spec/models/concerns/geo/verification_state_spec.rb'
- './ee/spec/models/concerns/health_status_spec.rb'
- './ee/spec/models/concerns/password_complexity_spec.rb'
- './ee/spec/models/concerns/scim_paginatable_spec.rb'
- './ee/spec/models/container_registry/event_spec.rb'
- './ee/spec/models/container_repository_spec.rb'
- './ee/spec/models/dast/branch_spec.rb'
- './ee/spec/models/dast/profile_schedule_spec.rb'
- './ee/spec/models/dast/profile_spec.rb'
- './ee/spec/models/dast/profiles_pipeline_spec.rb'
- './ee/spec/models/dast/scanner_profiles_build_spec.rb'
- './ee/spec/models/dast_scanner_profile_spec.rb'
- './ee/spec/models/dast/site_profiles_build_spec.rb'
- './ee/spec/models/dast/site_profile_secret_variable_spec.rb'
- './ee/spec/models/dast_site_profile_spec.rb'
- './ee/spec/models/dast_site_spec.rb'
- './ee/spec/models/dast_site_token_spec.rb'
- './ee/spec/models/dast_site_validation_spec.rb'
- './ee/spec/models/deployments/approval_spec.rb'
@ -2001,20 +1951,6 @@
- './ee/spec/services/app_sec/dast/profiles/destroy_service_spec.rb'
- './ee/spec/services/app_sec/dast/profiles/update_service_spec.rb'
- './ee/spec/services/app_sec/dast/scan_configs/build_service_spec.rb'
- './ee/spec/services/app_sec/dast/scan_configs/fetch_service_spec.rb'
- './ee/spec/services/app_sec/dast/scanner_profiles/create_service_spec.rb'
- './ee/spec/services/app_sec/dast/scanner_profiles/destroy_service_spec.rb'
- './ee/spec/services/app_sec/dast/scanner_profiles/update_service_spec.rb'
- './ee/spec/services/app_sec/dast/scans/create_service_spec.rb'
- './ee/spec/services/app_sec/dast/scans/run_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_profiles/audit/update_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_profiles/create_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_profiles/destroy_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_profile_secret_variables/create_or_update_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_profile_secret_variables/destroy_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_profiles/update_service_spec.rb'
- './ee/spec/services/app_sec/dast/sites/find_or_create_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_tokens/find_or_create_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_validations/find_or_create_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_validations/revoke_service_spec.rb'
- './ee/spec/services/app_sec/dast/site_validations/runner_service_spec.rb'

View File

@ -9,9 +9,9 @@ require (
github.com/BurntSushi/toml v1.4.0
github.com/alecthomas/chroma/v2 v2.14.0
github.com/aws/aws-sdk-go v1.55.5
github.com/aws/aws-sdk-go-v2 v1.32.1
github.com/aws/aws-sdk-go-v2 v1.32.2
github.com/aws/aws-sdk-go-v2/config v1.27.42
github.com/aws/aws-sdk-go-v2/credentials v1.17.40
github.com/aws/aws-sdk-go-v2/credentials v1.17.41
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.25
github.com/aws/aws-sdk-go-v2/service/s3 v1.63.3
github.com/disintegration/imaging v1.6.2
@ -32,7 +32,7 @@ require (
gitlab.com/gitlab-org/gitaly/v16 v16.11.10
gitlab.com/gitlab-org/labkit v1.21.2
go.uber.org/goleak v1.3.0
gocloud.dev v0.39.0
gocloud.dev v0.40.0
golang.org/x/image v0.20.0
golang.org/x/net v0.29.0
golang.org/x/oauth2 v0.23.0
@ -61,18 +61,18 @@ require (
github.com/DataDog/sketches-go v1.0.0 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.16 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.20 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.20 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.18 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.1 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.24.1 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.1 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.32.1 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.24.2 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.2 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.32.2 // indirect
github.com/aws/smithy-go v1.22.0 // indirect
github.com/beevik/ntp v1.3.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect

View File

@ -104,22 +104,22 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd
github.com/aws/aws-sdk-go v1.44.256/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
github.com/aws/aws-sdk-go-v2 v1.32.1 h1:8WuZ43ytA+TV6QEPT/R23mr7pWyI7bSSiEHdt9BS2Pw=
github.com/aws/aws-sdk-go-v2 v1.32.1/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo=
github.com/aws/aws-sdk-go-v2 v1.32.2 h1:AkNLZEyYMLnx/Q/mSKkcMqwNFXMAvFto9bNsHqcTduI=
github.com/aws/aws-sdk-go-v2 v1.32.2/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5 h1:xDAuZTn4IMm8o1LnBZvmrL8JA1io4o3YWNXgohbf20g=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5/go.mod h1:wYSv6iDS621sEFLfKvpPE2ugjTuGlAG7iROg0hLOkfc=
github.com/aws/aws-sdk-go-v2/config v1.27.42 h1:Zsy9coUPuOsCWkjTvHpl2/DB9bptXtv7WeNPxvFr87s=
github.com/aws/aws-sdk-go-v2/config v1.27.42/go.mod h1:FGASs+PuJM2EY+8rt8qyQKLPbbX/S5oY+6WzJ/KE7ko=
github.com/aws/aws-sdk-go-v2/credentials v1.17.40 h1:RjnlA7t0p/IamxAM7FUJ5uS13Vszh4sjVGvsx91tGro=
github.com/aws/aws-sdk-go-v2/credentials v1.17.40/go.mod h1:dgpdnSs1Bp/atS6vLlW83h9xZPP+uSPB/27dFSgC1BM=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.16 h1:fwrer1pJeaiia0CcOfWVbZxvj9Adc7rsuaMTwPR0DIA=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.16/go.mod h1:XyEwwp8XI4zMar7MTnJ0Sk7qY/9aN8Hp929XhuX5SF8=
github.com/aws/aws-sdk-go-v2/credentials v1.17.41 h1:7gXo+Axmp+R4Z+AK8YFQO0ZV3L0gizGINCOWxSLY9W8=
github.com/aws/aws-sdk-go-v2/credentials v1.17.41/go.mod h1:u4Eb8d3394YLubphT4jLEwN1rLNq2wFOlT6OuxFwPzU=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17 h1:TMH3f/SCAWdNtXXVPPu5D6wrr4G5hI1rAxbcocKfC7Q=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.17/go.mod h1:1ZRXLdTpzdJb9fwTMXiLipENRxkGMTn1sfKexGllQCw=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.25 h1:HkpHeZMM39sGtMHVYG1buAg93vhj5d7F81y6G0OAbGc=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.25/go.mod h1:j3Vz04ZjaWA6kygOsZRpmWe4CyGqfqq2u3unDTU0QGA=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.20 h1:OErdlGnt+hg3tTwGYAlKvFkKVUo/TXkoHcxDxuhYYU8=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.20/go.mod h1:HsPfuL5gs+407ByRXBMgpYoyrV1sgMrzd18yMXQHJpo=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.20 h1:822cE1CYSwY/EZnErlF46pyynuxvf1p+VydHRQW+XNs=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.20/go.mod h1:79/Tn7H7hYC5Gjz6fbnOV4OeBpkao7E8Tv95RO72pMM=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21 h1:UAsR3xA31QGf79WzpG/ixT9FZvQlh5HY1NRqSHBNOCk=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.21/go.mod h1:JNr43NFf5L9YaG3eKTm7HQzls9J+A9YYcGI5Quh1r2Y=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21 h1:6jZVETqmYCadGFvrYEQfC5fAQmlo80CeL5psbno6r0s=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.21/go.mod h1:1SR0GbLlnN3QUmYaflZNiH1ql+1qrSiB2vwcJ+4UM60=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.18 h1:OWYvKL53l1rbsUmW7bQyJVsYU/Ii3bbAAQIIFNbM0Tk=
@ -128,18 +128,18 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkv
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0/go.mod h1:0jp+ltwkf+SwG2fm/PKo8t4y8pJSgOCO4D8Lz3k0aHQ=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20 h1:rTWjG6AvWekO2B1LHeM3ktU7MqyX9rzWQ7hgzneZW7E=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20/go.mod h1:RGW2DDpVc8hu6Y6yG8G5CHVmVOAn1oV8rNKOHRJyswg=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.1 h1:5vBMBTakOvtd8aNaicswcrr9qqCYUlasuzyoU6/0g8I=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.1/go.mod h1:WSUbDa5qdg05Q558KXx2Scb+EDvOPXT9gfET0fyrJSk=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.2 h1:s7NA1SOw8q/5c0wr8477yOPp0z+uBaXBnLE0XYb0POA=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.2/go.mod h1:fnjjWyAW/Pj5HYOxl9LJqWtEwS7W2qgcRLWP+uWbss0=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18 h1:eb+tFOIl9ZsUe2259/BKPeniKuz4/02zZFH/i4Nf8Rg=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18/go.mod h1:GVCC2IJNJTmdlyEsSmofEy7EfJncP7DNnXDzRjJ5Keg=
github.com/aws/aws-sdk-go-v2/service/s3 v1.63.3 h1:3zt8qqznMuAZWDTDpcwv9Xr11M/lVj2FsRR7oYBt0OA=
github.com/aws/aws-sdk-go-v2/service/s3 v1.63.3/go.mod h1:NLTqRLe3pUNu3nTEHI6XlHLKYmc8fbHUdMxAB6+s41Q=
github.com/aws/aws-sdk-go-v2/service/sso v1.24.1 h1:aAIr0WhAgvKrxZtkBqne87Gjmd7/lJVTFkR2l2yuhL8=
github.com/aws/aws-sdk-go-v2/service/sso v1.24.1/go.mod h1:8XhxGMWUfikJuginPQl5SGZ0LSJuNX3TCEQmFWZwHTM=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.1 h1:J6kIsIkgFOaU6aKjigXJoue1XEHtKIIrpSh4vKdmRTs=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.1/go.mod h1:2V2JLP7tXOmUbL3Hd1ojq+774t2KUAEQ35//shoNEL0=
github.com/aws/aws-sdk-go-v2/service/sts v1.32.1 h1:q76Ig4OaJzVJGNUSGO3wjSTBS94g+EhHIbpY9rPvkxs=
github.com/aws/aws-sdk-go-v2/service/sts v1.32.1/go.mod h1:664dajZ7uS7JMUMUG0R5bWbtN97KECNCVdFDdQ6Ipu8=
github.com/aws/aws-sdk-go-v2/service/sso v1.24.2 h1:bSYXVyUzoTHoKalBmwaZxs97HU9DWWI3ehHSAMa7xOk=
github.com/aws/aws-sdk-go-v2/service/sso v1.24.2/go.mod h1:skMqY7JElusiOUjMJMOv1jJsP7YUg7DrhgqZZWuzu1U=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.2 h1:AhmO1fHINP9vFYUE0LHzCWg/LfUWUF+zFPEcY9QXb7o=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.2/go.mod h1:o8aQygT2+MVP0NaV6kbdE1YnnIM8RRVQzoeUH45GOdI=
github.com/aws/aws-sdk-go-v2/service/sts v1.32.2 h1:CiS7i0+FUe+/YY1GvIBLLrR/XNGZ4CtM1Ll0XavNuVo=
github.com/aws/aws-sdk-go-v2/service/sts v1.32.2/go.mod h1:HtaiBI8CjYoNVde8arShXb94UbQQi9L4EMr6D+xGBwo=
github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM=
github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
github.com/beevik/ntp v1.3.1 h1:Y/srlT8L1yQr58kyPWFPZIxRL8ttx2SRIpVYJqZIlAM=
@ -520,8 +520,8 @@ go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
gocloud.dev v0.39.0 h1:EYABYGhAalPUaMrbSKOr5lejxoxvXj99nE8XFtsDgds=
gocloud.dev v0.39.0/go.mod h1:drz+VyYNBvrMTW0KZiBAYEdl8lbNZx+OQ7oQvdrFmSQ=
gocloud.dev v0.40.0 h1:f8LgP+4WDqOG/RXoUcyLpeIAGOcAbZrZbDQCUee10ng=
gocloud.dev v0.40.0/go.mod h1:drz+VyYNBvrMTW0KZiBAYEdl8lbNZx+OQ7oQvdrFmSQ=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=