Skip to content

Skip Nuget package validation

What does this MR do and why?

close #425866 (comment 1758613928)

Since air-gap applies at the network layer, I think it might make sense to have this setting be a self-managed only, admin-level, instance-wide application setting under Admin > Settings > CI/CD > Package Registry (/admin/application_settings/ci_cd > Package Registry).

This mr add above feature for only self-manage gitlab instance, introduce a application setting skip_nuget_package_metadata_url_validation under Admin > Settings > CI/CD > Package Registry, which will skip nuget package metadatum url validation.

Since section Forward Package Requests (1) are EE feature, however Skip NuGet package metadata url validation (2) is available to all tiers, so we merge (1) and (2) together in one form for EE, separate (2) as new form for CE.

database migration changes:

main: == [advisory_lock_connection] object_id: 120180, pg_backend_pid: 62025
main: == 20240318014850 AddPackageRegistryInApplicationSetting: migrating ===========
main: -- add_column(:application_settings, :package_registry, :jsonb, {:default=>{}, :null=>false})
main:    -> 0.0047s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("ALTER TABLE application_settings\nADD CONSTRAINT check_application_settings_package_registry_is_hash\nCHECK ( (jsonb_typeof(package_registry) = 'object') )\nNOT VALID;\n")
main:    -> 0.0024s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0001s
main: -- execute("ALTER TABLE application_settings VALIDATE CONSTRAINT check_application_settings_package_registry_is_hash;")
main:    -> 0.0006s
main: -- execute("RESET statement_timeout")
main:    -> 0.0001s
main: == 20240318014850 AddPackageRegistryInApplicationSetting: migrated (0.0749s) ==

main: == [advisory_lock_connection] object_id: 120180, pg_backend_pid: 62025
ci: == [advisory_lock_connection] object_id: 120600, pg_backend_pid: 62027
ci: == 20240318014850 AddPackageRegistryInApplicationSetting: migrating ===========
ci: -- add_column(:application_settings, :package_registry, :jsonb, {:default=>{}, :null=>false})
ci:    -> 0.0027s
ci: -- transaction_open?(nil)
ci:    -> 0.0000s
ci: -- transaction_open?(nil)
ci:    -> 0.0000s
ci: -- execute("ALTER TABLE application_settings\nADD CONSTRAINT check_application_settings_package_registry_is_hash\nCHECK ( (jsonb_typeof(package_registry) = 'object') )\nNOT VALID;\n")
ci:    -> 0.0019s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0001s
ci: -- execute("ALTER TABLE application_settings VALIDATE CONSTRAINT check_application_settings_package_registry_is_hash;")
ci:    -> 0.0010s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0001s
ci: == 20240318014850 AddPackageRegistryInApplicationSetting: migrated (0.0174s) ==

ci: == [advisory_lock_connection] object_id: 120600, pg_backend_pid: 62027

Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

CE : separate form

ce.png

EE: merge form

ee.png

How to set up and validate locally

Numbered steps to set up and validate the change are strongly suggested.

Edited by MAO Chao

Merge request reports