애플리케이션 설정 API

Tier: Free, Premium, Ultimate Offering: Self-Managed, GitLab Dedicated

이 API 호출을 사용하면 /admin/application_settings/general에 나타나는 GitLab 인스턴스의 애플리케이션 설정을 읽고 수정할 수 있습니다. 이 작업을 수행하려면 관리자여야 합니다.

애플리케이션 설정은 캐싱의 영향을 받을 수 있으며 즉시 적용되지 않을 수 있습니다. GitLab은 기본적으로 애플리케이션 설정을 60초 동안 캐시합니다. 인스턴스의 애플리케이션 설정 캐시를 제어하는 방법에 대한 정보는 Application cache interval를 참조하세요.

현재 애플리케이션 설정 가져오기

History
  • always_perform_delayed_deletion 기능 플래그는 GitLab 15.11에서 활성화되었습니다.
  • delayed_project_deletiondelayed_group_deletion 속성은 GitLab 16.0에서 제거되었습니다.
  • in_product_marketing_emails_enabled 속성은 GitLab 16.6에서 제거되었습니다.
  • repository_storages 속성은 GitLab 16.6에서 제거되었습니다.
  • user_email_lookup_limit 속성은 GitLab 16.7에서 제거되었습니다.

GitLab 인스턴스의 현재 애플리케이션 설정을 나열합니다.

GET /application/settings
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/application/settings"

응답 예시:

{
  "default_projects_limit" : 100000,
  "signup_enabled" : true,
  "id" : 1,
  "default_branch_protection" : 2,
  "default_branch_protection_defaults": {
        "allowed_to_push": [
            {
                "access_level": 40
            }
        ],
        "allow_force_push": false,
        "allowed_to_merge": [
            {
                "access_level": 40
            }
        ]
    },
  "default_preferred_language" : "en",
  "failed_login_attempts_unlock_period_in_minutes": 30,
  ...
}

GitLab Premium 또는 Ultimate 사용자는 또한 다음과 같은 매개변수를 볼 수 있습니다:

  • group_owners_can_manage_default_branch_protection
  • file_template_project_id
  • geo_node_allowed_ips
  • geo_status_timeout
  • default_project_deletion_protection
  • deletion_adjourned_period
  • disable_personal_access_tokens
  • security_policy_global_group_approvers_enabled
  • security_approval_policies_limit
  • delete_unconfirmed_users
  • unconfirmed_users_delete_after_days
  • duo_features_enabled
  • lock_duo_features_enabled
  • use_clickhouse_for_analytics
  • pre_receive_secret_detection_enabled
{
  "id": 1,
  "signup_enabled": true,
  "group_owners_can_manage_default_branch_protection": true,
  "file_template_project_id": 1,
  "geo_node_allowed_ips": "0.0.0.0/0, ::/0",
  ...
}

애플리케이션 설정 변경

  • GitLab 15.11에서 always_perform_delayed_deletion 기능 플래그 활성화.
  • GitLab 16.0에서 delayed_project_deletiondelayed_group_deletion 속성이 제거되었습니다.
  • GitLab 16.7에서 user_email_lookup_limit 속성이 제거되었습니다.
  • GitLab 17.0에서 default_branch_protection폐기 예정되었습니다. 대신 default_branch_protection_defaults를 사용하세요.

GitLab 인스턴스의 애플리케이션 설정을 수정하려면 API 호출을 사용합니다.

PUT /application/settings
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/application/settings?signup_enabled=false&default_project_visibility=internal"

예시 응답:

{
  "id": 1,
  "default_projects_limit": 100000,
  "default_preferred_language": "en",
  "failed_login_attempts_unlock_period_in_minutes": 30,
  "signup_enabled": false,
  "password_authentication_enabled_for_web": true,
  "gravatar_enabled": true,
  "created_at": "2015-06-12T15:51:55.432Z",
  "updated_at": "2015-06-30T13:22:42.210Z",
  "home_page_url": "",
  "default_branch_protection": 2,
  "default_branch_protection_defaults": {
    "allowed_to_push": [
        {
            "access_level": 40
        }
    ],
    "allow_force_push": false,
    "allowed_to_merge": [
        {
            "access_level": 40
        }
    ]
  },
  "restricted_visibility_levels": [],
  "max_attachment_size": 10,
  "max_decompressed_archive_size": 25600,
  "max_export_size": 50,
  "max_import_size": 50,
  "max_import_remote_file_size": 10240,
  "max_login_attempts": 3,
  "session_expire_delay": 10080,
  "default_ci_config_path" : null,
  "default_project_visibility": "internal",
  "default_snippet_visibility": "private",
  "default_group_visibility": "private",
  "outbound_local_requests_whitelist": [],
  "domain_allowlist": [],
  "domain_denylist_enabled" : false,
  "domain_denylist" : [],
  "external_authorization_service_enabled": true,
  "external_authorization_service_url": "https://authorize.me",
  "external_authorization_service_default_label": "default",
  "external_authorization_service_timeout": 0.5,
  "user_oauth_applications": true,
  "after_sign_out_path": "",
  "container_expiration_policies_enable_historic_entries": true,
  "container_registry_cleanup_tags_service_max_list_size": 200,
  "container_registry_delete_tags_service_timeout": 250,
  "container_registry_expiration_policies_caching": true,
  "container_registry_expiration_policies_worker_capacity": 4,
  "container_registry_token_expire_delay": 5,
  "decompress_archive_file_timeout": 210,
  "package_registry_cleanup_policies_worker_capacity": 2,
  "plantuml_enabled": false,
  "plantuml_url": null,
  "diagramsnet_enabled": true,
  "diagramsnet_url": "https://embed.diagrams.net",
  "terminal_max_session_time": 0,
  "polling_interval_multiplier": 1.0,
  "rsa_key_restriction": 0,
  "dsa_key_restriction": 0,
  "ecdsa_key_restriction": 0,
  "ed25519_key_restriction": 0,
  "ecdsa_sk_key_restriction": 0,
  "ed25519_sk_key_restriction": 0,
  "first_day_of_week": 0,
  "enforce_terms": true,
  "terms": "Hello world!",
  "performance_bar_allowed_group_id": 42,
  "user_show_add_ssh_key_message": true,
  "file_template_project_id": 1,
  "local_markdown_version": 0,
  "asset_proxy_enabled": true,
  "asset_proxy_url": "https://assets.example.com",
  "asset_proxy_allowlist": ["example.com", "*.example.com", "your-instance.com"],
}

GitLab Premium 또는 Ultimate 사용자는 또한 다음 매개변수를 볼 수 있습니다:

  • group_owners_can_manage_default_branch_protection
  • file_template_project_id
  • geo_node_allowed_ips
  • geo_status_timeout
  • default_project_deletion_protection
  • deletion_adjourned_period
  • disable_personal_access_tokens
  • security_policy_global_group_approvers_enabled
  • security_approval_policies_limit
  • delete_unconfirmed_users
  • unconfirmed_users_delete_after_days
  • duo_features_enabled
  • lock_duo_features_enabled
  • use_clickhouse_for_analytics

예시 응답:

  "file_template_project_id": 1,
  "geo_node_allowed_ips": "0.0.0.0/0, ::/0",
  "duo_features_enabled": true,
  "lock_duo_features_enabled": false,

API 호출을 통해 액세스할 수 있는 설정 목록

History
  • housekeeping_full_repack_period, housekeeping_gc_period, 그리고 housekeeping_incremental_repack_period은 GitLab 15.8에서 사용 중지됨. 대신 housekeeping_optimize_repository_period를 사용하세요.
  • allow_account_deletion은 GitLab 16.1에서 도입됨.
  • allow_project_creation_for_guest_and_below은 GitLab 16.8에서 도입됨.
  • silent_admin_exports_enabled은 GitLab 17.0에서 도입됨.
  • require_personal_access_token_expiry은 GitLab 17.3에서 도입됨.
  • receptive_cluster_agents_enabled은 GitLab 17.4에서 도입됨.

일반적으로 모든 설정은 선택 사항입니다. 그러나 활성화된 경우, 일부 설정은 올바르게 작동하려면 다른 설정이 설정되어 있어야 합니다. 해당 요구 사항은 관련 설정의 설명에서 나열되어 있습니다.

속성 유형 필수 설명
admin_mode boolean 아니요 관리자가 관리 작업을 위해 다시 인증하도록 요구

비활성 프로젝트 삭제 구성

비활성 프로젝트 삭제를 구성하거나 해제할 수 있습니다.

속성 유형 필수 설명
delete_inactive_projects 부울 아니요 비활성 프로젝트 삭제를 활성화합니다. 기본값은 false입니다. 기능 플래그 없이 사용됨 - GitLab 15.4에서.
inactive_projects_delete_after_months 정수 아니요 delete_inactive_projectstrue인 경우, 비활성 프로젝트를 삭제하기 전에 대기해야 하는 기간(월). 기본값은 2입니다. 운영이 된 것 - GitLab 15.0에서.
inactive_projects_min_size_mb 정수 아니요 delete_inactive_projectstrue인 경우, 비활성 프로젝트의 최소 저장소 크기를 확인하는 값. 기본값은 0입니다. 운영이 된 것 - GitLab 15.0에서.
inactive_projects_send_warning_email_after_months 정수 아니요 delete_inactive_projectstrue인 경우, 프로젝트가 비활성임으로 예정된 삭제 이메일을 유지자에게 보내기 전에 대기해야 하는 기간(월). 기본값은 1입니다. 운영이 된 것 - GitLab 15.0에서.

Housekeeping 필드

::탭

:::탭타이틀 15.8 이상

만약 housekeeping_optimize_repository_period 필드가 정수로 설정되면, 지정한 Git 푸시 수행 후 housekeeping 작업이 수행됩니다.

:::탭타이틀 15.7 이하

housekeeping_enabled 필드는 Git housekeeping을 활성화 또는 비활성화합니다. 이 필드가 올바르게 기능하려면 housekeeping_optimize_repository_period가 설정되어 있거나 모든 이 값들이 설정되어야 합니다: - housekeeping_bitmaps_enabled - housekeeping_full_repack_period - housekeeping_gc_period

::엔드탭

Package registry: Package file size limits

패키지 파일 크기 제한은 Application 설정 API의 일부가 아닙니다. 대신, 이러한 설정은 Plan limits API를 사용하여 액세스할 수 있습니다.

관련 주제