계단식 설정(Cascading Settings)
그룹 및 프로젝트에서 상위 계층으로부터 설정 값을 상속받고 강제 적용하는 계단식 설정 프레임워크의 구조와 구현 방법을 설명합니다.
GitLab 프로젝트 및/또는 그룹에 계층 구조의 상위에서 기본값을 상속받는 설정을 추가하고 싶으신가요? 그렇다면 여러분이 찾던 프레임워크가 바로 여기 있습니다! 계단식 설정 프레임워크는 그룹과 프로젝트가 상위 항목(상위 그룹부터 그룹 계층 전체)과 인스턴스 수준 애플리케이션 설정으로부터 설정 값을 상속받을 수 있도록 합니다. 이 프레임워크는 또한 계층 구조의 하위 그룹에 설정 값을 "잠그기(locked)" (강제 적용)할 수 있도록 합니다. 계단식 설정은 역사적으로 ApplicationSetting , NamespaceSetting , ProjectSetting 에서만 정의되었지만, 향후 다른 객체로 프레임워크가 확장될 수 있습니다. 그룹 전용 새 계단식 설정 추가 # 설정은 기본적으로 계단식이 아닙니다. 계단식 설정을 정의하려면 다음 단계를 따르세요: NamespaceSetting 모델에서 cascading_attr 헬퍼 메서드를 사용하여 새 속성을 정의합니다. 배열을 사용하면 한 줄에 여러 속성을 정의할 수 있습니다. class NamespaceSetting include CascadingNamespaceSettingAttribute cascading_attr :delayed_project_removal end 데이터베이스 컬럼을 생성합니다. 완전히 새로운 설정의 경우 다음 데이터베이스 마이그레이션 헬퍼를 사용할 수 있습니다. 헬퍼는 namespace_settings 와 application_settings 각각에 두 개씩 총 네 개의 컬럼을 생성합니다. class AddDelayedProjectRemovalCascadingSetting < Gitlab::Database::Migration[2.1] include Gitlab::Database::MigrationHelpers::CascadingNamespaceSettings def up add_cascading_namespace_setting :delayed_project_removal, :boolean, default: false, null: false end def down remove_cascading_namespace_setting :delayed_project_removal end end 기존 설정을 계단식 설정으로 전환하는 경우, 컬럼 추가 및 기존 컬럼 변경을 위한 개별 마이그레이션이 필요합니다. 아래 사양을 참고하여 필요에 따라 마이그레이션을 작성하세요: namespace_settings 테이블의 컬럼: delayed_project_removal : 기본값 없음. Null 값 허용. 임의의 컬럼 유형 사용 가능. lock_delayed_project_removal : Boolean 컬럼. 기본값은 false. Null 값 허용 안 됨. application_settings 테이블의 컬럼: delayed_project_removal : namespace_settings 에 생성된 컬럼의 타입과 일치. 원하는 기본값 설정. Null 값 허용 안 됨. lock_de