Add inactive_resource_access_tokens_delete_after_days instance setting
What does this MR do and why?
Prior to #462217 (closed), GitLab instantly deleted inactive project and group access tokens. !163461 (merged) implemented retention period for 30 days for inactive project and group access tokens. #432790 (closed) requested ability to configure the retention period for inactive project and group access tokens on GitLab Self-Managed.
This MR adds new inactive_resource_access_tokens_delete_after_days application setting that is by default set to 30. This new setting will allow configure the retention period for inactive project and group access tokens. When the setting is left blank, inactive project and group access tokens are not deleted.
References
Screenshots or screen recordings
How to set up and validate locally
See documentation changes in doc/user/project/settings/project_access_tokens.md file.
DB migration
bin/rails db:migrate RAILS_ENV=test
main: == [advisory_lock_connection] object_id: 152900, pg_backend_pid: 106911
main: == 20250721103559 AddResourceAccessTokensSettingsToApplicationSettings: migrating
main: -- add_column(:application_settings, :resource_access_tokens_settings, :jsonb, {:default=>{}, :null=>false})
main: -> 0.0081s
main: == 20250721103559 AddResourceAccessTokensSettingsToApplicationSettings: migrated (0.0167s)
main: == [advisory_lock_connection] object_id: 152900, pg_backend_pid: 106911
ci: == [advisory_lock_connection] object_id: 152900, pg_backend_pid: 106912
ci: == 20250721103559 AddResourceAccessTokensSettingsToApplicationSettings: migrating
ci: -- add_column(:application_settings, :resource_access_tokens_settings, :jsonb, {:default=>{}, :null=>false})
ci: -> 0.0045s
ci: == 20250721103559 AddResourceAccessTokensSettingsToApplicationSettings: migrated (0.0184s)
ci: == [advisory_lock_connection] object_id: 152900, pg_backend_pid: 106912
bin/rails db:migrate:down:main VERSION=20250721103559 RAILS_ENV=test
main: == [advisory_lock_connection] object_id: 125880, pg_backend_pid: 107054
main: == 20250721103559 AddResourceAccessTokensSettingsToApplicationSettings: reverting
main: -- remove_column(:application_settings, :resource_access_tokens_settings, :jsonb, {:default=>{}, :null=>false})
main: -> 0.0074s
main: == 20250721103559 AddResourceAccessTokensSettingsToApplicationSettings: reverted (0.0215s)
main: == [advisory_lock_connection] object_id: 125880, pg_backend_pid: 107054
bin/rails db:migrate:down:ci VERSION=20250721103559 RAILS_ENV=test
ci: == [advisory_lock_connection] object_id: 125360, pg_backend_pid: 107159
ci: == 20250721103559 AddResourceAccessTokensSettingsToApplicationSettings: reverting
ci: -- remove_column(:application_settings, :resource_access_tokens_settings, :jsonb, {:default=>{}, :null=>false})
ci: -> 0.0064s
ci: == 20250721103559 AddResourceAccessTokensSettingsToApplicationSettings: reverted (0.0210s)
ci: == [advisory_lock_connection] object_id: 125360, pg_backend_pid: 107159
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
